CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
ModelerGeometry.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24
25#ifndef _OD_MODELERGEOMETRY_INCLUDED_
26#define _OD_MODELERGEOMETRY_INCLUDED_
27
28#define STL_USING_MAP
29#define STL_USING_VECTOR
30#include "OdaSTL.h"
31#include "RxObject.h"
32#include "ModelerDefs.h"
33#include "DbEntity.h"
34#include "Db3dSolid.h"
35#include "DbRegion.h"
36#include "DbSubDMesh.h"
37#include "DbNurbSurface.h"
38#include "Db3dProfile.h"
39#include "Ge/GeMatrix3dArray.h"
40#include "Ge/GeNurbCurve3d.h"
42#include "MaterialResolver.h"
43#include "ModelerGeometryDefs.h"
44
45class OdStreamBuf;
46class OdBrBrep;
47class OdBrEntity;
48class OdGiCommonDraw;
50class OdDbCurve;
53class OdDbLoftOptions;
55class OdDbSection;
56class SectArgs;
58class OdBrMesh2d;
59namespace GeMesh { class OdGeTrMesh; }
61namespace OdDbModeler {
62 struct OdSectionViewParams;
63 struct OdHlrCurvesParams;
64}
65
66#include "TD_PackPush.h"
67
83class DBENT_EXPORT OdModelerGeometry : public OdRxObject
84{
85protected:
86 //DOM-IGNORE-BEGIN
88 //DOM-IGNORE-END
89
90public:
91 //DOM-IGNORE-BEGIN
93 //DOM-IGNORE-END
94
95 // in/out functionality
96
117 virtual OdResult in(OdStreamBuf* pStreamBuf, AfTypeVer *typeVer = 0, bool standardSaveFlag = true) = 0;
118
119
139 virtual OdResult out(OdStreamBuf* pStreamBuf, AfTypeVer typeVer, bool standardSaveFlag = true) const = 0;
140
147 virtual bool brep(OdBrBrep& brBrep) const = 0;
148
149 virtual OdResult getEdgeSubentityGeometry(OdArray<OdUInt32> indexesOfEdgeCalculation, OdGeCurve3d*& pEdgeCurve) = 0;
150
155 virtual OdResult setSubentPath(OdBrEntity& /*pInpEnt*/, OdDbFullSubentPath& /*subpath*/) { return eNotImplemented; }
156
161 virtual OdResult generateMesh(const OdBrMesh2dFilter& /*filter*/, OdBrMesh2d& /*mesh2d*/) { return eNotImplemented; }
162
168 virtual bool setFACETRES(double facetRes) = 0;
169
180
210 virtual bool worldDraw(OdGiCommonDraw* pWd, OdUInt32 geomType, const NumIsolines *pNumIsolines = 0) = 0;
211
226 virtual bool drawSilhouettes(OdGiViewportDraw* pVd) = 0;
227
228 virtual OdResult getCachedSilhouettes(OdGeCurve3dPtrArray* cachedSilhouettes) = 0;
229
238 virtual OdResult getHlrCurves(OdDbModeler::OdHlrCurvesParams& params) = 0;
239
245 virtual bool getTransformation(OdGeMatrix3d& xfm) = 0;
246
253 virtual void transformBy( const OdGeMatrix3d& xfm ) = 0;
254
268 virtual void createBox( double xLen, double yLen, double zLen ) = 0;
269
295 virtual void createFrustum( double height, double xRadius, double yRadius, double topXRadius ) = 0;
296
306 virtual void createSphere( double radius ) = 0;
307
321 virtual void createTorus( double majorRadius, double minorRadius ) = 0;
322
344 virtual void createWedge( double xLen, double yLen, double zLen ) = 0;
345
365 virtual OdResult extrude(const OdDbRegion* pRegion, double height, double taperAngle, bool isSolid = true) = 0;
366
387 virtual OdResult revolve(const OdDbRegion* pRegion, const OdGePoint3d& axisPoint,
388 const OdGeVector3d& axisDir, double angleOfRevolution, bool isSolid = true) = 0;
389
393 virtual void ClearColorAttributes() = 0;
394
398 virtual void ClearMaterialAttributes(const OdArray<OdDbSubentId>* aSubents = NULL) = 0;
399
404
417
424 virtual MaterialState hasMaterials() const {return kUnknown; }
425
432 virtual bool hasTrueColorAttributes() const = 0;
433
442 virtual OdResult getPlane(OdGePlane& regionPlane) const = 0;
443
449 virtual bool setMMPerUnit(double mmPerUnit) = 0;
450
456 virtual bool getMMPerUnit(double &mmPerUnit) const = 0;
457
462 {
466 kBody = 1,
473 };
474
488 virtual geomType bodyType() const = 0;
489
502 virtual bool explode(geomType typeThis, OdDbEntityPtrArray& entitySet) const = 0;
503
524 virtual OdResult booleanOper(OdDbDatabase* database, OdDb::BoolOperType operation, OdModelerGeometry* otherBody,
525 geomType typeThis, geomType typeOther) = 0;
526
550 virtual OdResult booleanOper(OdDbDatabase* database, OdDb::BoolOperType operation, const OdModelerGeometry* otherBody,
551 geomType typeThis, geomType typeOther, OdSmartPtr<OdModelerGeometry>& result, OdDbEntityPtrArray* intersectionEntities = NULL) const = 0;
552
566 const OdModelerGeometry* otherSolid,
567 bool createNewSolid,
568 bool& solidsInterfere,
569 OdDb3dSolidPtr& commonVolumeSolid)
570 const = 0;
571
579 virtual OdResult getArea(double& regionArea) const = 0;
580
588 virtual OdResult getPerimeter(double&) const = 0;
589
616 virtual OdResult getAreaProp( const OdGePoint3d& origin, const OdGeVector3d& xAxis,
617 const OdGeVector3d& yAxis, double& perimeter,
618 double& area, OdGePoint2d& centroid,
619 double momInertia[2], double& prodInertia,
620 double prinMoments[2], OdGeVector2d prinAxes[2],
621 double radiiGyration[2], OdGePoint2d& extentsLow,
622 OdGePoint2d& extentsHigh ) const = 0;
623
629 virtual OdResult clear( ) = 0;
630
657 virtual OdResult extrudeAlongPath(const OdDbRegion* region, const OdDbCurve* path, double taperAngle = 0.0, bool isSolid = true) = 0;
658
685 virtual OdResult imprintEntity(const OdDbEntity *pEntity) = 0;
686
703 virtual OdResult getMassProp(double& volume,
704 OdGePoint3d& centroid,
705 double momInertia[3],
706 double prodInertia[3],
707 double prinMoments[3],
708 OdGeVector3d prinAxes[3],
709 double radiiGyration[3],
710 OdGeExtents3d& extents) const = 0;
711
729 virtual OdResult getSection(const OdGePlane& plane, OdDbRegionPtr &sectionRegion, OdDbEntityPtrArray* pSectionCurves = NULL) const = 0;
730
758 virtual OdResult getSlice(const OdGePlane& plane, bool getNegHalfToo, OdDb3dSolidPtr &negHalfSolid) = 0;
759
791 virtual OdResult getSlice(OdDbSurface* pSurface, bool bGetNegHalfToo, OdDb3dSolidPtr& pNegHalfSolid) = 0;
792
799 virtual OdResult cleanBody() = 0;
800
816 virtual OdResult offsetBody(double offsetDistance) = 0;
817
818 //virtual OdResult offsetBody(OdDbEntity* pOffsetEnt, double offsetDistance) = 0;
819
837
857 const OdGeVector3d& directionVec,
858 OdDbSweepOptions& sweepOptions,
859 bool isSolid = true,
860 bool bHistoryEnabled = false) = 0;
861
877 OdDbEntityPtrArray& crossSectionCurves,
878 OdDbEntityPtrArray& guideCurves,
879 OdDbEntity* pPathCurve,
880 OdDbLoftOptions& loftOptions,
881 bool isSolid = true) = 0;
882
896 OdDbEntityPtrArray& blendedEdges,
897 OdDbBlendOptions& blendOptions,
898 bool isSolid = true) = 0;
899
914 //virtual OdResult createLoftedObjectByCoedges(
915 // OdDbEntityPtrArray& crossSectionCurves,
916 // OdDbEntityPtrArray& guideCurves,
917 // OdDbEntity* pPathCurve,
918 // OdDbLoftOptions& loftOptions,
919 // bool isSolid = true) = 0;
920
945 virtual OdResult createPyramid(double height, int sides,
946 double radius, double topRadius = 0.0 ) = 0;
947
971 const OdGePoint3d& axisPnt,
972 const OdGeVector3d& axisDir,
973 double revAngle, double startAngle,
974 OdDbRevolveOptions& revolveOptions,
975 bool isSolid = true,
976 bool bHistoryEnabled = false) = 0;
977
997 OdDbEntity* pPathEnt,
998 OdDbSweepOptions& sweepOptions,
999 bool isSolid = true,
1000 bool bHistoryEnabled = false) = 0;
1001
1002 // Loft options utility functions
1003
1016 OdDbEntityPtrArray& crossSectionCurves,
1017 bool& allOpen, bool& allClosed, bool& allPlanar,
1018 bool displayErrorMessages = false ) = 0;
1019
1029 bool displayErrorMessages = false ) = 0;
1030
1039 virtual OdResult checkPathCurve ( OdDbEntity *pPathCurve,
1040 bool displayErrorMessages = false ) = 0;
1041
1042 // Sweep options utility functions
1043
1070 OdDb::Planarity& planarity, OdGePoint3d& pnt, OdGeVector3d& vec,
1071 bool& closed, double& approxArcLen, bool displayErrorMessages = false ) = 0;
1072
1081 virtual OdResult checkSweepPathCurve ( OdDbEntity *pPathEnt, bool displayErrorMessages = false ) = 0;
1082
1083 // Revolve options utility functions
1084
1103 OdDbEntity* pRevEnt,
1104 const OdGePoint3d& axisPnt,
1105 const OdGeVector3d& axisDir,
1106 bool& closed,
1107 bool& endPointsOnAxis,
1108 bool& planar,
1109 bool displayErrorMessages = false) = 0;
1110
1124 virtual OdResult createFrom ( const OdDbEntity* pFromEntity, bool bFrom3dSolid) = 0;
1125
1135
1145 virtual OdResult thicken(double thickness, bool bBothSides, OdDb3dSolidPtr& pSolid) const = 0;
1146
1159 virtual OdResult intersectWith( const OdDbEntity* ent, OdDb::Intersect intType,
1160 OdGePoint3dArray& points, OdGsMarker thisGsMarker, OdGsMarker otherGsMarker ) const = 0;
1161
1175 virtual OdResult intersectWith( const OdDbEntity* ent, OdDb::Intersect intType, const OdGePlane& projPlane,
1176 OdGePoint3dArray& points, OdGsMarker thisGsMarker, OdGsMarker otherGsMarker ) const = 0;
1177
1186 virtual OdResult copySubEntity(const OdDbSubentId &subentId, OdDbEntityPtr &newEntity) const = 0;
1187
1203 virtual OdResult taperFaces(const OdArray<OdDbSubentId *> &faceSubentIds, const OdGePoint3d &basePoint,
1204 const OdGeVector3d &draftVector, double draftAngle) = 0;
1205
1217 virtual OdResult removeFaces(const OdArray<OdDbSubentId *> &faceSubentIds) = 0;
1218
1234 virtual OdResult offsetFaces(const OdArray<OdDbSubentId *> &faceSubentIds, double offsetDistance) = 0;
1235
1252 virtual OdResult shellBody(const OdArray<OdDbSubentId *> &faceSubentIds, double offsetDistance) = 0;
1253
1263 virtual OdResult transformFaces(const OdArray<OdDbSubentId *> &faceSubentIds, const OdGeMatrix3d &matrix) = 0;
1264
1278 OdGsMarker gsMark,
1279 const OdGePoint3d& pickPoint,
1280 const OdGeMatrix3d& viewXform,
1281 OdDbFullSubentPathArray& subentPaths,
1282 const OdDbObjectIdArray* entAndInsertStack = 0) const = 0;
1283
1293 OdGsMarkerArray& gsMarkers) const = 0;
1294
1295 //DOM-IGNORE-BEGIN
1302 virtual OdDbSubentId internalSubentId(void* ent) const = 0;
1303
1309 virtual void* internalSubentPtr(const OdDbSubentId& id) const = 0;
1310
1311 virtual bool getNurbCurvesCache(OdGeCurve3dPtrArray &) const { return false; }
1312
1313 // for internal use only
1314 virtual OdResult setBody(const void * /*pBody*/) { return eNotImplemented; }
1315 virtual void * body( ) const { return 0; }
1316 //DOM-IGNORE-END
1317
1326 virtual OdResult setSubentColor(const OdDbSubentId &subentId, const OdCmColor &color) = 0;
1327
1336 virtual OdResult getSubentColor(const OdDbSubentId &subentId, OdCmColor &color) const = 0;
1337
1350 virtual OdResult setSubentMaterial(const OdDbSubentId &subentId, OdDbObjectId matId) = 0;
1351
1360 virtual OdResult getSubentMaterial(const OdDbSubentId &subentId, OdUInt64& matId) const = 0;
1361
1374 OdGeMatrix3d &mx,
1375 OdUInt8 &projection,
1376 OdUInt8 &tiling,
1377 OdUInt8 &autoTransform) = 0;
1378
1391 OdGeMatrix3d &mx,
1392 OdUInt8 &projection,
1393 OdUInt8 &tiling,
1394 OdUInt8 &autoTransform) const = 0;
1395
1406 virtual OdResult chamferEdges(const OdArray<OdDbSubentId *> &edgeSubentIds,
1407 const OdDbSubentId& baseFaceSubentId,
1408 double baseDist,
1409 double otherDist) = 0;
1410
1421 virtual OdResult filletEdges( const OdArray<OdDbSubentId *> &edgeSubentIds,
1422 const OdGeDoubleArray& radius,
1423 const OdGeDoubleArray& startSetback,
1424 const OdGeDoubleArray& endSetback) = 0;
1425
1436 virtual OdResult createSectionObjects(const OdGePlane& sectionPlane, OdDbEntityPtrArray& sectionObjects) const = 0;
1437
1451 virtual OdResult sliceByPlane(const OdGePlane& slicePlane, OdDbSurfacePtr& pNegHalfSurface, OdDbSurfacePtr& pNewSurface, bool bNotModifyItself) = 0;
1452
1467 virtual OdResult sliceBySurface(const OdDbSurfacePtr pSlicingSurface, OdDbSurfacePtr& pNegHalfSurface, OdDbSurfacePtr& pNewSurface, bool bNotModifyItself) = 0;
1468
1501 virtual OdResult extrudeFaces(const OdArray<OdDbSubentId *> &faceSubentIds, double height, double taper) = 0;
1502
1528 virtual OdResult extrudeFacesAlongPath(const OdArray<OdDbSubentId *> &faceSubentIds, const OdDbCurve* path) = 0;
1529
1537 virtual OdResult ChangeFacesDoubleSidedParam(bool isDoubleSided) = 0;
1538
1548
1564 virtual OdResult get( int& iUDegree, int& iVDegree, bool& bRational, int& iUNumControlPoints, int& iVNumControlPoints,
1565 OdGePoint3dArray& ctrlPtsArr, OdGeDoubleArray& weights,
1566 OdGeKnotVector& uKnots, OdGeKnotVector& vKnots) const = 0;
1567
1583 virtual OdResult set (int iUDegree, int iVDegree, bool bRational, int iUNumControlPoints, int iVNumControlPoints,
1584 const OdGePoint3dArray& ctrlPtsArr, const OdGeDoubleArray& weights,
1585 const OdGeKnotVector& uKnots, const OdGeKnotVector& vKnots) = 0;
1586
1594 virtual OdResult getNumberOfControlPointsInU(int& iCount) const = 0;
1595
1603 virtual OdResult getNumberOfControlPointsInV(int& iCount) const = 0;
1604
1612 virtual OdResult getNumberOfKnotsInU(int& iCount) const = 0;
1613
1621 virtual OdResult getNumberOfKnotsInV(int& iCount) const = 0;
1622
1630 virtual OdResult getUKnots(OdGeKnotVector& knots) const = 0;
1631
1639 virtual OdResult getVKnots(OdGeKnotVector& knots) const = 0;
1640
1648 virtual OdResult getDegreeInU(int& iDegree) const = 0;
1649
1657 virtual OdResult getDegreeInV(int& iDegree) const = 0;
1658
1670 virtual OdResult isClosedInU(bool& bIsClosed) const = 0;
1671
1683 virtual OdResult isClosedInV(bool& bIsClosed) const = 0;
1684
1697 virtual OdResult isPeriodicInU(bool& bIsPeriodic) const = 0;
1698
1711 virtual OdResult isPeriodicInV(bool& bIsPeriodic) const = 0;
1712
1722 virtual OdResult getPeriodInU(double& dPeriod) const = 0;
1723
1733 virtual OdResult getPeriodInV(double& dPeriod) const = 0;
1734
1746 virtual OdResult evaluate(double dU, double dV, OdGePoint3d& pos) const = 0;
1747
1761 virtual OdResult evaluate(double dU, double dV, OdGePoint3d& pos, OdGeVector3d& uDeriv, OdGeVector3d& vDeriv) const = 0;
1762
1779 virtual OdResult evaluate(double dU, double dV, OdGePoint3d& pos, OdGeVector3d& uDeriv, OdGeVector3d& vDeriv,
1780 OdGeVector3d& uuDeriv, OdGeVector3d& uvDeriv, OdGeVector3d& vvDeriv) const = 0;
1781
1797 virtual OdResult evaluate(double dU, double dV, int iDerivDegree, OdGePoint3d& point, OdGeVector3dArray& derivatives) const = 0;
1798
1808 virtual OdResult isRational(bool& bIsRational) const = 0;
1809
1823 virtual OdResult isPlanar(bool& bIsPlanar, OdGePoint3d& ptOnSurface, OdGeVector3d& normal) const = 0;
1824
1835 virtual OdResult isPointOnSurface(const OdGePoint3d& point, bool& bOnSurface) const = 0;
1836
1847 virtual OdResult getNormal(double dU, double dV, OdGeVector3d& normal) const = 0;
1848
1856 virtual OdResult getNumberOfSpansInU(int& iSpan) const = 0;
1857
1865 virtual OdResult getNumberOfSpansInV(int& iSpan) const = 0;
1866
1877 virtual OdResult getIsolineAtU(double dU, OdDbCurvePtrArray& lineSegments) const = 0;
1878
1889 virtual OdResult getIsolineAtV(double dV, OdDbCurvePtrArray& lineSegments) const = 0;
1890
1900 virtual OdResult InsertKnot(double dVal, int iUorV) = 0;
1901
1912 virtual OdResult InsertControlPointsAtU(double dU, const OdGePoint3dArray& vCtrlPts, const OdGeDoubleArray& vWeights) = 0;
1913
1924 virtual OdResult InsertControlPointsAtV(double dV, const OdGePoint3dArray& uCtrlPts, const OdGeDoubleArray& uWeights) = 0;
1925
1934 virtual OdResult RemoveControlPointsAtU(int iUDegree) = 0;
1935
1944 virtual OdResult RemoveControlPointsAtV(int iVDegree) = 0;
1945
1959 virtual OdResult rebuild(int iUDegree, int iVDegree, int iNumUCtrlPts, int iNumVCtrlPts, bool bRestore) = 0;
1960
1975 virtual OdResult modifyPositionAndTangent(double dU, double dV, const OdGePoint3d& point, const OdGeVector3d* uDeriv, const OdGeVector3d* vDeriv) = 0;
1976
1986 virtual OdResult getParameterOfPoint(const OdGePoint3d& point, double& dU, double& dV) const = 0;
1987
2006 virtual OdResult getControlPoints(int& iUCount, int& iVCount, OdGePoint3dArray& points) const = 0;
2007
2026 virtual OdResult setControlPoints(int iUCount, int iVCount, const OdGePoint3dArray& points) = 0;
2027
2040 virtual OdResult getControlPointAndWeight(int iUIndex, int iVIndex, OdGePoint3d& point, double& weight, bool& bIsRational) const = 0;
2041
2053 virtual OdResult setControlPointAndWeight(int iUIndex, int iVIndex, const OdGePoint3d& point, double weight) = 0;
2054
2063 virtual OdResult setColorToSubents(OdCmColor const& color) = 0;
2064
2074
2081
2093 OdUInt8 &tiling, OdUInt8 &autoTransform) = 0;
2094
2121 virtual OdResult trimSurface( const OdDbObjectIdArray& toolIds,
2122 const OdDbObjectIdArray& toolCurveIds,
2123 const OdGeVector3dArray& projVectors,
2124 const OdGePoint3d& pickPoint,
2125 const OdGeVector3d& viewVector,
2126 bool bAutoExtend,
2127 bool bAssociativeEnabled) = 0;
2128
2138 virtual OdResult projectOnToEntity( const OdDbEntity* pEntityToProject,
2139 const OdGeVector3d& projectionDirection,
2140 OdDbEntityPtrArray& projectedEntities ) const = 0;
2141
2152 const OdGeIntArray& limitingFlags) = 0;
2153
2154 //FELIX_CHANGE_BEGIN
2155 virtual OdResult rayTestEntities( const OdGePoint3d& rayBasePoint,
2156 const OdGeVector3d& rayDir,
2157 double dRayRadius,
2158 std::vector<OdDbEntityPtr> & i_entities,
2159 OdArray<OdDbSubentId> & o_subEntIds,
2160 std::vector<int> & o_indexentities,
2161 OdGeDoubleArray& parameters ) const = 0;
2162 virtual OdResult rayTestSolids( const OdGePoint3d& rayBasePoint,
2163 const OdGeVector3d& rayDir,
2164 double dRayRadius,
2165 std::vector<OdDb3dSolidPtr> &i_solids,
2166 OdArray<OdDbSubentId> & o_subEntIds,
2167 std::vector<int> & o_indexsolids,
2168 OdGeDoubleArray& parameters ) const = 0;
2169 //FELIX_CHANGE_END
2182 virtual OdResult rayTest( const OdGePoint3d& rayBasePoint,
2183 const OdGeVector3d& rayDir,
2184 double rayRadius,
2185 OdArray<OdDbSubentId> & subEntIds,
2186 OdGeDoubleArray& parameters) const = 0;
2187
2210 const OdGePoint3d& pickPt1,
2211 OdDbSurfacePtr& surf2,
2212 const OdGePoint3d& pickPt2,
2213 double dRadius,
2214 OdDb::FilletTrimMode trimMode,
2215 const OdGeVector3d& projDir) = 0;
2216
2218 const OdArray<OdDb3dProfilePtr>& vProfiles) = 0;
2219
2230 double dExtDist,
2231 OdDbSurface::EdgeExtensionType extOption ) = 0;
2232
2244 OdGePoint3dArray& vertexArray,
2245 OdInt32Array& faceArray,
2246 OdGiFaceData*& faceData ) = 0;
2247
2256
2260 virtual OdResult generateSectionGeometry( SectArgs& sectArgs, OdDbEntity *pEnt, bool* bHasForeground ) = 0;
2261
2269 virtual OdResult getSectionViewInfo(OdDbModeler::OdSectionViewParams& params) const = 0;
2270
2279
2288
2300 virtual OdResult addSubentitySpecialSettings(AcisDataType addedDT, AcisDataTypeArrFirst addedDTFirst, const OdDbSubentId subentId, OdArray<OdUInt32>& retArray, OdUInt32 idx) = 0;
2301
2321 virtual OdResult convertTo(const OdGePoint3dArray &arrVertexes, const OdInt32Array &arrEdges, const OdArray<OdInt32Array>& arrArrFaces, OdGiFaceData &fd,
2322 OdBoolArray &arrFacesColors, OdBoolArray &arrFacesMaterials, OdDbEntity* pEntity) = 0;
2323
2339 virtual OdResult convertTo(const OdArray< OdArray<std::pair<OdUInt64, OdGeNurbCurve3d> > >& aLoopEdges,
2340 const OdArray<OdGeNurbSurface>& aNurbSurface,
2341 const OdArray<OdCmEntityColor>& aColors,
2342 const OdArray < OdDbStub*>& aMaterials,
2343 const OdBoolArray& arrIsFacesColors,
2344 const OdBoolArray& arrFacesMaterials,
2345 OdDbEntity* pEntity) = 0;
2346
2356 virtual bool getFaceMesh(GeMesh::OdGeTrMesh& mesh, OdGsMarker iFace, const wrTriangulationParams& triangulationParams) = 0;
2357
2363 virtual OdResult auditAcisData(OdDbAuditInfo* /*pInfo*/, const OdRxObject* /*pObj*/) { return eNotImplemented; }
2364
2370 virtual void enableAcisAudit(bool bEnable) = 0;
2371};
2372
2378
2384#include "TD_PackPop.h"
2385
2386#endif // _OD_MODELERGEOMETRY_INCLUDED_
OdArray< OdGePoint3d, OdMemoryAllocator< OdGePoint3d > > OdGePoint3dArray
OdArray< OdBool, OdMemoryAllocator< OdBool > > OdBoolArray
Definition BoolArray.h:36
OdSmartPtr< OdDb3dSolid > OdDb3dSolidPtr
Definition Db3dSolid.h:59
OdArray< OdDb3dSolidPtr > OdDb3dSolidPtrArray
Definition Db3dSolid.h:65
OdArray< OdDbEntityPtr > OdDbEntityPtrArray
Definition DbEntity.h:56
OdSmartPtr< OdDbEntity > OdDbEntityPtr
Definition DbEntity.h:51
#define DBENT_EXPORT
Definition DbExport.h:67
OdArray< OdDbCurvePtr > OdDbCurvePtrArray
OdSmartPtr< OdDbRegion > OdDbRegionPtr
Definition DbRegion.h:434
struct MeshFaceterSettings OdDbFaceterSettings
OdArray< OdDbFullSubentPath > OdDbFullSubentPathArray
Definition DbSubentId.h:169
OdSmartPtr< OdDbSurface > OdDbSurfacePtr
Definition DbSurface.h:57
OdArray< OdDbNurbSurfacePtr > OdDbNurbSurfacePtrArray
Definition DbSurface.h:51
#define eNotImplemented
OdArray< OdGeCurve3dPtr > OdGeCurve3dPtrArray
OdArray< double, OdMemoryAllocator< double > > OdGeDoubleArray
OdArray< int, OdMemoryAllocator< int > > OdGeIntArray
Definition GeIntArray.h:35
OdArray< OdGeVector3d, OdMemoryAllocator< OdGeVector3d > > OdGeVector3dArray
OdArray< OdGsMarker, OdMemoryAllocator< OdGsMarker > > OdGsMarkerArray
OdArray< OdDbObjectId, OdClrMemAllocator< OdDbObjectId > > OdDbObjectIdArray
Definition IdArrays.h:53
OdArray< OdInt32, OdMemoryAllocator< OdInt32 > > OdInt32Array
Definition Int32Array.h:34
AcisDataTypeArrFirst
AcisDataType
int AfTypeVer
Definition ModelerDefs.h:29
OdSmartPtr< OdModelerGeometry > OdModelerGeometryPtr
OdArray< OdModelerGeometryPtr > OdModelerGeometryPtrArray
ptrdiff_t OdGsMarker
unsigned int OdUInt32
unsigned char OdUInt8
OdResult
Definition OdResult.h:29
virtual OdResult createSectionObjects(const OdGePlane &sectionPlane, OdDbEntityPtrArray &sectionObjects) 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 &centroid, 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 OdResult getControlPoints(int &iUCount, int &iVCount, OdGePoint3dArray &points) const =0
virtual void transformBy(const OdGeMatrix3d &xfm)=0
virtual bool explode(geomType typeThis, OdDbEntityPtrArray &entitySet) const =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 getParameterOfPoint(const OdGePoint3d &point, double &dU, double &dV) const =0
virtual OdResult auditAcisData(OdDbAuditInfo *, const OdRxObject *)
virtual OdResult generateMesh(const OdBrMesh2dFilter &, OdBrMesh2d &)
virtual OdResult getMassProp(double &volume, OdGePoint3d &centroid, 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 createNetworkSurface(const OdArray< OdDb3dProfilePtr > &uProfiles, const OdArray< OdDb3dProfilePtr > &vProfiles)=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 getIsolineAtV(double dV, OdDbCurvePtrArray &lineSegments) const =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 &parameters) 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 createExtrudedObject(OdDbEntity *pSweepEnt, const OdGeVector3d &directionVec, OdDbSweepOptions &sweepOptions, bool isSolid=true, bool bHistoryEnabled=false)=0
virtual OdResult getArea(double &regionArea) const =0
virtual void * internalSubentPtr(const OdDbSubentId &id) const =0
virtual bool drawSilhouettes(OdGiViewportDraw *pVd)=0
ODRX_DECLARE_MEMBERS(OdModelerGeometry)
virtual OdResult createSculptedSolid(OdDbEntityPtrArray &limitingBodies, const OdGeIntArray &limitingFlags)=0
virtual OdResult convertTo(const OdArray< OdArray< std::pair< OdUInt64, OdGeNurbCurve3d > > > &aLoopEdges, const OdArray< OdGeNurbSurface > &aNurbSurface, const OdArray< OdCmEntityColor > &aColors, const OdArray< OdDbStub * > &aMaterials, const OdBoolArray &arrIsFacesColors, const OdBoolArray &arrFacesMaterials, OdDbEntity *pEntity)=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 &sectArgs, 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 &parameters) 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 OdResult getIsolineAtU(double dU, OdDbCurvePtrArray &lineSegments) const =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 getHlrCurves(OdDbModeler::OdHlrCurvesParams &params)=0
virtual OdResult thicken(double thickness, bool bBothSides, OdDb3dSolidPtr &pSolid) const =0
virtual OdResult getSection(const OdGePlane &plane, OdDbRegionPtr &sectionRegion, 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 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 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 convertTo(const OdGePoint3dArray &arrVertexes, const OdInt32Array &arrEdges, const OdArray< OdInt32Array > &arrArrFaces, OdGiFaceData &fd, OdBoolArray &arrFacesColors, OdBoolArray &arrFacesMaterials, OdDbEntity *pEntity)=0
virtual OdResult setBody(const void *)
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 &parameters) const =0
virtual OdResult setSubentMaterial(const OdDbSubentId &subentId, OdDbObjectId matId)=0
virtual void ClearMaterialAttributes(const OdArray< OdDbSubentId > *aSubents=NULL)=0
virtual OdResult createFrom(const OdDbEntity *pFromEntity, bool bFrom3dSolid)=0
virtual OdResult extendEdges(OdDbFullSubentPathArray &edgesId, double dExtDist, OdDbSurface::EdgeExtensionType extOption)=0
virtual OdResult extrude(const OdDbRegion *pRegion, double height, double taperAngle, bool isSolid=true)=0
virtual OdResult getSectionViewInfo(OdDbModeler::OdSectionViewParams &params) const =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 &regionPlane) const =0
virtual OdResult setMaterialMapperToSubents(OdGeMatrix3d &mx, OdUInt8 &projection, OdUInt8 &tiling, OdUInt8 &autoTransform)=0
virtual OdResult convertToRegion(OdDbEntityPtrArray &regions)=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 createFilletSurface(OdDbSurfacePtr &surf1, const OdGePoint3d &pickPt1, OdDbSurfacePtr &surf2, const OdGePoint3d &pickPt2, double dRadius, OdDb::FilletTrimMode trimMode, const OdGeVector3d &projDir)=0
virtual OdResult setMaterialResolver(const OdMaterialResolver *)
virtual OdResult checkGuideCurves(OdDbEntityPtrArray &guideCurves, bool displayErrorMessages=false)=0
virtual OdResult getNumberOfSpansInV(int &iSpan) const =0
GLenum GLint * params
Definition gles2_ext.h:184
GLuint GLsizei GLsizei GLint GLenum * type
Definition gles2_ext.h:274
GLint GLenum GLsizei GLsizei height
Definition gles2_ext.h:110
FilletTrimMode
Definition DbDatabase.h:382
Intersect
Definition OdaDefs.h:481
Planarity
Definition DbEntity.h:74