25#ifndef _OD_MODELERGEOMETRY_INCLUDED_
26#define _OD_MODELERGEOMETRY_INCLUDED_
29#define STL_USING_VECTOR
58namespace GeMesh {
class OdGeTrMesh; }
285 virtual void createBox(
double xLen,
double yLen,
double zLen ) = 0;
338 virtual void createTorus(
double majorRadius,
double minorRadius ) = 0;
361 virtual void createWedge(
double xLen,
double yLen,
double zLen ) = 0;
405 const OdGeVector3d& axisDir,
double angleOfRevolution,
bool isSolid =
true) = 0;
572 bool& solidsInterfere,
623 double momInertia[2],
double& prodInertia,
709 double momInertia[3],
710 double prodInertia[3],
711 double prinMoments[3],
713 double radiiGyration[3],
862 bool bHistoryEnabled =
false) = 0;
883 bool isSolid =
true) = 0;
900 bool isSolid =
true) = 0;
948 double radius,
double topRadius = 0.0 ) = 0;
975 double revAngle,
double startAngle,
978 bool bHistoryEnabled =
false) = 0;
1001 bool isSolid =
true,
1002 bool bHistoryEnabled =
false) = 0;
1019 bool& allOpen,
bool& allClosed,
bool& allPlanar,
1020 bool displayErrorMessages =
false ) = 0;
1031 bool displayErrorMessages =
false ) = 0;
1042 bool displayErrorMessages =
false ) = 0;
1073 bool& closed,
double& approxArcLen,
bool displayErrorMessages =
false ) = 0;
1109 bool& endPointsOnAxis,
1111 bool displayErrorMessages =
false) = 0;
1203 const OdGeVector3d &draftVector,
double draftAngle) = 0;
1314 virtual void *
body( )
const {
return 0; }
1393 OdUInt8 &autoTransform)
const = 0;
1408 double otherDist) = 0;
1559 virtual OdResult get(
int& iUDegree,
int& iVDegree,
bool& bRational,
int& iUNumControlPoints,
int& iVNumControlPoints,
1578 virtual OdResult set (
int iUDegree,
int iVDegree,
bool bRational,
int iUNumControlPoints,
int iVNumControlPoints,
1950 virtual OdResult rebuild(
int iUDegree,
int iVDegree,
int iNumUCtrlPts,
int iNumVCtrlPts,
bool bRestore) = 0;
2096 bool bIsSetProperties) = 0;
2130 bool bAssociativeEnabled) = 0;
2161 std::vector<OdDbEntityPtr> & i_entities,
2163 std::vector<int> & o_indexentities,
2168 std::vector<OdDb3dSolidPtr> &i_solids,
2170 std::vector<int> & o_indexsolids,
OdSmartPtr< OdModelerGeometry > OdModelerGeometryPtr
OdArray< OdModelerGeometryPtr > OdModelerGeometryPtrArray
virtual OdResult createSectionObjects(const OdGePlane §ionPlane, OdDbEntityPtrArray §ionObjects) const =0
virtual OdResult getPeriodInV(double &dPeriod) const =0
virtual bool worldDraw(OdGiCommonDraw *pWd, OdUInt32 geomType, const NumIsolines *pNumIsolines=0)=0
virtual OdResult getNormal(double dU, double dV, OdGeVector3d &normal) const =0
virtual OdResult getAreaProp(const OdGePoint3d &origin, const OdGeVector3d &xAxis, const OdGeVector3d &yAxis, double &perimeter, double &area, OdGePoint2d ¢roid, double momInertia[2], double &prodInertia, double prinMoments[2], OdGeVector2d prinAxes[2], double radiiGyration[2], OdGePoint2d &extentsLow, OdGePoint2d &extentsHigh) const =0
virtual OdResult checkSweepPathCurve(OdDbEntity *pPathEnt, bool displayErrorMessages=false)=0
virtual void createWedge(double xLen, double yLen, double zLen)=0
virtual OdResult sliceByPlane(const OdGePlane &slicePlane, OdDbSurfacePtr &pNegHalfSurface, OdDbSurfacePtr &pNewSurface, bool bNotModifyItself)=0
virtual bool explode(OdDbEntityPtrArray &entitySet) const =0
virtual OdResult getControlPoints(int &iUCount, int &iVCount, OdGePoint3dArray &points) const =0
virtual void transformBy(const OdGeMatrix3d &xfm)=0
virtual OdResult out(OdStreamBuf *pStreamBuf, AfTypeVer typeVer, bool standardSaveFlag=true) const =0
virtual OdResult extrudeFaces(const OdArray< OdDbSubentId * > &faceSubentIds, double height, double taper)=0
virtual OdResult getCachedSilhouettes(OdGeCurve3dPtrArray *cachedSilhouettes)=0
virtual OdResult revolve(const OdDbRegion *pRegion, const OdGePoint3d &axisPoint, const OdGeVector3d &axisDir, double angleOfRevolution, bool isSolid=true)=0
virtual OdResult intersectWith(const OdDbEntity *ent, OdDb::Intersect intType, const OdGePlane &projPlane, OdGePoint3dArray &points, OdGsMarker thisGsMarker, OdGsMarker otherGsMarker) const =0
virtual OdResult rebuild(int iUDegree, int iVDegree, int iNumUCtrlPts, int iNumVCtrlPts, bool bRestore)=0
virtual OdResult checkCrossSectionCurves(OdDbEntityPtrArray &crossSectionCurves, bool &allOpen, bool &allClosed, bool &allPlanar, bool displayErrorMessages=false)=0
virtual OdResult get(int &iUDegree, int &iVDegree, bool &bRational, int &iUNumControlPoints, int &iVNumControlPoints, OdGePoint3dArray &ctrlPtsArr, OdGeDoubleArray &weights, OdGeKnotVector &uKnots, OdGeKnotVector &vKnots) const =0
virtual OdResult evaluate(double dU, double dV, OdGePoint3d &pos, OdGeVector3d &uDeriv, OdGeVector3d &vDeriv, OdGeVector3d &uuDeriv, OdGeVector3d &uvDeriv, OdGeVector3d &vvDeriv) const =0
virtual OdResult getIsolineAtU(double dNumberSegments, OdDbCurvePtrArray &lineSegments) const =0
virtual OdResult getParameterOfPoint(const OdGePoint3d &point, double &dU, double &dV) const =0
virtual OdResult getMassProp(double &volume, OdGePoint3d ¢roid, double momInertia[3], double prodInertia[3], double prinMoments[3], OdGeVector3d prinAxes[3], double radiiGyration[3], OdGeExtents3d &extents) const =0
virtual MaterialState hasMaterials() const
virtual OdResult RemoveControlPointsAtU(int iUDegree)=0
virtual OdResult setSubentColor(const OdDbSubentId &subentId, const OdCmColor &color)=0
virtual OdResult setMaterialToSubents(OdDbObjectId materialId)=0
virtual OdResult getNumberOfControlPointsInU(int &iCount) const =0
virtual OdResult modifyPositionAndTangent(double dU, double dV, const OdGePoint3d &point, const OdGeVector3d *uDeriv, const OdGeVector3d *vDeriv)=0
virtual OdResult isRational(bool &bIsRational) const =0
virtual OdResult setSubentMaterialMapper(const OdDbSubentId &subentId, OdGeMatrix3d &mx, OdUInt8 &projection, OdUInt8 &tiling, OdUInt8 &autoTransform)=0
virtual OdResult createCachedCurves(OdGeCurve3dPtrArray &pCurves)=0
virtual OdResult filletEdges(const OdArray< OdDbSubentId * > &edgeSubentIds, const OdGeDoubleArray &radius, const OdGeDoubleArray &startSetback, const OdGeDoubleArray &endSetback)=0
virtual OdResult isPeriodicInV(bool &bIsPeriodic) const =0
virtual OdResult trimSurface(const OdDbObjectIdArray &toolIds, const OdDbObjectIdArray &toolCurveIds, const OdGeVector3dArray &projVectors, const OdGePoint3d &pickPoint, const OdGeVector3d &viewVector, bool bAutoExtend, bool bAssociativeEnabled)=0
virtual OdResult rayTestEntities(const OdGePoint3d &rayBasePoint, const OdGeVector3d &rayDir, double dRayRadius, std::vector< OdDbEntityPtr > &i_entities, OdArray< OdDbSubentId > &o_subEntIds, std::vector< int > &o_indexentities, OdGeDoubleArray ¶meters) const =0
virtual OdResult createLoftedObject(OdDbEntityPtrArray &crossSectionCurves, OdDbEntityPtrArray &guideCurves, OdDbEntity *pPathCurve, OdDbLoftOptions &loftOptions, bool isSolid=true)=0
virtual bool getNurbCurvesCache(OdGeCurve3dPtrArray &) const
virtual OdResult in(OdStreamBuf *pStreamBuf, AfTypeVer *typeVer=0, bool standardSaveFlag=true)=0
virtual OdResult offsetFaces(const OdArray< OdDbSubentId * > &faceSubentIds, double offsetDistance)=0
virtual void ClearMaterialMapperAttributes()=0
virtual OdResult sliceBySurface(const OdDbSurfacePtr pSlicingSurface, OdDbSurfacePtr &pNegHalfSurface, OdDbSurfacePtr &pNewSurface, bool bNotModifyItself)=0
virtual OdResult setControlPointAndWeight(int iUIndex, int iVIndex, const OdGePoint3d &point, double weight)=0
virtual OdResult getNumberOfKnotsInU(int &iCount) const =0
virtual OdResult getEdgeSubentityGeometry(OdArray< OdUInt32 > indexesOfEdgeCalculation, OdGeCurve3d *&pEdgeCurve)=0
virtual OdResult getSlice(OdDbSurface *pSurface, bool bGetNegHalfToo, OdDb3dSolidPtr &pNegHalfSolid)=0
virtual OdResult evaluate(double dU, double dV, OdGePoint3d &pos, OdGeVector3d &uDeriv, OdGeVector3d &vDeriv) const =0
virtual OdResult generateMesh(const OdBrMesh2dFilter &filter, OdBrMesh2d &mesh2d)
virtual OdResult createExtrudedObject(OdDbEntity *pSweepEnt, const OdGeVector3d &directionVec, OdDbSweepOptions &sweepOptions, bool isSolid=true, bool bHistoryEnabled=false)=0
virtual OdResult getArea(double ®ionArea) const =0
virtual void * internalSubentPtr(const OdDbSubentId &id) const =0
virtual bool drawSilhouettes(OdGiViewportDraw *pVd)=0
ODRX_DECLARE_MEMBERS(OdModelerGeometry)
virtual OdResult generateSectionGeometry(const OdDbSection *pSection, OdDbEntityPtrArray &sourceEntArr, OdArray< OdDbEntityPtr > &intBoundaryEnts, OdArray< OdDbEntityPtr > &intFillEnts, OdArray< OdDbEntityPtr > &backgroundEnts, OdArray< OdDbEntityPtr > &foregroundEnts, OdArray< OdDbEntityPtr > &curveTangencyEnts, bool bIsSetProperties)=0
virtual OdResult createSculptedSolid(OdDbEntityPtrArray &limitingBodies, const OdGeIntArray &limitingFlags)=0
virtual OdResult taperFaces(const OdArray< OdDbSubentId * > &faceSubentIds, const OdGePoint3d &basePoint, const OdGeVector3d &draftVector, double draftAngle)=0
virtual OdResult getSubentColor(const OdDbSubentId &subentId, OdCmColor &color) const =0
virtual OdResult extrudeFacesAlongPath(const OdArray< OdDbSubentId * > &faceSubentIds, const OdDbCurve *path)=0
virtual OdResult getDegreeInU(int &iDegree) const =0
virtual OdResult copySubEntity(const OdDbSubentId &subentId, OdDbEntityPtr &newEntity) const =0
virtual OdResult checkRevolveCurve(OdDbEntity *pRevEnt, const OdGePoint3d &axisPnt, const OdGeVector3d &axisDir, bool &closed, bool &endPointsOnAxis, bool &planar, bool displayErrorMessages=false)=0
virtual OdResult getControlPointAndWeight(int iUIndex, int iVIndex, OdGePoint3d &point, double &weight, bool &bIsRational) const =0
virtual void createSphere(double radius)=0
virtual bool brep(OdBrBrep &brBrep) const =0
virtual OdResult clear()=0
virtual bool setFACETRES(double facetRes)=0
virtual OdResult convertToNurbSurface(OdDbNurbSurfacePtrArray &nurbSurfaceArray)=0
virtual OdResult getPeriodInU(double &dPeriod) const =0
virtual OdResult getBoundingBox(OdGeExtents3d &box)=0
virtual OdResult generateSectionGeometry(SectArgs §Args, OdDbEntity *pEnt, bool *bHasForeground)=0
virtual OdResult intersectWith(const OdDbEntity *ent, OdDb::Intersect intType, OdGePoint3dArray &points, OdGsMarker thisGsMarker, OdGsMarker otherGsMarker) const =0
virtual OdResult imprintEntity(const OdDbEntity *pEntity)=0
virtual geomType bodyType() const =0
virtual OdResult offsetBody(double offsetDistance)=0
virtual OdResult createSweptObject(OdDbEntity *pSweepEnt, OdDbEntity *pPathEnt, OdDbSweepOptions &sweepOptions, bool isSolid=true, bool bHistoryEnabled=false)=0
virtual OdResult getNumberOfSpansInU(int &iSpan) const =0
virtual OdResult getObjectMesh(const OdDbFaceterSettings *faceter, OdGePoint3dArray &vertexArray, OdInt32Array &faceArray, OdGiFaceData *&faceData)=0
virtual OdResult getSubentPathsAtGsMarker(OdDb::SubentType type, OdGsMarker gsMark, const OdGePoint3d &pickPoint, const OdGeMatrix3d &viewXform, OdDbFullSubentPathArray &subentPaths, const OdDbObjectIdArray *entAndInsertStack=0) const =0
virtual OdResult separateBody(OdDb3dSolidPtrArray &newSolids)=0
virtual OdResult isClosedInV(bool &bIsClosed) const =0
virtual OdResult cleanBody()=0
virtual void createFrustum(double height, double xRadius, double yRadius, double topXRadius)=0
virtual void * body() const
virtual void createTorus(double majorRadius, double minorRadius)=0
virtual OdResult isPlanar(bool &bIsPlanar, OdGePoint3d &ptOnSurface, OdGeVector3d &normal) const =0
virtual OdResult getVKnots(OdGeKnotVector &knots) const =0
virtual OdResult getUKnots(OdGeKnotVector &knots) const =0
virtual OdResult rayTest(const OdGePoint3d &rayBasePoint, const OdGeVector3d &rayDir, double rayRadius, OdArray< OdDbSubentId > &subEntIds, OdGeDoubleArray ¶meters) const =0
virtual OdResult booleanOper(OdDbDatabase *database, OdDb::BoolOperType operation, OdModelerGeometry *otherBody, geomType typeThis, geomType typeOther)=0
virtual OdResult getDegreeInV(int &iDegree) const =0
virtual OdResult InsertKnot(double dVal, int iUorV)=0
virtual bool getFaceMesh(GeMesh::OdGeTrMesh &mesh, OdGsMarker iFace, const wrTriangulationParams &triangulationParams)=0
virtual OdResult ChangeFacesDoubleSidedParam(bool isDoubleSided)=0
virtual OdResult removeFaces(const OdArray< OdDbSubentId * > &faceSubentIds)=0
virtual OdResult thicken(double thickness, bool bBothSides, OdDb3dSolidPtr &pSolid) const =0
virtual OdResult getSection(const OdGePlane &plane, OdDbRegionPtr §ionRegion, OdDbEntityPtrArray *pSectionCurves=NULL) const =0
virtual OdResult projectOnToEntity(const OdDbEntity *pEntityToProject, const OdGeVector3d &projectionDirection, OdDbEntityPtrArray &projectedEntities) const =0
virtual bool setMMPerUnit(double mmPerUnit)=0
virtual OdResult checkInterference(OdDbDatabase *database, const OdModelerGeometry *otherSolid, bool createNewSolid, bool &solidsInterfere, OdDb3dSolidPtr &commonVolumeSolid) const =0
virtual OdResult isPointOnSurface(const OdGePoint3d &point, bool &bOnSurface) const =0
virtual OdResult booleanOper(OdDbDatabase *database, OdDb::BoolOperType operation, const OdModelerGeometry *otherBody, geomType typeThis, geomType typeOther, OdSmartPtr< OdModelerGeometry > &result, OdDbEntityPtrArray *intersectionEntities=NULL) const =0
virtual OdDbSubentId internalSubentId(void *ent) const =0
virtual OdResult convertTo(const OdGePoint3dArray &arrVertexes, const OdInt32Array &arrEdges, const OdInt32Array &arrFaces, OdGiFaceData &fd, OdBoolArray &arrFacesColors, OdBoolArray &arrFacesMaterials, OdDbEntity *pEntity)=0
virtual OdResult evaluate(double dU, double dV, int iDerivDegree, OdGePoint3d &point, OdGeVector3dArray &derivatives) const =0
virtual OdResult transformFaces(const OdArray< OdDbSubentId * > &faceSubentIds, const OdGeMatrix3d &matrix)=0
virtual OdResult getNumberOfKnotsInV(int &iCount) const =0
virtual OdResult checkPathCurve(OdDbEntity *pPathCurve, bool displayErrorMessages=false)=0
virtual OdResult setColorToSubents(OdCmColor const &color)=0
virtual OdResult createPyramid(double height, int sides, double radius, double topRadius=0.0)=0
virtual OdResult evaluate(double dU, double dV, OdGePoint3d &pos) const =0
virtual OdResult getIsolineAtV(double dNumberSegments, OdDbCurvePtrArray &lineSegments) const =0
virtual OdResult setControlPoints(int iUCount, int iVCount, const OdGePoint3dArray &points)=0
virtual OdResult getGsMarkersAtSubentPath(const OdDbFullSubentPath &subPath, OdGsMarkerArray &gsMarkers) const =0
virtual void enableAcisAudit(bool bEnable)=0
virtual bool getTransformation(OdGeMatrix3d &xfm)=0
virtual OdResult InsertControlPointsAtV(double dV, const OdGePoint3dArray &uCtrlPts, const OdGeDoubleArray &uWeights)=0
virtual OdResult setSubentPath(OdBrEntity &, OdDbFullSubentPath &)
virtual OdResult getSubentMaterialMapper(const OdDbSubentId &subentId, OdGeMatrix3d &mx, OdUInt8 &projection, OdUInt8 &tiling, OdUInt8 &autoTransform) const =0
virtual OdResult setBody(const void *)
virtual OdResult extendEdges(OdDbFullSubentPathArray &edgesId, double dExtDist, EdgeExtensionType extOption)=0
virtual OdResult createBlendObject(OdDbEntityPtrArray &blendedEdges, OdDbBlendOptions &blendOptions, bool isSolid=true)=0
virtual OdResult set(int iUDegree, int iVDegree, bool bRational, int iUNumControlPoints, int iVNumControlPoints, const OdGePoint3dArray &ctrlPtsArr, const OdGeDoubleArray &weights, const OdGeKnotVector &uKnots, const OdGeKnotVector &vKnots)=0
virtual bool hasTrueColorAttributes() const =0
virtual void ClearColorAttributes()=0
virtual OdResult getPerimeter(double &) const =0
virtual OdResult isPeriodicInU(bool &bIsPeriodic) const =0
virtual OdResult addSubentitySpecialSettings(AcisDataType addedDT, AcisDataTypeArrFirst addedDTFirst, const OdDbSubentId subentId, OdArray< OdUInt32 > &retArray, OdUInt32 idx)=0
virtual OdResult InsertControlPointsAtU(double dU, const OdGePoint3dArray &vCtrlPts, const OdGeDoubleArray &vWeights)=0
virtual OdResult rayTestSolids(const OdGePoint3d &rayBasePoint, const OdGeVector3d &rayDir, double dRayRadius, std::vector< OdDb3dSolidPtr > &i_solids, OdArray< OdDbSubentId > &o_subEntIds, std::vector< int > &o_indexsolids, OdGeDoubleArray ¶meters) const =0
virtual OdResult setMaterialResolver(const OdMaterialResolver *pResolver)
virtual OdResult getHlrCurves(OdEdgeHLREdgeVisitor &edgeVisitor, const OdGeVector3d &viewDir, const OdDbEntityPtrArray &entities, const OdGeMatrix3dArray *xforms=NULL, OdEdgeTypeFlags edgeType=kTangent)=0
virtual OdResult setSubentMaterial(const OdDbSubentId &subentId, OdDbObjectId matId)=0
virtual void ClearMaterialAttributes(const OdArray< OdDbSubentId > *aSubents=NULL)=0
virtual OdResult auditAcisData(OdDbAuditInfo *pInfo, const OdRxObject *pObj)
virtual OdResult extrude(const OdDbRegion *pRegion, double height, double taperAngle, bool isSolid=true)=0
virtual OdResult isClosedInU(bool &bIsClosed) const =0
virtual OdResult shellBody(const OdArray< OdDbSubentId * > &faceSubentIds, double offsetDistance)=0
virtual OdResult chamferEdges(const OdArray< OdDbSubentId * > &edgeSubentIds, const OdDbSubentId &baseFaceSubentId, double baseDist, double otherDist)=0
virtual OdResult getSubentMaterial(const OdDbSubentId &subentId, OdUInt64 &matId) const =0
virtual OdResult restoreAttributes(OdModelerGeometry *oldmodeler)=0
virtual OdResult getSlice(const OdGePlane &plane, bool getNegHalfToo, OdDb3dSolidPtr &negHalfSolid)=0
virtual void createBox(double xLen, double yLen, double zLen)=0
virtual OdResult RemoveControlPointsAtV(int iVDegree)=0
virtual OdResult extrudeAlongPath(const OdDbRegion *region, const OdDbCurve *path, double taperAngle=0.0, bool isSolid=true)=0
virtual OdResult getPlane(OdGePlane ®ionPlane) const =0
virtual OdResult setMaterialMapperToSubents(OdGeMatrix3d &mx, OdUInt8 &projection, OdUInt8 &tiling, OdUInt8 &autoTransform)=0
virtual OdResult createFrom(const OdDbEntity *pFromEntity)=0
virtual OdResult convertToRegion(OdDbEntityPtrArray ®ions)=0
virtual OdResult getNumberOfControlPointsInV(int &iCount) const =0
virtual OdResult createRevolvedObject(OdDbEntity *pRevEnt, const OdGePoint3d &axisPnt, const OdGeVector3d &axisDir, double revAngle, double startAngle, OdDbRevolveOptions &revolveOptions, bool isSolid=true, bool bHistoryEnabled=false)=0
virtual OdResult checkSweepCurve(OdDbEntity *pSweepEnt, OdDb::Planarity &planarity, OdGePoint3d &pnt, OdGeVector3d &vec, bool &closed, double &approxArcLen, bool displayErrorMessages=false)=0
virtual bool getMMPerUnit(double &mmPerUnit) const =0
virtual OdResult getSectionViewInfo(const OdArray< OdDbEntityPtr > &pEnts, const OdGePoint3dArray &pPoints, const OdGeVector3d &normal, OdArray< OdDbEntityPtr > &backgroundEnts, OdArray< OdDbEntityPtr > &intHatchEnts, OdArray< OdDbEntityPtr > &intBoundaryEnts, OdArray< OdDbEntityPtr > &curveVisibilityEdges, SectionType sectType=kFull_ST, OdEdgeTypeFlags edgeVis=kTangent)=0
virtual OdResult createFilletSurface(OdDbSurfacePtr &surf1, const OdGePoint3d &pickPt1, OdDbSurfacePtr &surf2, const OdGePoint3d &pickPt2, double dRadius, OdDb::FilletTrimMode trimMode, const OdGeVector3d &projDir)=0
virtual OdResult checkGuideCurves(OdDbEntityPtrArray &guideCurves, bool displayErrorMessages=false)=0
virtual OdResult getNumberOfSpansInV(int &iSpan) const =0
GLuint GLsizei GLsizei GLint GLenum * type
GLint GLenum GLsizei GLsizei height