CFx SDK Documentation  2023 SP0
AECMacros.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 #ifndef __AECMACROS_H__
25 #define __AECMACROS_H__
26 
27 #include <DbEntity.h>
28 #include <RxModule.h>
29 
30 class AECDbDwgFiler;
31 
32 // Methods from OdDbCurve interface currently supported by Teighaź 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 // Teighaź 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 Teighaź Architecture subobject or database resident.
77 #define DECLARE_EMPTY( API, AECClass, AECParentClass ) \
78 class API AECClass : public AECParentClass \
79 { \
80  AEC_DECLARE_MEMBERS( AECClass ); \
81 }; \
82 typedef 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__