Example door object for this post can be downloaded here.
When it comes to documentation, ARCHICAD offers a function called Automatic Dimensioning, with an extra function for wall opening objects (doors and windows) to choose the representing size.
See the menu option: Document/Document Extras/Automatic Dimensioning.
A very similar option is available in Interactive Schedule to put dimensions on the door and window preview drawings (just highlight a door in the schedule and look for option in the settings dialog).
This feature helps you to display dimensions fast and easy, but only if the opening objects are prepared for the task.
To make an object collaborate with ARCHICAD, a few conditions have to be met:
- the standard, nominal size related fix named parameters need to be used in the object, with correct calculations
- an option to assign any of the used sizes as nominal size must be present: the chosen size will be assigned to size A and size B
- a pair of hotspots (2D and 3D) must be placed to mark the extension of these dimensions in 2D and 3D space
Current nominal size parameters
ARCHICAD recognizes the following nominal size parameters:
- A / B
- ac_wallhole_width / ac_wallhole_height
- ac_unit_width / ac_unit_height
- ac_reveal_width / ac_reveal_height
- ac_egress_width / ac_egress_height (doors only)
- ac_leaf_width / ac_leaf_height (doors only)
The same logic applies to the vertical (height) sizes as well.
Wallhole Sizes: ac_wallhole_width / ac_wallhole_height
These sizes should contain the dimensions of the wall opening itself, including the reveal, the tolerance and the object:
Note: the oversize parameters set in the Compatibility option page of the object should not be calculated into this nominal size.
Unit Sizes: ac_unit_width / ac_unit_height
ac_unit_width = ac_wallhole_width - 2 * tolerance ac_unit_height = ac_wallhole_height - 2 * tolerance
Reveal Sizes: ac_reveal_width / ac_reveal_height
ac_reveal_width = ac_wallhole_width - 2 * bReveal * revealSize ac_reveal_height = ac_wallhole_height - bReveal * revealSize
Egress Sizes: ac_egress_width / ac_egress_height
These sizes mean the distance between the innermost points of the frame. Do not mistake it with the free opening size (although they are the same in a lot of cases).
It is recognized in doors only:
It is connected to the Unit Sizes:
ac_egress_width = ac_unit_width - 2 * gs_frame_width ac_egress_height = ac_unit_height - gs_frame_width
Leaf Sizes: ac_leaf_width / ac_leaf_height
ac_leaf_width = ac_unit_width - 2 * (gs_frame_width - gs_rebate_width) ac_leaf_height = ac_unit_height - (gs_frame_width - gs_rebate_width) ac_leaf_width = ac_egress_width + 2 * gs_rebate_width ac_leaf_height = ac_egress_height + gs_rebate_width
Note: the connection of the nominal sizes can vary depending on the type of the door/window (external sliding, pocket, etc.).
Setting the Nominal Sizes
Only one size pair can be assigned to the parameters A and B at a given time. This size-pair will represent the object every time the Nominal Size option is chosen in the Automatic Dimensioning setup.
The user should be able to decide which size is needed as Nominal Size. Make sure the chosen size is assigned to the A-B parameters, in the parameter script.
Changing A and B should create a chain reaction of calculations: modify all related sizes according to parameters assigned to A and B.
Every change must be handled:
! ============================================================================== ! Check if recalculation needed ! ============================================================================== _bRecalculateW = GLOB_MODPAR_NAME = "gs_frame_width" | \ GLOB_MODPAR_NAME = "tolerance" | \ GLOB_MODPAR_NAME = "revealSize" | \ GLOB_MODPAR_NAME = "A" | \ GLOB_MODPAR_NAME = "bReveal" ! ============================================================================== ! Width settings ! ============================================================================== if GLOB_MODPAR_NAME = "ac_wallhole_width" | (_bRecalculateW & iNominalSize = SIZE_WALLHOLE) then if GLOB_MODPAR_NAME = "A" then ac_wallhole_width = A parameters ac_wallhole_width = ac_wallhole_width endif ac_unit_width = ac_wallhole_width - 2 * tolerance ac_reveal_width = ac_wallhole_width - 2 * bReveal * revealSize ac_egress_width = ac_unit_width - 2 * gs_frame_width A = ac_wallhole_width parameters ac_unit_width = ac_unit_width, ac_reveal_width = ac_reveal_width, ac_egress_width = ac_egress_width, A = A endif
This logic has to be implemented regarding the other sizes as well.
See the example object for more.
Assigning hotspots to sizes
To let ARCHICAD be able to put dimensions on sizes automatically, a pair of hotspots needs to be implemented into the object in 2D (for floor plan) and 3D (for section/elevation purposes) with the exact distance of the represented size between the hotspots.
ARCHICAD will automatically lock on the size using the hotspots.
It is convenient to display the size hotspots only when they are useful: for example, do not display egress hotspots on a plan of 1:200 scale, because nobody is going to need them.
The example object uses small colorful spheres to represent the hotspots in 3D and circles for 2D.
Note: ARCHICAD puts additional hotspots to the bounding box regardless of the existence of scripted hotspots.