CFx SDK Documentation  2023 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 
149  kDummy9
150  };
151 
153  {
154  kAcisEntity = 0, // External Entity is an ACIS entity
155  kGe3dCurveEntity = 1, // External Entity is an OdGeCurve3d* entity
156  kGe3dSurfaceEntity = 2, // External Entity is an OdGeSurface3d* entity
157  kExternalEntityUndefined, // External Entity is undefined.
158  kBimEntity
159  };
161  {
162  kInside, // Point is inside the boundary.
163  kOutside, // Point is outside the boundary.
164  kOnBoundary // Point on the boundary.
165  };
167  {
168  kUninit = 0x00, // Uninit
169  kOpen = 0x01, // Open
170  kClosed = 0x02, // Closed
171  kPeriodic = 0x04, // Periodic
172  kRational = 0x08, // Rational
173  kNoPoles = 0x10, // No Poles
174  kPoleAtMin = 0x20, // Pole at Min
175  kPoleAtMax = 0x40, // Pole at Max
176  kPoleAtBoth = 0x80 // Pole at Both
177  };
178 
182  kExtend
183  };
185  {
186  kNotDefined = 1 << 0,
187  kUnknown = 1 << 1,
188  kLeftRight = 1 << 2,
189  kRightLeft = 1 << 3,
190  kLeftLeft = 1 << 4,
191  kRightRight = 1 << 5,
192  kPointLeft = 1 << 6,
193  kPointRight = 1 << 7,
194  kLeftOverlap = 1 << 8,
195  kOverlapLeft = 1 << 9,
196  kRightOverlap = 1 << 10,
197  kOverlapRight = 1 << 11,
198  kOverlapStart = 1 << 12,
199  kOverlapEnd = 1 << 13,
200  kOverlapOverlap = 1 << 14
201  };
202 
204  {
205  kUnion, // Union
206  kSubtract, // Subtraction
207  kCommon // Intersection
208  };
209  enum ClipError
210  {
211  eOk, // OK
212  eInvalidClipBoundary, // Invalid Clip Boundary
213  eNotInitialized // Clip Boundary was not Initialized
214  };
215 
217  {
218  kInvalid, // An error occurred, probably due to invalid initialization of clipping object.
219  kAllSegmentsInside, // All segments are inside the clip boundary.
220  kSegmentsIntersect, // At least one segment crosses the clip boundary.
221  kAllSegmentsOutsideZeroWinds, // The clip boundary is outside, and not encircled by, the clip boundary.
222  kAllSegmentsOutsideOddWinds, // The clip boundary is inside, and encircled by, the clip boundary.
223  kAllSegmentsOutsideEvenWinds // The clip boundary is outside, but, encircled by, the clip boundary.
224  };
225 
229  {
230  kOk, // OK
231  k0This, // This object is 0.
232  k0Arg1, // Argument 1 is 0.
233  k0Arg2, // Argument 2 is 0.
234  kPerpendicularArg1Arg2, // Arguments 1 and 2 are perpendicular to each other.
235  kEqualArg1Arg2, // Arguments 1 and 2 are equal.
236  kEqualArg1Arg3, // Arguments 1 and 3 are equal.
237  kEqualArg2Arg3, // Arguments 2 and 3 are equal.
238  kLinearlyDependentArg1Arg2Arg3, // Arguments 1, 2, and 3 are linearly dependent.
239  kArg1TooBig, // Argument 1 is too big.
240  kArg1OnThis, // Argument 1 is on this object.
241  kArg1InsideThis, // Argument 1 is inside this object.
242  kNonCoplanarGeometry, // Geometry is not coplanar.
243  kDegenerateGeometry, // Geometry is degenerate.
244  kSingularPoint // Geometry is one point.
245  };
246 
247  enum csiConfig
248  {
249  kXUnknown, // Unknown.
250  kXOut, // Transverse -- Curve neighborhood is outside this surface.
251  kXIn, // Transverse -- Curve neighborhood is inside this surface.
252  kXTanOut, // Tangent -- Curve neighborhood is outside this surface.
253  kXTanIn, // Tangent -- Curve neighborhood is inside this surface.
254  kXCoincident, // Non-zero length -- Point is on the intersection boundary.
255  kXCoincidentUnbounded // Non-zero length -- Point is on an arbitrary *point* on an unbounded intersection.
256  };
257 
258  enum ssiType
259  {
260  kSSITransverse, // Non-tangent intersection.
261  kSSITangent, // Tangent intersection with surface normals codirectional at any point within the component.
262  kSSIAntiTangent // Tangent intersection with surface normals antidirectional at any point within the component.
263  };
264 
265  enum ssiConfig
266  {
267  kSSIUnknown, // Unknown.
268  kSSIOut, // Neighborhood is outside this surface.
269  kSSIIn, // Neighborhood is inside this surface.
270  kSSICoincident // Non-zero area intersection.
271  };
272 
274  {
275  kXXOk, // OK
276  kXXIndexOutOfRange, // Index out of range
277  kXXWrongDimensionAtIndex, // Wrong dimension at index.
278  kXXUnknown // Unknown.
279  };
280 
281 
283  kChord = 0x0, //Chord parametrization
284  kSqrtChord = 0x1, //Chord square root parametrization
285  kUniform = 0x2, //Uniform parametrization
286  kCustomParameterization = 0xF, //Custom parametrization
287  kNotDefinedKnotParam = 0x10 //Knot parametrization isn't defined
288  };
289 };
290 
298 
307 
308 //FELIX_CHANGE_BEGIN
309 /*
310 #define DECLARE_GE_RTTI() \
311  virtual bool isKindOf (OdGe::EntityId entType) const;\
312  virtual OdGe::EntityId type() const
313 */
314 #define DECLARE_GE_RTTI() \
315  virtual bool isKindOf (OdGe::EntityId entType) const;\
316  virtual OdGe::EntityId type() const;\
317  friend class CFxGeExtension;
318 
321 //FELIX_CHANGE_END
322 
323 #define DEFINE_GE_RTTI(Class,Parent,TYPE) \
324  bool Class::isKindOf(OdGe::EntityId entType) const\
325  {\
326  if ( entType == OdGe::TYPE ) return true;\
327  return Parent::isKindOf( entType );\
328  }\
329  OdGe::EntityId Class::type() const { return OdGe::TYPE; }
330 
332 
333 #include "TD_PackPop.h"
334 
335 #endif // AC_GEGBLGE_H
336 
GE_TOOLKIT_EXPORT void EnableGeProtection(bool bVal)
OdGe::ErrorCondition OdGeError
Definition: Ge.h:297
OdGe::OdGeKnotParameterization OdGeKnotParameterization
Definition: Ge.h:306
OdGe::OdGeIntersectError OdGeIntersectError
Definition: Ge.h:305
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:185
@ kRightRight
Definition: Ge.h:191
@ kOverlapOverlap
Definition: Ge.h:200
@ kRightLeft
Definition: Ge.h:189
@ kPointRight
Definition: Ge.h:193
@ kUnknown
Definition: Ge.h:187
@ kNotDefined
Definition: Ge.h:186
@ kPointLeft
Definition: Ge.h:192
@ kOverlapEnd
Definition: Ge.h:199
@ kRightOverlap
Definition: Ge.h:196
@ kOverlapLeft
Definition: Ge.h:195
@ kLeftLeft
Definition: Ge.h:190
@ kLeftRight
Definition: Ge.h:188
@ kLeftOverlap
Definition: Ge.h:194
@ kOverlapStart
Definition: Ge.h:198
@ kOverlapRight
Definition: Ge.h:197
csiConfig
Definition: Ge.h:248
@ kXOut
Definition: Ge.h:250
@ kXIn
Definition: Ge.h:251
@ kXTanOut
Definition: Ge.h:252
@ kXUnknown
Definition: Ge.h:249
@ kXCoincidentUnbounded
Definition: Ge.h:255
@ kXTanIn
Definition: Ge.h:253
@ kXCoincident
Definition: Ge.h:254
ExternalEntityKind
Definition: Ge.h:153
@ kExternalEntityUndefined
Definition: Ge.h:157
@ kBimEntity
Definition: Ge.h:158
@ kGe3dSurfaceEntity
Definition: Ge.h:156
@ kGe3dCurveEntity
Definition: Ge.h:155
@ kAcisEntity
Definition: Ge.h:154
ErrorCondition
Definition: Ge.h:229
@ kOk
Definition: Ge.h:230
@ kSingularPoint
Definition: Ge.h:244
@ kPerpendicularArg1Arg2
Definition: Ge.h:234
@ kArg1TooBig
Definition: Ge.h:239
@ kEqualArg1Arg2
Definition: Ge.h:235
@ kLinearlyDependentArg1Arg2Arg3
Definition: Ge.h:238
@ k0Arg1
Definition: Ge.h:232
@ kEqualArg1Arg3
Definition: Ge.h:236
@ k0This
Definition: Ge.h:231
@ kDegenerateGeometry
Definition: Ge.h:243
@ kArg1InsideThis
Definition: Ge.h:241
@ kArg1OnThis
Definition: Ge.h:240
@ kNonCoplanarGeometry
Definition: Ge.h:242
@ k0Arg2
Definition: Ge.h:233
@ kEqualArg2Arg3
Definition: Ge.h:237
OdGeIntersectError
Definition: Ge.h:274
@ kXXWrongDimensionAtIndex
Definition: Ge.h:277
@ kXXUnknown
Definition: Ge.h:278
@ kXXIndexOutOfRange
Definition: Ge.h:276
@ kXXOk
Definition: Ge.h:275
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:146
@ 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:149
@ 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:147
@ kDummy5
Definition: Ge.h:145
@ 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
@ kRuled
Definition: Ge.h:140
@ 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:142
@ 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:148
@ 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:141
@ kCurveSurfaceInt
Definition: Ge.h:132
@ kExternalBoundedSurface
Definition: Ge.h:112
@ kLineSeg3d
Definition: Ge.h:77
@ kDummy3
Definition: Ge.h:143
@ kSpunSurface
Definition: Ge.h:136
@ kDummy4
Definition: Ge.h:144
@ 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:204
@ kCommon
Definition: Ge.h:207
@ kUnion
Definition: Ge.h:205
@ kSubtract
Definition: Ge.h:206
@ eGood
Definition: Ge.h:48
@ eBad
Definition: Ge.h:49
ClipCondition
Definition: Ge.h:217
@ kAllSegmentsOutsideOddWinds
Definition: Ge.h:222
@ kAllSegmentsOutsideZeroWinds
Definition: Ge.h:221
@ kInvalid
Definition: Ge.h:218
@ kAllSegmentsInside
Definition: Ge.h:219
@ kSegmentsIntersect
Definition: Ge.h:220
@ kAllSegmentsOutsideEvenWinds
Definition: Ge.h:223
PointContainment
Definition: Ge.h:161
@ kOutside
Definition: Ge.h:163
@ kOnBoundary
Definition: Ge.h:164
@ kInside
Definition: Ge.h:162
ssiType
Definition: Ge.h:259
@ kSSIAntiTangent
Definition: Ge.h:262
@ kSSITangent
Definition: Ge.h:261
@ kSSITransverse
Definition: Ge.h:260
ssiConfig
Definition: Ge.h:266
@ kSSIOut
Definition: Ge.h:268
@ kSSIUnknown
Definition: Ge.h:267
@ kSSICoincident
Definition: Ge.h:270
@ kSSIIn
Definition: Ge.h:269
OffsetCrvExtType
Definition: Ge.h:179
@ kExtend
Definition: Ge.h:182
@ kChamfer
Definition: Ge.h:181
@ kFillet
Definition: Ge.h:180
NurbSurfaceProperties
Definition: Ge.h:167
@ kOpen
Definition: Ge.h:169
@ kRational
Definition: Ge.h:172
@ kNoPoles
Definition: Ge.h:173
@ kPoleAtBoth
Definition: Ge.h:176
@ kUninit
Definition: Ge.h:168
@ kPoleAtMax
Definition: Ge.h:175
@ kPoleAtMin
Definition: Ge.h:174
@ kPeriodic
Definition: Ge.h:171
@ kClosed
Definition: Ge.h:170
ClipError
Definition: Ge.h:210
@ eNotInitialized
Definition: Ge.h:213
@ eOk
Definition: Ge.h:211
@ eInvalidClipBoundary
Definition: Ge.h:212
OdGeKnotParameterization
Definition: Ge.h:282
@ kNotDefinedKnotParam
Definition: Ge.h:287
@ kCustomParameterization
Definition: Ge.h:286
@ kUniform
Definition: Ge.h:285
@ kChord
Definition: Ge.h:283
@ kSqrtChord
Definition: Ge.h:284