26.03.2024 • C3D Modeler

Direct Modeling Updates in C3D Modeler: Changing Fillet Radius and Replacement of Faces Function

New direct modeling commands in C3D Modeler. The direct modeling tools edit imported geometry which has no history tree.

The first new command is ‘Change the fillet radius’. With this function, the user selects a fillet edge and specifies the new fillet radius. The faces adjacent to the fillet are regenerated.

Direct Modeling Updates in C3D Modeler: Changing Fillet Radius and Replacement of Faces Function, photo 1
Fig. 1. The ‘Change the fillet radius’ command

The command also recognizes imported fillets converted into NURBS surfaces. After the command is completed, such surfaces are converted from spline into elementary surfaces while retaining all their attributes.

All the direct modeling methods are invoked with the following function:
MATH_FUNC (MbResultType) ModifiedSolid (refer to action_direct.h)

To pass the parameters to this function, create the MbModifiedSolidParams class and specify the operation type MbeModifyingMode::dmm_FilletsRadiusSet or dmm_FilletsRadiusSetSingle.

Use the constructor to create the parameter structure:

  MbModifiedSolidParams(       MbeModifyingMode   type,
                         const MbSNameMaker &     names,
                         const c3d::ItemIndices & faces,
                               double             value )

dmm_FilletsRadiusSet modifies a chain of smoothly merged fillets of the same radius, as shown in Figure 1 above.

dmm_FilletsRadiusSetSingle changes only the specified faces, if possible. For instance, it may be needed to change only one of the multiple fillets of the same radius meeting at a corner.

It differs from the legacy dmm_FilletsRadiusChange operation type in that dmm_FilletsRadiusChange changes the fillet radius by the specified value, while dmm_FilletsRadiusSet assigns the new radius to all the fillets affected. For example, if we have 2 faces with radii 10 and 20 fillets, then at value=5 after the dmm_FilletsRadiusChange operation the new radii will be 15 and 25, and after, at dmm_FilletsRadiusSet, 5 and 5, respectively.

This functionality is not intended for variable radius fillets, elliptical fillets, etc. The configuration of such fillets at the corners is preserved where possible, but this cannot be guaranteed for complex geometry.

The operation creates a number of auxiliary objects to approximately locate the new face, even if the operation fails. They are the point and the center of the new fillet face, the centerline perpendicular to the fillet circle, and the fillet angle. To get these objects, use the MbModifiedSolidResults::GetFilletRadiusSetHotPoint method.

Another new addition to the direct modeling tools is the ‘Replacement of faces’ function. Just select the face to be edited and specify the reference face. The body will be regenerated, and the face shape will be changed. The fillets smoothly merged with the faces to be replaced are adapted.

Direct Modeling Updates in C3D Modeler: Changing Fillet Radius and Replacement of Faces Function, photo 2
Fig. 2. Replacement of faces

To pass the parameters to this function, the MbModifiedSolidParams class and specify the operation type MbeModifyingMode::dmm_ReplaceFaces.

Use the constructor to create the parameter structure:

  template<class SurfArray>
  MATH_FUNC_EX MbModifiedSolidParams(       MbeModifyingMode     type,
                                      const MbSNameMaker &       names,
                                      const c3d::ItemIndices &   replacedFaces,
                                      const SurfArray &          replacementSurfaces,
                                            bool                 sameSurfaces,
                                      const c3d::NumbersVector & surfaceParts,
                                      const c3d::DoubleVector &  offsets )

The face can be immediately converted into offset surfaces (array of offset values). If there are multiple face replacement options (loops or periodic surfaces), the option is specified as a number assigned to surfaceParts. Elementary surfaces can be replaced along their extensions. For all other surface types, the surface must exist in the extended body domain, otherwise the result is not guaranteed.

Direct Modeling Updates in C3D Modeler: Changing Fillet Radius and Replacement of Faces Function, photo 3
Fig. 3. ‘Replacement of faces’ command

You can replace multiple faces with a single one.

The operation creates a number of auxiliary objects to approximately locate the new face, even if the operation fails: a point in the center of the new fillet faces and a vector along which this point is shifted when the shift parameter is changed. To get these objects, use the MbModifiedSolidResults::GetReplaceFacesHotPoint method.

These functions are already available for testing and will be incorporated into C3D Modeler soon. To get the trial version, use the feedback form on our website.

Share
Up