CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
IfcEntity.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#ifndef _IFC_INSTANCE_H_
25#define _IFC_INSTANCE_H_
26
27#include "IfcCommon.h"
28#include "IfcBuildOptions.h"
29#include "IfcEntityTypes.h"
30#include "IfcAttributesEnum.h"
31#include "daiApplicationInstance.h"
32#include "daiEntity.h"
33
34#include "Ge/GePoint2d.h"
35#include "Ge/GePoint3d.h"
36#include "Ge/GeVector2d.h"
37#include "Ge/GeVector3d.h"
38#include "Ge/GeMatrix2d.h"
39#include "Ge/GeMatrix3d.h"
40#include "CmColorBase.h"
41
45namespace OdIfc {
46
75
76 class OdIfcCompound;
77
82
86 class IFCCORE_EXPORT OdIfcInstance : public OdDAI::ApplicationInstance
87 {
88 public:
89
90 //DOM-IGNORE-BEGIN
92 //DOM-IGNORE-END
93
98
105
111 virtual bool isKindOf(OdIfcEntityType entityType) const;
112
118 bool isInstanceOf(OdIfcEntityType entityType) const;
119
124 virtual OdIfcEntityType type() const;
125
134 using OdDAI::ApplicationInstance::getAttr;
135
144 virtual OdRxValue getAttr(const OdIfcAttribute attrDef) const;
145
151 virtual bool testAttr(const char * explicitAttrName) const;
152
158 virtual bool testAttr(const OdIfcAttribute explicitAttrDef) const;
159
164 virtual void unsetAttr(const char * explicitAttrName);
165
170 virtual void unsetAttr(const OdIfcAttribute explicitAttrDef);
171
178 virtual bool putAttr(const char * explicitAttrName, const OdRxValue &val);
179
186 virtual bool putAttr(const OdIfcAttribute explicitAttrDef, const OdRxValue &val);
187
193
199 void resolve(IfcOpResult resolved, void *resPtr)
200 {
202 ((resolved == kUnresolved || resolved == kResVisited) && !resPtr)
203 || resPtr);
205 m_resPtr = resPtr;
206 };
207
211 void unresolve();
212
222 static const OdGePoint3d* asPoint3d(const OdIfcInstance *inst) {
223 if (inst->m_resolved == kResPoint3d || inst->m_resolved == kResPoint2d)
224 return reinterpret_cast<OdGePoint3d*>(inst->m_resPtr);
225 ODA_ASSERT(0);
226 return nullptr;
227 };
228
238 static const OdGePoint2d* asPoint2d(const OdIfcInstance *inst) {
239 if (inst->m_resolved == kResPoint2d || inst->m_resolved == kResPoint3d)
240 return reinterpret_cast<OdGePoint2d*>(inst->m_resPtr);
241 ODA_ASSERT(0);
242 return nullptr;
243 };
244
254 static const OdGeVector3d* asVector3d(const OdIfcInstance *inst) {
255 if (inst->m_resolved == kResVector3d || inst->m_resolved == kResVector2d)
256 return reinterpret_cast<OdGeVector3d*>(inst->m_resPtr);
257 ODA_ASSERT(0);
258 return nullptr;
259 };
260
270 static const OdGeVector2d* asVector2d(const OdIfcInstance *inst) {
271 if (inst->m_resolved == kResVector2d || inst->m_resolved == kResVector3d)
272 return reinterpret_cast<OdGeVector2d*>(inst->m_resPtr);
273 ODA_ASSERT(0);
274 return nullptr;
275 };
276
285 static const OdGeMatrix2d* asMatrix2d(const OdIfcInstance *inst) {
286 if (inst->m_resolved == kResMatrix2d)
287 return reinterpret_cast<OdGeMatrix2d*>(inst->m_resPtr);
288 ODA_ASSERT(0);
289 return nullptr;
290 };
291
300 static const OdGeMatrix3d* asMatrix3d(const OdIfcInstance *inst) {
301 if (inst->m_resolved == kResMatrix3d)
302 return reinterpret_cast<OdGeMatrix3d*>(inst->m_resPtr);
304 return nullptr;
305 };
306
316
325 static const OdCmEntityColor* asRgbColor(const OdIfcInstance *inst) {
326 if (inst->m_resolved == kRgbColor)
327 return reinterpret_cast<OdCmEntityColor*>(inst->m_resPtr);
328 ODA_ASSERT(0);
329 return nullptr;
330 }
331
336 virtual void setGsNode(OdGsCache* pGsNode);
337
342 virtual OdGsCache* gsNode() const;
343
350
356 virtual bool subWorldDraw(OdGiWorldDraw * wd) const;
357
364 virtual OdDbStub* ownerId() const;
365
366 using OdDAI::ApplicationInstance::isKindOf;
367
368//DOM-IGNORE-BEGIN
369 protected:
370
371 void *m_resPtr;
373
374 private:
375
376 void* asCustom() const { return m_resPtr; }
377
378 friend class OdIfcCompound;
379//DOM-IGNORE-END
380 };
381
383
384} //namespace OdIfc
385
386#endif // _IFC_INSTANCE_H_
#define ODA_ASSERT_ONCE(exp)
Definition DebugStuff.h:73
#define ODA_ASSERT(exp)
Definition DebugStuff.h:57
#define IFCCORE_EXPORT
#define SMARTPTR(classname)
Definition IfcCommon.h:33
unsigned int OdUInt32
static const OdGeMatrix3d * asMatrix3d(const OdIfcInstance *inst)
Definition IfcEntity.h:300
static const OdGeMatrix2d * asMatrix2d(const OdIfcInstance *inst)
Definition IfcEntity.h:285
virtual bool subWorldDraw(OdGiWorldDraw *wd) const
IfcOpResult m_resolved
Definition IfcEntity.h:372
static OdIfcCompoundPtr asCompound(OdSmartPtr< OdIfcInstance > inst)
virtual bool putAttr(const OdIfcAttribute explicitAttrDef, const OdRxValue &val)
virtual bool isKindOf(OdIfcEntityType entityType) const
virtual OdDbStub * ownerId() const
static const OdGeVector3d * asVector3d(const OdIfcInstance *inst)
Definition IfcEntity.h:254
virtual void unsetAttr(const OdIfcAttribute explicitAttrDef)
void resolve(IfcOpResult resolved, void *resPtr)
Definition IfcEntity.h:199
virtual OdGsCache * gsNode() const
static const OdGePoint2d * asPoint2d(const OdIfcInstance *inst)
Definition IfcEntity.h:238
virtual OdIfcEntityType type() const
virtual void unsetAttr(const char *explicitAttrName)
virtual OdUInt32 subSetAttributes(OdGiDrawableTraits *traits) const
friend class OdIfcCompound
Definition IfcEntity.h:378
virtual bool testAttr(const OdIfcAttribute explicitAttrDef) const
static const OdCmEntityColor * asRgbColor(const OdIfcInstance *inst)
Definition IfcEntity.h:325
static const OdGeVector2d * asVector2d(const OdIfcInstance *inst)
Definition IfcEntity.h:270
virtual void setGsNode(OdGsCache *pGsNode)
static const OdGePoint3d * asPoint3d(const OdIfcInstance *inst)
Definition IfcEntity.h:222
ODRX_DECLARE_MEMBERS(OdIfcInstance)
virtual bool putAttr(const char *explicitAttrName, const OdRxValue &val)
IfcOpResult resolved()
Definition IfcEntity.h:192
bool isInstanceOf(OdIfcEntityType entityType) const
virtual OdRxValue getAttr(const OdIfcAttribute attrDef) const
virtual bool testAttr(const char *explicitAttrName) const
IfcOpResult
Definition IfcEntity.h:51
@ kResPoint3d
Definition IfcEntity.h:59
@ kResPoint2d
Definition IfcEntity.h:57
@ kRgbColor
Definition IfcEntity.h:69
@ kResVector2d
Definition IfcEntity.h:61
@ kResMatrix3d
Definition IfcEntity.h:67
@ kUnresolved
Definition IfcEntity.h:53
@ kResVector3d
Definition IfcEntity.h:63
@ kResCompound
Definition IfcEntity.h:71
@ kResError
Definition IfcEntity.h:73
@ kResMatrix2d
Definition IfcEntity.h:65
@ kResVisited
Definition IfcEntity.h:55
OdSmartPtr< OdIfcCompound > OdIfcCompoundPtr