CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
AECMacros.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, 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
16// license agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2022 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 __AECMACROS_H__
25#define __AECMACROS_H__
26
27#include <DbEntity.h>
28#include <RxModule.h>
29
30class AECDbDwgFiler;
31
32// Methods from OdDbCurve interface currently supported by ODA Architecture entities.
33// TODO: Add all other methods from OdDbCurve interface.
34#define CURVE_DECLARE_MEMBERS() \
35 public: \
36 virtual bool isClosed() const; \
37 virtual bool isPeriodic() const; \
38 virtual OdResult getStartParam( double& param ) const; \
39 virtual OdResult getEndParam ( double& param ) const; \
40 virtual OdResult getStartPoint( OdGePoint3d& pt ) const; \
41 virtual OdResult getEndPoint( OdGePoint3d& pt ) const; \
42 virtual OdResult getPointAtParam( double, OdGePoint3d& ) const; \
43 virtual OdResult getParamAtPoint( const OdGePoint3d&, double& ) const; \
44 virtual OdResult getDistAtParam ( double param, double& dist ) const; \
45 virtual OdResult getParamAtDist ( double dist, double& param ) const; \
46 virtual OdResult getDistAtPoint ( const OdGePoint3d&, double& )const; \
47 virtual OdResult getPointAtDist ( double, OdGePoint3d&) const; \
48 virtual OdResult getFirstDeriv ( double param, OdGeVector3d& firstDeriv ) const; \
49 virtual OdResult getPlane(OdGePlane& plane, OdDb::Planarity& planarity) const; \
50 virtual OdResult getClosestPointTo( const OdGePoint3d& givenPoint, OdGePoint3d& pointOnCurve, bool extend = false ) const
51
52// Declares standard methods for each
53// ODA Architecture database resident or imp-object.
54#define AEC_DECLARE_MEMBERS( ClassName ) \
55 \
56 ODRX_DECLARE_MEMBERS( ClassName ); \
57 \
58 private: \
59 OdRxModulePtr m_pModule; \
60 public: \
61 static const OdUInt16 m_AECType; \
62 static const OdUInt16 m_ver; \
63 public: \
64 ClassName(); \
65 virtual ~ClassName(); \
66 public: \
67 virtual OdUInt16 GetAECType() const; \
68 void referenceModule(); \
69 \
70 virtual OdResult dwgInFieldsEx( AECDbDwgFiler* pFiler ); \
71 virtual void dwgOutFieldsEx( AECDbDwgFiler* pFiler ) const; \
72 \
73 virtual OdResult dxfInFields( OdDbDxfFiler* pFiler ); \
74 virtual void dxfOutFields( OdDbDxfFiler* pFiler ) const
75
76// Declares empty ODA Architecture subobject or database resident.
77#define DECLARE_EMPTY( API, AECClass, AECParentClass ) \
78class API AECClass : public AECParentClass \
79{ \
80 AEC_DECLARE_MEMBERS( AECClass ); \
81}; \
82typedef OdSmartPtr<AECClass> AECClass##Ptr
83
84// Following macros is used to define
85// standard static methods for AEC dictionaries.
86#define AEC_DICTIONARY_BASE( ClassName ) \
87 public: \
88 static OdDbObjectId GetAECDictionary( OdDbDatabase* pDatabase, bool bCreateIfNotFound = false ); \
89 static OdDbObjectId GetAECDictionaryExt( OdDbObject* pObject, bool bCreateIfNotFound = false )
90
91#define AEC_DICTIONARY_DECLARE_MEMBERS( ClassName ) \
92 AEC_DICTIONARY_BASE( ClassName ); \
93 static OdDbObjectId GetStandardAECObject( OdDbDatabase* pDatabase ); \
94 static OdDbObjectId GetAECObject( OdDbDatabase* pDatabase, const OdString& strName = OdString::kEmpty ); \
95 static OdDbObjectId GetAECObjectExt( OdDbObject* pObject, const OdString& strName ); \
96 static OdDbObjectId CreateAECObject( OdDbDatabase* pDatabase, const OdString& strName = OdString::kEmpty ); \
97 static OdDbObjectId CreateAECObjectExt( OdDbObject* pObject, const OdString& strName = OdString::kEmpty )
98
99// Declares simple sub-object.
100#define AEC_SUBOBJ_DECLARE_MEMBERS_NO_DESTR( ClassName ) \
101 ODRX_DECLARE_MEMBERS( ClassName ); \
102 public: \
103 ClassName(); \
104 virtual OdResult dwgInFieldsEx( AECDbDwgFiler* pFiler ); \
105 virtual void dwgOutFieldsEx( AECDbDwgFiler* pFiler ) const;
106
107#define AEC_SUBOBJ_DECLARE_MEMBERS( ClassName ) \
108 AEC_SUBOBJ_DECLARE_MEMBERS_NO_DESTR( ClassName ) \
109 virtual ~ClassName() { }
110
111#endif //__AECMACROS_H__