In architecture we cut a lot of holes in solids for stairs, skylights, windows and doors and just plain openings. With window/doors we have a way, albeit with limitations in BC

I have put in a support request after speaking to Jason re this. Has anybody had any experience in this area of generic subtraction solid that works in all UCS planes


1, SEt UCS and draw a closed polyline
2, Create subtractsolid from this and put on relevant layer
3. Probably need to block like a window/door. You cannot edit the anon blocks BC creates for this
4. Cut the plain opening. You can leave as a hole or insert a block for stair (thats another topic), skylight, custom window/door etc

Roy has written a very good roof from polyline routine that does hips, gable and monopitch roofs from a 2d poly in xy plane , and usiing add/subtract you
can easily modify a roof. Extrude to path adds gutters etc.

Cheers and thanks
Ken Taylor
New Zealand


  • A bit of experimentation shows
    1. You can change all layer names incl BIMSUBTRACT and it has no effect
    2. Windows from polyline can be used on horizontal as well as vertical surfaces
    3. Freezing all the layers comprising the window block leaves the hole but hides the window frame
    4. Needs unique block name so as not to repeat for next opening unless needed as such

    From this it would seem you needs a single solid derived from a polyline on a frozen but unique (HOLE?) layer ie normal solid
    and a subtractor solid by copying that normal solid to BIMSUBTRACT and freezing both layers

    It needs two variants
    1. A parametric rectangular opening covers 90% of situations
    2. A manually created version for irregular holes

    Ken Taylor

  • It would be interesting to :

    • insert parametric Windows directly into existing holes
    • have a parametric recess/hole option without any geometry
    • be able to insert Doors and Windows in Top 2D View set a top or base height standard

    And of course that Commands are not repeating or persisting is hindering
    for me like anywhere else. By the time I need to insert and position 3 Windows
    in BC, I have WINDOIFIED the whole Villa Savoie in Vectorworks.

    But currently you can insert Windows into any Solid's Face, so perpendicular
    to any DUCS. Even on Top or small sides of Walls where it doesn't even fit in.

    If you wish any UCS, independent from the Solid's Face and just need a simple hole,
    I think that is BC Direct Modeling for - not parametric.
    Like drawing a Rectangle on your UCS and extruding through a Wall from
    any direction. (Depends on your Solid Settings if it will cut by default)
    And keep that Subtration Helper in the BIM_SUBTRACT CLASS or
    delete it after and do (non parametric) changes with BIMDRAG.

    Or is it that you really want Windows Inserted at an angle ?

    1. You can change all layer names incl BIMSUBTRACT and it has no effect

    Do you mean I can can change all those automatically created Layers Names
    to fit my Layer Standards without any Risk ?
    And when I insert more Objects, these will use these Names from now on
    without inserting their own again ?
    That would be great.

  • The description in the Help is not completely accurate. If you use the _BimInsert command all nested solids except those on the BIM_UNITE layer will be subtracted. This is different from how the _BmInsert command behaves which does adhere to the BM_SUBTRACT and BIM_SUBTRACT layers.

    Regarding standard holes:
    I think cylindrical holes should also be considered. And having built-in 'justification' options (BL, BC, BR etc) can also be useful. For the already mentioned recessed holes you would have to make the 'depth' of the 'subtractor' parametric. And for walls that curve in (see here) the position of the front face of that solid would have to be considered (may also need to be parametric).

  • Just a look over the horizon.
    In VW, Door/Window insertion is very fast and easy.
    Vertical Position is defined (in a Style) so you only care about a
    single X direction a long a Wall to insert.
    So they are also easy to move later.

    But I think adding a vertical base option is not that simple.
    Like when you have interior Walls and want the Door base where
    the Floor meets the Wall.
    (+ the geometry of the Door may even extend that base level)
    If you go from the edge of a Wall's Face, as it i now, that will not work.
    Structural Walls may sit on the Structural Slab, nonstructural Walls
    may sit on top of the finish floor, and so on.

    So you want to define such a Base Height related to a finish floor
    or =Story height. Which you already defined in Spatial Locations.
    And of course you want your Insertion Objects, to follow, when
    you change these Levels later.
    And for drawing and Modeling in general, it would be very useful
    if you had a Story switch in Property Palette, which automatically
    sets your "Elevation", as you can do manually now.
    And it would be very handy if you have not only the Story height but
    some additional height levels to choose to auto-set "Elevation" for
    drawing and better to also bind Building Objects Base+Height to.
    This would allow parametrical control, something you currently do :
    Select Coplanar Faces - BIMDRAG.

    Basically Architecture is 2.5D only at most times,
    all complexity and variation happens in XY Plane only,
    Everything is somehow extruded to not so many Levels for
    object's tops and bottoms in Z.

    The other thing is Object Styles.
    Similar to BC Compositions.
    For long time VW had a Window or Door Tool to manage all settings.
    And at least you could edit many Windows at one time and synchronize
    their Settings that way. But really interesting this got when they
    implemented Styles.
    There are only a few differences in your whole Windows, like Widths and
    Heights, Base, number of Openings, ...
    While many many Settings like Frame Profile, Glass Panel Type, insertion
    Depth, ... may and should be same for all.
    In the Style you "hard code" equal settings and lock them for Property
    Panel editing. So you can concentrate on a few individual parameters.
    While editing your Customer's color or Material Settings will be a simple
    edit influencing the whole Building or even the site in one go.

  • Have just got one of the standard BIMwindows, killed all modelling except the BIM-SUBTRACT layer solid
    It inserts cleanly in both wall and slab and size can be edited as well as position modified and
    just makes a clean hole with no geometry. PERFECT! Thanks Louis for your support and comments

    So all I need to do now is glue a subtract solid and layer into my window/door blocks. It needs a small lisp routine to add the subtractor solid
    Next target is skylights and parametric stair blocks

    Ken Taylor

  • @Michael:
    IMO, the whole ifc-related concept of storeys, levels and so on is limiting (my current project is partially split-level and the majority of slabs has a slope). A more generic concept might be based on zones defined by solids and reference planes defined by surfaces. However, having drawing- or even project-wide variables/parameters that you can reference in components would be complementary.

    So far, I try to keep the structural parts completely separated from architectural or MEP components, and have therefore created simple holes as I need them - in my current project, window sill height is measured from the structural slab surface, while door height is measured from the finished floor surface, so my window openings contain a parameter for the placement height, and my door openings contain a parameter that defines how deep below the finished floor the opening has to cut.
    Usually, Windows and doors make up the smaller part of openings I create, the majority belongs to MEP (see screenshot) - these look a bit neglected to me in ifc.

    Attached you'll find the small set of openings I use in this project. To be able to select the openings without having to thaw the BIM-SUBTRACT layer, I included point objects drawn at the insertion point on the BRX_2D+ layer (set to non-printing in these files), in order to see them, you will have to set PDMODE and PDSIZE to your liking.

  • I did similar in Microstation in the past, so no BIM Tools at that time.
    So MEP openings are a bit more tedious with booleans without
    any parametric.
    Opposed to VW where can insert a Window in "Opening only " mode
    and have to care about X or Y only, Dimensions and Base by numerical
    input from 2D source plans.

    OK, sloped Slabs is another thing.
    For (multi) Split Levels I found a relatively simple way in VW's Story+Level
    System to control al Split Levels and especially where Levels overlap,
    even it is only a single Project-wide System.
    I think that would be easier in Bricscad's Multi Story/Building System.

    I think such a parametric System would be faster, predictable and
    helpful, in the majority of (standard) cases. Like setting the UCS for you.
    But it's an option, where it doesn't help, you can work as before and
    rely on BIMDRAG.

    Your Example :
    Exactly !

    Even when Point and Boolean invisible, you can Position them with BIMDRAG.
    And you could Select and Edit them from Structure Panel when properly named.

  • Hi Ken
    Can you give me any details on the roof routine that you refer to and where I may purchase it from.

  • Tom Foster
    edited November 2018

    @Knut Hohenberg said:
    my current project is partially split-level and the majority of slabs has a slope

    Sounds like my kind of architecture - or rather the freedom to do such things, which 30yrs of CAD has pretty well obliterated from Architects' memories. All cuboid now.

  • @Walter Vardanega said:
    Hi Ken
    Can you give me any details on the roof routine that you refer to and where I may purchase it from.

    Its a utility that Roy wrote. See this forum post

    Jason Bourhill
    CAD Concepts

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!