/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _DbBlendOptions_h_Included_ #define _DbBlendOptions_h_Included_ #include "TD_PackPush.h" #include "DbEntity.h" #include "ModelerGeometryCreator.h" class OdDbBlendOptionsImpl; /** \details Class for setting options used for creating blend surfaces and lofted solids (by calling OdDbLoftedSurface::createBlendSurface() or OdDb3dSolid::createBlendSolid() methods). Loft and blend options are used to control the shape of the resulting surface or solid object. */ class DBENT_EXPORT OdDbBlendOptions { public: /** \details Creates an OdDbBlendOptions object. */ OdDbBlendOptions(); /** \details Copy constructor for the OdDbBlendOptions class. */ //OdDbBlendOptions(const OdDbBlendOptions& src); /** \details Destroys the OdDbBlendOptions object. */ ~OdDbBlendOptions(); /** \details Assigns to the OdDbBlendOptions object another object (assignment operator). \param rhs [in] Another OdDbBlendOptions object to assign. */ OdDbBlendOptions& operator = (const OdDbBlendOptions& rhs); /// /// The drive mode property defines which section(s) "drive" the creation of the planes /// containing the planar guides. Any of the two input sections can be selected for /// that role, or both of them can be used at the same time (the default value). /// The implementation uses the driving sections in conjunction with the coplanar point /// and direction (if supplied). /// /// enum DriveModeType { kDriveModeFirst = 0, kDriveModeSecond = 1, kDriveModeBoth = 2 }; /// /// The simplify option allows the application to replace the output ASM procedural /// blend spline surface with an analytic surface, but only if the analytic surface /// is an exact match. This option is enabled by default. /// /// Return true or false. The default value is true. /// bool simplify() const; /// /// The simplify option allows the application to replace the output ASM procedural /// blend spline surface with an analytic surface, but only if the analytic surface /// is an exact match. This option is enabled by default. /// /// Input specifying true or false /// Return Acad::eOk if successful. void setSimplify(bool simplify); /// /// The solid option allows the implementation to stitch the output surface to the /// input section curves in order to produce a solid body. This function is reserved /// for future use. Currently, blend surface always output an surface. It cannot /// output solid. /// /// Return true or false. /// bool solid() const; /// /// The solid option allows the implementation to stitch the output surface to the /// input section curves in order to produce a solid body. This function is reserved /// for future use. Currently, blend surface always output an surface. It cannot /// output solid. /// /// Input specifying true or false /// Return Acad::eOk if successful. /// OdResult setSolid(bool val); /// /// The quality option controls how many planar curves (aka planar guides) blending /// between the input sections are made by the implementation to constrain the /// output surface. More planar guides will result in a blend surface that has a /// better shape; however, the representation of the surface becomes more complex /// which results in larger storage requirements and larger evaluation times. The /// default value is 5. The value of 0 has a special meaning: In this case the /// output surface will coincide with the standard loft output for the same input /// sections and might have a significantly different shape from the surface /// produced for a quality value >=1. /// /// Return an unsigned integer /// OdUInt32 quality() const; /// /// The quality option controls how many planar curves (aka planar guides) blending /// between the input sections are made by the implementation to constrain the /// output surface. More planar guides will result in a blend surface that has a /// better shape; however, the representation of the surface becomes more complex /// which results in larger storage requirements and larger evaluation times. The /// default value is 5. The value of 0 has a special meaning: In this case the /// output surface will coincide with the standard loft output for the same input /// sections and might have a significantly different shape from the surface /// produced for a quality value >=1. /// /// Input specifying a non-negative integer value for quality /// Return Acad::eOk if successful /// OdResult setQuality(OdUInt32 val); /// /// The coplanar point is an optional property that can be supplied to constrain the /// set of planes containing the planar guides made by the implementation. If set, /// all guide planes will contain it. By default no coplanar point is set. This /// option is useful in conjunction with the coplanar direction option to define an /// axis contained by all guide planes. An example where such an axis is useful is a /// blend operation between involving a cone: The customer application might prefer /// that all guides planes to contain the cone axis. /// /// Return an AcGePoint3d point /// OdGePoint3d coplanarPoint() const; /// /// The coplanar point is an optional property that can be supplied to constrain the /// set of planes containing the planar guides made by the implementation. If set, /// all guide planes will contain it. By default no coplanar point is set. This /// option is useful in conjunction with the coplanar direction option to define an /// axis contained by all guide planes. An example where such an axis is useful is a /// blend operation between involving a cone: The customer application might prefer /// that all guides planes to contain the cone axis. /// /// Input specifying an AcGePoint3d point /// Return Acad::eOk if successful /// OdResult setCoplanarPoint(const OdGePoint3d pPt); /// /// The coplanar direction is an optional property that can be supplied to constrain /// the set of planes containing the planar guides made by the implementation. If /// set, all guide planes will contain it (i.e. are parallel to it). By default no /// coplanar direction is set. /// /// Return an AcGeVector3d vector /// OdGeVector3d coplanarDirection() const; /// /// The coplanar direction is an optional property that can be supplied to constrain /// the set of planes containing the planar guides made by the implementation. If /// set, all guide planes will contain it (i.e. are parallel to it). By default no /// coplanar direction is set. /// /// Input specifying AcGeVector3d vector for coplanar direction /// Return Acad::eOk if successful /// OdResult setCoplanarDirection(const OdGeVector3d pDir); /// /// The drive mode property defines which section(s) "drive" the creation of the /// planes containing the planar guides. Any of the two input sections can be /// selected for that role, or both of them can be used at the same time (the /// default value). The implementation uses the driving sections in conjunction with /// the coplanar point and direction (if supplied). /// /// Return 0,1 or 2 representing kDriveModeFirst, kDriveModeSecond or DriveModeBoth respectively. /// OdDbBlendOptions::DriveModeType driveMode() const; /// /// The drive mode property defines which section(s) "drive" the creation of the /// planes containing the planar guides. Any of the two input sections can be /// selected for that role, or both of them can be used at the same time (the /// default value). The implementation uses the driving sections in conjunction with /// the coplanar point and direction (if supplied). /// /// Input integer of value 0, 1, or 2 representing kDriveModeFirst, kDriveModeSecond or DriveModeBoth respectively. /// Return Acad::eOk if successful /// OdResult setDriveMode(OdDbBlendOptions::DriveModeType val); private: friend class OdDbBlendOptionsImpl; OdDbBlendOptionsImpl *m_pImpl; }; #include "TD_PackPop.h" #endif // _DbBlendOptions_h_Included_