CFx SDK Documentation  2022 SP0
Ge.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2017, 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 Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2017 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 
26 
27 #ifndef OD_GEGBLGE_H
28 #define OD_GEGBLGE_H
30 #include "TD_PackPush.h"
31 
32 #include "Ge/GeExport.h"
33 #include "Ge/GeLibVersion.h"
34 
42 struct OdGe
43 {
45 
46  enum
47  {
49  eBad
50  };
51 
52  enum EntityId
53  {
135 
138 
148  kDummy9
149  };
150 
152  {
153  kAcisEntity = 0, // External Entity is an ACIS entity
154  kGe3dCurveEntity = 1, // External Entity is an OdGeCurve3d* entity
155  kGe3dSurfaceEntity = 2, // External Entity is an OdGeSurface3d* entity
156  kExternalEntityUndefined, // External Entity is undefined.
157  kBimEntity
158  };
160  {
161  kInside, // Point is inside the boundary.
162  kOutside, // Point is outside the boundary.
163  kOnBoundary // Point on the boundary.
164  };
166  {
167  kUninit = 0x00, // Uninit
168  kOpen = 0x01, // Open
169  kClosed = 0x02, // Closed
170  kPeriodic = 0x04, // Periodic
171  kRational = 0x08, // Rational
172  kNoPoles = 0x10, // No Poles
173  kPoleAtMin = 0x20, // Pole at Min
174  kPoleAtMax = 0x40, // Pole at Max
175  kPoleAtBoth = 0x80 // Pole at Both
176  };
177 
181  kExtend
182  };
184  {
185  kNotDefined = 1 << 0,
186  kUnknown = 1 << 1,
187  kLeftRight = 1 << 2,
188  kRightLeft = 1 << 3,
189  kLeftLeft = 1 << 4,
190  kRightRight = 1 << 5,
191  kPointLeft = 1 << 6,
192  kPointRight = 1 << 7,
193  kLeftOverlap = 1 << 8,
194  kOverlapLeft = 1 << 9,
195  kRightOverlap = 1 << 10,
196  kOverlapRight = 1 << 11,
197  kOverlapStart = 1 << 12,
198  kOverlapEnd = 1 << 13,
199  kOverlapOverlap = 1 << 14
200  };
201 
203  {
204  kUnion, // Union
205  kSubtract, // Subtraction
206  kCommon // Intersection
207  };
208  enum ClipError
209  {
210  eOk, // OK
211  eInvalidClipBoundary, // Invalid Clip Boundary
212  eNotInitialized // Clip Boundary was not Initialized
213  };
214 
216  {
217  kInvalid, // An error occurred, probably due to invalid initialization of clipping object.
218  kAllSegmentsInside, // All segments are inside the clip boundary.
219  kSegmentsIntersect, // At least one segment crosses the clip boundary.
220  kAllSegmentsOutsideZeroWinds, // The clip boundary is outside, and not encircled by, the clip boundary.
221  kAllSegmentsOutsideOddWinds, // The clip boundary is inside, and encircled by, the clip boundary.
222  kAllSegmentsOutsideEvenWinds // The clip boundary is outside, but, encircled by, the clip boundary.
223  };
224 
228  {
229  kOk, // OK
230  k0This, // This object is 0.
231  k0Arg1, // Argument 1 is 0.
232  k0Arg2, // Argument 2 is 0.
233  kPerpendicularArg1Arg2, // Arguments 1 and 2 are perpendicular to each other.
234  kEqualArg1Arg2, // Arguments 1 and 2 are equal.
235  kEqualArg1Arg3, // Arguments 1 and 3 are equal.
236  kEqualArg2Arg3, // Arguments 2 and 3 are equal.
237  kLinearlyDependentArg1Arg2Arg3, // Arguments 1, 2, and 3 are linearly dependent.
238  kArg1TooBig, // Argument 1 is too big.
239  kArg1OnThis, // Argument 1 is on this object.
240  kArg1InsideThis, // Argument 1 is inside this object.
241  kNonCoplanarGeometry, // Geometry is not coplanar.
242  kDegenerateGeometry, // Geometry is degenerate.
243  kSingularPoint // Geometry is one point.
244  };
245 
246  enum csiConfig
247  {
248  kXUnknown, // Unknown.
249  kXOut, // Transverse -- Curve neighborhood is outside this surface.
250  kXIn, // Transverse -- Curve neighborhood is inside this surface.
251  kXTanOut, // Tangent -- Curve neighborhood is outside this surface.
252  kXTanIn, // Tangent -- Curve neighborhood is inside this surface.
253  kXCoincident, // Non-zero length -- Point is on the intersection boundary.
254  kXCoincidentUnbounded // Non-zero length -- Point is on an arbitrary *point* on an unbounded intersection.
255  };
256 
257  enum ssiType
258  {
259  kSSITransverse, // Non-tangent intersection.
260  kSSITangent, // Tangent intersection with surface normals codirectional at any point within the component.
261  kSSIAntiTangent // Tangent intersection with surface normals antidirectional at any point within the component.
262  };
263 
264  enum ssiConfig
265  {
266  kSSIUnknown, // Unknown.
267  kSSIOut, // Neighborhood is outside this surface.
268  kSSIIn, // Neighborhood is inside this surface.
269  kSSICoincident // Non-zero area intersection.
270  };
271 
273  {
274  kXXOk, // OK
275  kXXIndexOutOfRange, // Index out of range
276  kXXWrongDimensionAtIndex, // Wrong dimension at index.
277  kXXUnknown // Unknown.
278  };
279 
280 
282  kChord = 0x0, //Chord parametrization
283  kSqrtChord = 0x1, //Chord square root parametrization
284  kUniform = 0x2, //Uniform parametrization
285  kCustomParameterization = 0xF, //Custom parametrization
286  kNotDefinedKnotParam = 0x10 //Knot parametrization isn't defined
287  };
288 };
289 
297 
306 
307 //FELIX_CHANGE_BEGIN
308 /*
309 #define DECLARE_GE_RTTI() \
310  virtual bool isKindOf (OdGe::EntityId entType) const;\
311  virtual OdGe::EntityId type() const
312 */
313 #define DECLARE_GE_RTTI() \
314  virtual bool isKindOf (OdGe::EntityId entType) const;\
315  virtual OdGe::EntityId type() const;\
316  friend class CFxGeExtension;
317 
320 //FELIX_CHANGE_END
321 
322 #define DEFINE_GE_RTTI(Class,Parent,TYPE) \
323  bool Class::isKindOf(OdGe::EntityId entType) const\
324  {\
325  if ( entType == OdGe::TYPE ) return true;\
326  return Parent::isKindOf( entType );\
327  }\
328  OdGe::EntityId Class::type() const { return OdGe::TYPE; }
329 
331 
332 #include "TD_PackPop.h"
333 
334 #endif // AC_GEGBLGE_H
335 
GE_TOOLKIT_EXPORT void EnableGeProtection(bool bVal)
OdGe::ErrorCondition OdGeError
Definition: Ge.h:296
OdGe::OdGeKnotParameterization OdGeKnotParameterization
Definition: Ge.h:305
OdGe::OdGeIntersectError OdGeIntersectError
Definition: Ge.h:304
GE_TOOLKIT_EXPORT void odgeHeapCleanup()
GE_TOOLKIT_EXPORT bool IsGeProtectionEnabled()
#define GE_TOOLKIT_EXPORT
Definition: GeExport.h:49
Definition: Ge.h:43
static const OdGeLibVersion gLibVersion
Definition: Ge.h:44
OdGeXConfig
Definition: Ge.h:184
@ kRightRight
Definition: Ge.h:190
@ kOverlapOverlap
Definition: Ge.h:199
@ kRightLeft
Definition: Ge.h:188
@ kPointRight
Definition: Ge.h:192
@ kUnknown
Definition: Ge.h:186
@ kNotDefined
Definition: Ge.h:185
@ kPointLeft
Definition: Ge.h:191
@ kOverlapEnd
Definition: Ge.h:198
@ kRightOverlap
Definition: Ge.h:195
@ kOverlapLeft
Definition: Ge.h:194
@ kLeftLeft
Definition: Ge.h:189
@ kLeftRight
Definition: Ge.h:187
@ kLeftOverlap
Definition: Ge.h:193
@ kOverlapStart
Definition: Ge.h:197
@ kOverlapRight
Definition: Ge.h:196
csiConfig
Definition: Ge.h:247
@ kXOut
Definition: Ge.h:249
@ kXIn
Definition: Ge.h:250
@ kXTanOut
Definition: Ge.h:251
@ kXUnknown
Definition: Ge.h:248
@ kXCoincidentUnbounded
Definition: Ge.h:254
@ kXTanIn
Definition: Ge.h:252
@ kXCoincident
Definition: Ge.h:253
ExternalEntityKind
Definition: Ge.h:152
@ kExternalEntityUndefined
Definition: Ge.h:156
@ kBimEntity
Definition: Ge.h:157
@ kGe3dSurfaceEntity
Definition: Ge.h:155
@ kGe3dCurveEntity
Definition: Ge.h:154
@ kAcisEntity
Definition: Ge.h:153
ErrorCondition
Definition: Ge.h:228
@ kOk
Definition: Ge.h:229
@ kSingularPoint
Definition: Ge.h:243
@ kPerpendicularArg1Arg2
Definition: Ge.h:233
@ kArg1TooBig
Definition: Ge.h:238
@ kEqualArg1Arg2
Definition: Ge.h:234
@ kLinearlyDependentArg1Arg2Arg3
Definition: Ge.h:237
@ k0Arg1
Definition: Ge.h:231
@ kEqualArg1Arg3
Definition: Ge.h:235
@ k0This
Definition: Ge.h:230
@ kDegenerateGeometry
Definition: Ge.h:242
@ kArg1InsideThis
Definition: Ge.h:240
@ kArg1OnThis
Definition: Ge.h:239
@ kNonCoplanarGeometry
Definition: Ge.h:241
@ k0Arg2
Definition: Ge.h:232
@ kEqualArg2Arg3
Definition: Ge.h:236
OdGeIntersectError
Definition: Ge.h:273
@ kXXWrongDimensionAtIndex
Definition: Ge.h:276
@ kXXUnknown
Definition: Ge.h:277
@ kXXIndexOutOfRange
Definition: Ge.h:275
@ kXXOk
Definition: Ge.h:274
@ eGood
Definition: Ge.h:48
@ eBad
Definition: Ge.h:49
EntityId
Definition: Ge.h:53
@ kPolyline3d
Definition: Ge.h:94
@ kPointEnt2d
Definition: Ge.h:56
@ kPosition2d
Definition: Ge.h:58
@ kConic3d
Definition: Ge.h:67
@ kCurveCurveInt2d
Definition: Ge.h:113
@ kTrimmedSurface
Definition: Ge.h:104
@ kObject
Definition: Ge.h:121
@ kDummy6
Definition: Ge.h:145
@ kCompositeCrv2d
Definition: Ge.h:100
@ kEnvelope2d
Definition: Ge.h:106
@ kSurfaceCurve3dTo2d
Definition: Ge.h:111
@ kEllipArc2d
Definition: Ge.h:70
@ kPosition3d
Definition: Ge.h:59
@ kEntity3d
Definition: Ge.h:55
@ kSurface
Definition: Ge.h:82
@ kCircArc2d
Definition: Ge.h:64
@ kLinearEnt2d
Definition: Ge.h:74
@ kDummy9
Definition: Ge.h:148
@ kExternalSurface
Definition: Ge.h:102
@ kCone
Definition: Ge.h:86
@ kRevolvedSurface
Definition: Ge.h:139
@ kOffsetSurface
Definition: Ge.h:105
@ kFitData3d
Definition: Ge.h:122
@ kBoundBlock2d
Definition: Ge.h:115
@ kBezierCurve3d
Definition: Ge.h:120
@ kCurveSampleData
Definition: Ge.h:126
@ kEllipCone
Definition: Ge.h:127
@ kDSpline2d
Definition: Ge.h:91
@ kRay3d
Definition: Ge.h:81
@ kAugPolyline3d
Definition: Ge.h:95
@ kCompositeCrv3d
Definition: Ge.h:101
@ kPlanarEnt
Definition: Ge.h:78
@ kDummy7
Definition: Ge.h:146
@ kDummy5
Definition: Ge.h:144
@ kSphere
Definition: Ge.h:83
@ kSplineEnt3d
Definition: Ge.h:93
@ kBoundedPlane
Definition: Ge.h:63
@ kExternalCurve2d
Definition: Ge.h:109
@ kExternalObject
Definition: Ge.h:131
@ kEllipArc3d
Definition: Ge.h:71
@ kLine2d
Definition: Ge.h:72
@ kSurfaceSurfaceInt
Definition: Ge.h:133
@ kTrimmedCrv2d
Definition: Ge.h:99
@ kAugPolyline2d
Definition: Ge.h:89
@ kNurbCurve3d
Definition: Ge.h:96
@ kCylinder
Definition: Ge.h:84
@ kOffsetCurve2d
Definition: Ge.h:117
@ kRay2d
Definition: Ge.h:80
@ kCurveCurveInt3d
Definition: Ge.h:114
@ kSplineEnt2d
Definition: Ge.h:87
@ kHatch
Definition: Ge.h:123
@ kEntity2d
Definition: Ge.h:54
@ kLine3d
Definition: Ge.h:73
@ kDummy2
Definition: Ge.h:141
@ kBoundBlock3d
Definition: Ge.h:116
@ kLineSeg2d
Definition: Ge.h:76
@ kCurve3d
Definition: Ge.h:69
@ kNurbSurface
Definition: Ge.h:103
@ kPolyline2d
Definition: Ge.h:88
@ kDummy8
Definition: Ge.h:147
@ kNurbCurve2d
Definition: Ge.h:90
@ kCurveBoundedSurface
Definition: Ge.h:107
@ kIntervalBoundBlock
Definition: Ge.h:129
@ kTrimmedCurve2d
Definition: Ge.h:124
@ kClipBoundary2d
Definition: Ge.h:130
@ kExternalCurve3d
Definition: Ge.h:108
@ kPolynomCurve3d
Definition: Ge.h:119
@ kEllipCylinder
Definition: Ge.h:128
@ kPointOnCurve2d
Definition: Ge.h:60
@ kTrimmedCurve3d
Definition: Ge.h:125
@ kPlane
Definition: Ge.h:79
@ kCubicSplineCurve3d
Definition: Ge.h:98
@ kCircArc3d
Definition: Ge.h:65
@ kConic2d
Definition: Ge.h:66
@ kPointOnSurface
Definition: Ge.h:62
@ kPointEnt3d
Definition: Ge.h:57
@ kDSpline3d
Definition: Ge.h:97
@ kDummy1
Definition: Ge.h:140
@ kCurveSurfaceInt
Definition: Ge.h:132
@ kExternalBoundedSurface
Definition: Ge.h:112
@ kLineSeg3d
Definition: Ge.h:77
@ kDummy3
Definition: Ge.h:142
@ kSpunSurface
Definition: Ge.h:136
@ kDummy4
Definition: Ge.h:143
@ kCurve2d
Definition: Ge.h:68
@ kPointOnCurve3d
Definition: Ge.h:61
@ kLinearEnt3d
Definition: Ge.h:75
@ kSurfaceCurve2dTo3d
Definition: Ge.h:110
@ kHelix
Definition: Ge.h:134
@ kOffsetCurve3d
Definition: Ge.h:118
@ kCubicSplineCurve2d
Definition: Ge.h:92
@ kSegmentChain2d
Definition: Ge.h:137
@ kTorus
Definition: Ge.h:85
BooleanType
Definition: Ge.h:203
@ kCommon
Definition: Ge.h:206
@ kUnion
Definition: Ge.h:204
@ kSubtract
Definition: Ge.h:205
ClipCondition
Definition: Ge.h:216
@ kAllSegmentsOutsideOddWinds
Definition: Ge.h:221
@ kAllSegmentsOutsideZeroWinds
Definition: Ge.h:220
@ kInvalid
Definition: Ge.h:217
@ kAllSegmentsInside
Definition: Ge.h:218
@ kSegmentsIntersect
Definition: Ge.h:219
@ kAllSegmentsOutsideEvenWinds
Definition: Ge.h:222
PointContainment
Definition: Ge.h:160
@ kOutside
Definition: Ge.h:162
@ kOnBoundary
Definition: Ge.h:163
@ kInside
Definition: Ge.h:161
ssiType
Definition: Ge.h:258
@ kSSIAntiTangent
Definition: Ge.h:261
@ kSSITangent
Definition: Ge.h:260
@ kSSITransverse
Definition: Ge.h:259
ssiConfig
Definition: Ge.h:265
@ kSSIOut
Definition: Ge.h:267
@ kSSIUnknown
Definition: Ge.h:266
@ kSSICoincident
Definition: Ge.h:269
@ kSSIIn
Definition: Ge.h:268
OffsetCrvExtType
Definition: Ge.h:178
@ kExtend
Definition: Ge.h:181
@ kChamfer
Definition: Ge.h:180
@ kFillet
Definition: Ge.h:179
NurbSurfaceProperties
Definition: Ge.h:166
@ kOpen
Definition: Ge.h:168
@ kRational
Definition: Ge.h:171
@ kNoPoles
Definition: Ge.h:172
@ kPoleAtBoth
Definition: Ge.h:175
@ kUninit
Definition: Ge.h:167
@ kPoleAtMax
Definition: Ge.h:174
@ kPoleAtMin
Definition: Ge.h:173
@ kPeriodic
Definition: Ge.h:170
@ kClosed
Definition: Ge.h:169
ClipError
Definition: Ge.h:209
@ eNotInitialized
Definition: Ge.h:212
@ eOk
Definition: Ge.h:210
@ eInvalidClipBoundary
Definition: Ge.h:211
OdGeKnotParameterization
Definition: Ge.h:281
@ kNotDefinedKnotParam
Definition: Ge.h:286
@ kCustomParameterization
Definition: Ge.h:285
@ kUniform
Definition: Ge.h:284
@ kChord
Definition: Ge.h:282
@ kSqrtChord
Definition: Ge.h:283