Computer-aided design systems such as MCAD, BIM, and EDA have basic functions, as well as discipline-specific ones, based on components often provided by third parties. Components include data converters and the geometric kernel, and are responsible for functions like reading and writing of files, user-interactions with objects in the geometric model, and so on.
Systems that implement building information modeling (BIM) for architectural design require these components. BIM designs are admittedly not as complex or a critical as in mechanical engineering CAD systems, but they are nonetheless important.
BIM programs are designed to create building models comprehensive enough to contain all of the information necessary to construct and operate a building. This means that each individual element in the building must be addressed, including its geometry, the physical and functional options, its manufacturer, and even its possible environmental impacts. Information modeling systems for buildings save any kind of information about all objects, as well as flexibly edit element geometry, and automatically recalculate affected data when changes are made to elements.
BIM Model Parameterization
There is a need for building models to parameterize elements in BIM programs. Parameterize means that all of the objects in the model have parameters that set their size and limit their movement relative to one other. Parameters give BIM several advantages.
Parameters are necessary for the automatic recalculation of model elements. Elements undergo changes when, for example, objects are moved or new ones are added. Moving a wall with inset windows, for instance, is performed on the entire wall, not separately for each wall and window element. The program needs to be able to recalculate the wall's elements based on dependencies (parameters and constraints) specified by the designer.
For this reason, BIM programs must be based on parametric kernels capable of coordinating these kinds of changes automatically. BIM programs then allow designers to create complete information models of buildings, as well as of individual objects.
Model-based 2D Documentation in BIM
Secondly, parameters are involved in creating and updating 2D drawings and schedules from the 3D building model -- something that is being increasingly required by end-users. Drawings are regenerated automatically as changes occur in the model, with the changes being reflected immediately.
The result is that there is no longer any need to manually edit plans or create a additional ones from scratch. This approach excludes errors in drawings issued to plan checkers and contractors that in the past had been caused by human factors.
Roles Played by C3D in BIM
When we originally designed our C3D Toolkit, we meant it for use primarily in MCAD (mechanical CAD) systems. However, its capabilities have been significantly expanded over the years as we added many more tools. As a result, today our toolkit also offers functions demanded by BIM systems.
The C3D Modeler geometry kernel is our module that provides programmers with methods for constructing geometric bodies of any shape. In BIM systems, our kernel provides the ability to create all kinds of bodies: modeling geometric primitives, such as walls and columns; assigning industry- and user-defined attributes to them; and making complex architectural shapes from bodies of a variety of surfaces.
The kernel has both common and special functions needed for editing bodies. These include Boolean operations, cutting bodies with surfaces, rounding off edges, constructing symmetrical bodies, and merging objects.
In particular, we offer methods for working with objects on two-dimensional planes: projecting 3D bodies and 2D geometric primitives; performing calculations on geometric models for BOMs (bills of material); building triangulations; calculating mass-inertia properties; and detecting collisions between model elements, such as finding air conditioning ducts that accidentally penetrate structural columns.
The C3D Solver is our module for solving geometric constraints. It provides methods for defining relations between geometric primitives in 2D and 3D space. As a parametric solver, it can impose logical constraints on any objects of a model. This provides users the ability to parameterize and edit 2D drawings and 3D models; synchronously change model elements; combine objects into assemblies and move them relative to each other; generate animations; and more.
The close connection between the C3D Modeler and the C3D Converter data exchange modules allows programmers to read and write geometric model data of any of the major exchange formats --ACIS SAT, IGES, JT, Parasolid X_T and X_B, STEP, STL, and VRML -- and so build representations of models as C3D geometry. The close connection between modeler and translator offers BIM applications a range of options for interacting with other engineering systems.
How BIM Developers Influence Development of the C3D Toolkit
Our approach to adding methods to the C3D Toolkit's components is based not only on the thoughts of our programmers, but also on the requests from our customers. We have seen software companies like ASCON, CYPE, Nanosoft, Renga Software, and ZV Service write BIM applications based on C3D. They are the ones who describe to us the functions they need, and so initiate the development expanded BIM capabilities of the C3D Toolkit.
Renga Software, for example, uses our kernel, solver, and data converter modules. Following requests from their team, we’ve added the following functions for all of our customers to deploy:
- The kernel had provided a rectangular projection, but with a request from Renga we added a method to construct skewed-angle projections by using rectangular projections and following-plane projection transformation
- Renga developers were in need of the function that constructs door-opening lines in drawings, so we added such method; it uses the C3D Modeler function that shades curves by solid bodies during projection
We keep in close touch with our customers to help us to develop and improve capabilities in our components, as well as to implement functions that expands the scope of the C3D Toolkit further.