23.12.2022 • C3D Solver

C3D Solver’s New Interval Dimension Functions

Recently, we introduced distance interval dimensions in our article on new tools in C3D Solver 2023’s parameterization module. This is a subtype of driving dimensions, but with several differences. So, in this post we describe the differences between interval and driving dimensions. As a bonus, we are announcing a new subtype of interval dimension.

To set such dimensions with our C3D Solver API, you call the GCM_AddDistance function, which takes either a number or a numeric interval as its value;

  • Number -- a driving dimension is created
  • Numeric interval range -- an interval dimension is created

To better understand how interval dimensions differ from driving dimensions, let’s consider the features of them.

Characteristics of Driving Dimensions

A property characteristic of driving dimensions is that they take a single value. Only users have the ability to change this value as an independent system parameter by calling the GCM_ChangeDrivingDimension function; the solver can only take it for execution.

Another property of driving dimensions is that they eliminate one or more degrees of object freedom. If, for example, you set a driving-distance dimension between the flat faces of two bodies, then the dimension removes three degrees of freedom; keep in mind that completely free bodies have six degrees of freedom, and so it keeps the rotation degree of freedom and two translational degrees of freedom.

Characteristics of Interval Dimensions

At the end of 2021, and for the first time for the 3D Solver, we implemented a dimension subtype, namely intervals. The interval dimension takes not a single value, but any one value from a given range [dMin, dMax]. This type of dimension eliminates one fewer degree of freedom than driving ones. For example, when the dimension between the two planes is changed from driving to interval, it eliminates two degrees of freedom, not three.

This year, the C3D Solver team continued to work on interval dimensions by adding a similar functional for angular dimensions -- it takes a single angle value from a range of values specified by the user.

For the new function to correctly measure dimensional angles, our developers needed to refactor some of the internal equations that define vector rotations. In particular, the angular dimension is a ternary (three part) constraint which takes three objects: the two objects between which the angle is measured, and the third object being the axis that defines the rotation of the angle between them (planar subtype).

C3D Solver’s New Interval Dimension Functions, photo 2 Angular dimension between vectors X1 and X2 with rotation axis Z1 (planar angle)

The solver creates the axis (a 3D subtype) automatically, so users do not have to specify it. However, an angular dimension still functions as if this rotation axis were specified. This, in turn, allows all types of angles to be brought to the same definition area from 0 to 360 degrees; when no axis of rotation is specified in three-dimensional space, the angle measured is by the shortest rotation, which cannot exceed 180 degrees. Angles with a magnitude of 270 or 90 degrees in 3D space, for example, are equivalent, when no axis of rotation is specified.

Future Plans

Next year, the C3D Solver team plans to implement a third type of dimension, in addition to driving and interval ones -- the variational dimension. Its value is the scalar variable of a constraint system. We are progressing on the assumption the new dimension type will satisfy the needs of CAD users in the following areas:

  • Information-style dimensions whose variable measures and reports the current state of the geometry. Variables employed by these new dimension types can be part of an engineering equation or a parametric CAD model.
  • Assigning dimensional variables to each other by correlation. As a rule, these are linear equations, such as expression: "dimension D2 being set equal to half the value of dimension D1".
Alexandr Maximenko, C3D Solver Team Lead, C3D Labs
Alexandr Maximenko
C3D Solver Team Lead, C3D Labs

Artem Maksimenko, Product Manager, C3D Labs
Artem Maksimenko
Product Manager, C3D Labs