Macros and Modules
Introduction to macros
Geometric constraints determine and control the relationships of objects with respect to each other. An object that is constrained to another object, cannot move independently of the object to which it's constrained.
An object may be constrained against another profile, a plate, a line, a point, or a combination of each.
Geometric constraints are the foundation principle of parametric drafting.
Macros in Parabuild are represented green spheres. The Macro is a collection of Modules containing data which defines the shape, size, and form of it's components parts, together with their relationship to each other. This is done by the application of Geometric Rules.
Macros
A macro is a collection of modules. The Geometric Rules are contained within the Modules. It's not compulsory to create a macro using more than 1 module - all data can be compiled into one module, but it's not advised, for reasons given in the next chapter (Modules)
As an example, a typical beam to column connection may be comprised of an end-plate on the beam connecting to a column with web stiffeners - making the connection complete would be the bolts fitted through both the end-plate and column (in this instance) flange. The component parts of this connection are contained within the modules making up the macro.
This macro may be re-used in all situations where the supporting column and incoming beam are of similar profiles, or groups, because the same Geometric Rules will apply, however it will not work if one or other of the profiles are different to that defined by the macro. For example, if the column has been replaced by a channel section, the stiffeners cannot be applied.
Modules
A module is a collection of Geometric Rules: if a Geometrical Rule is created, it will always be added to a module. A module will split the connection macro into a number of logical parts, which in doing so, offers several advantages:
- The calculation work that is necessary for Parabuild to solve the macro is greatly reduced if you work with several modules
- Modules can be reused in new macros
- The logical division of the connection in modules ensures a more synoptic macro during the design, especially when it contains many components
To prevent modules from contradicting each other, there is a list for each module that contains the various elements used by the module and which of these elements it adapts.
If a module needs a certain element (or a part of it), its possible with one of the 3 “Possession Degrees”:
- Fixed - This means that the module uses the element as a basis and the module cannot change or move the element.
- Rigid (=to move) - The module cannot change the size of the element itself, but can move it.
- Flexible. The module can adapt and move the element.
These 'Possession Degrees' ensure that modules will never contradict each other, but there are rules:
- An element can only be 'Flexible' or 'Rigid' in 1 module in 1 macro. And that is the case for the entire 3D drawing.
- There is no restriction on the number of 'Fixed' elements in a module
The 'Rigid' Possession Degree is only needed if an element will never be adapted intelligently, but should be moved.
All elements in a module are added to the module 'Element list' with one of the 3 possession degrees, the exception being 'Profiles'
A profile may be split by means of its Cuts, it's therefore possible that a module does not posses the 'Flexible' possession degree in the profile itself, but it does a Cut of the profile. Thus several macros can shorten/extend or cut out a profile without having to posses the complete profile (in a flexible way).
Modules can posses both end cuts and internal cuts separately.
Parabuild calculates modules in series. If a macro is calculated, then each module in it is calculated in sequence. Parabuild will choose automatically which module must be calculated first. This depends on which modules are dependent on which modules.
As an example, assume a plate with bolts:
There is a module 'plate' that entirely defines the plate (width, thickness,…). There will be a second module 'bolts' that defines the bolt pattern on the plate. The bolts module will become dependent on the plate module because the bolts module uses the plate as 'fixed'.
Parabuild will calculate the plate first, followed by the bolts module. We could call the plate module the parent module of the bolt module.
Due to this serial manner of calculating the modules, a module can never adapt an element upon which one of it's parent modules is dependent. This would be a circle of dependence, which can never be calculated.
Parabuild detects such bad dependencies automatically : it will refuse to add geometric rules that do not comply to this rule.