CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
FxBIMSection.h
Go to the documentation of this file.
1//
2// (C) Copyright 2020-2025 by Graebert GmbH.
3//
4// Permission to use, copy, modify, and distribute this software in
5// object code form for any purpose and without fee is hereby granted,
6// provided that the above copyright notice appears in all copies and
7// that both that copyright notice and the limited warranty and
8// restricted rights notice below appear in all supporting
9// documentation.
10//
11// GRAEBERT PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
12// GRAEBERT SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
13// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. GRAEBERT GMBH
14// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
15// UNINTERRUPTED OR ERROR FREE.
16
17#pragma once
18
19#include "FxBIM.h"
20#include "FxBIMProject.h"
21
22#include <StringArray.h>
23#include <DbEntity.h>
24#include <Ge/GePlane.h>
25#include <Ge/GeExtents2d.h>
26
27#include <vector>
28#include <list>
29
30class CFxBIMSection;
32
33class CFxUIDialog;
34
36{
37public:
39
40 virtual ~CFxBIMSection();
41
42 virtual const OdString& Name() const;
43 virtual void SetName( const OdString& name );
44 virtual const OdGePlane& Plane() const;
45 virtual void SetPlane( const OdGePlane& plane );
46 virtual const std::vector< OdGePoint2d >& Points() const;
47 virtual void SetPoints( const std::vector< OdGePoint2d >& points );
48 virtual double Depth() const;
49 virtual void SetDepth( double depth );
50
51 void SetDetailViewParentSection( OdDbObjectId idDetailParentSection );
53
54 void SetDetailViewFrameHandle( OdDbHandle hDetailViewFrame );
56
57 void SetDetailViewLeaderHandle( OdDbHandle hDetailViewLeader );
59
60 void SetDetailViewCalloutHandle( OdDbHandle hDetailViewCallout );
62
63 void SetDetailViewLeaderPoints( const std::list< OdGePoint3d >& listDetailViewLeaderPoints );
64 const std::list< OdGePoint3d >& GetDetailViewLeaderPoints() const;
65
66 void SetDetailViewCalloutCenter( OdGePoint3d pointDetailViewCalloutCenter );
68
69 void SetDetailViewCalloutRadius( double dDetailViewCalloutRadius );
71
72 void SetDetailViewCalloutBottomLabel( OdString strDetailViewCalloutBottomLabel );
74
77
79
80 void SetBuilding( const OdString& strBuilding );
82
84 {
89 //InteriorElevation, //TODO:
90 };
91
92 virtual SectionType Type() const;
94
95 virtual const OdString& Filter() const;
96 virtual void SetFilter( const OdString& filter );
97
98 virtual void AddEntRef( const OdDbObjectId& eRefId );
99 virtual void AddEntRefs( const OdDbEntityPtrArray& arrEntRefs );
100 virtual void RemoveFromEntRefs();
101
102 enum Flags
103 {
104 eInvalid = 0x1,
105 eDrawBox = 0x2,
107 eUnused0 = 0x8,
108 eUnused1 = 0x10,
109 };
110
111 virtual int Flags() const;
112 virtual void SetFlags( int flags );
113
114 virtual const std::vector< OdDbObjectId >& Layers() const;
115 virtual void SetLayers( const std::vector< OdDbObjectId >& layers );
116
117 void HideDrawBox( const bool& bHide );
118
122 virtual void AddLayer(const OdDbObjectId &layer);
123
127 virtual void RemoveLayer(const OdDbObjectId &layer);
128
129 bool IsPlan() const;
130
131public:
132 OdResult dwgInFields( OdDbDwgFiler* pFiler ) override;
133 void dwgOutFields( OdDbDwgFiler* pFiler ) const override;
134
135 OdResult dxfInFields( OdDbDxfFiler* pFiler ) override;
136 void dxfOutFields( OdDbDxfFiler* pFiler ) const override;
137
139 bool subWorldDraw( OdGiWorldDraw* wd ) const override;
140 void subViewportDraw( OdGiViewportDraw* vd ) const override;
141
142 OdResult subGetGeomExtents( OdGeExtents3d& extents ) const override;
143
144 void subGripStatus( const OdDb::GripStat status ) override;
145
147 OdDb::OsnapMode osnapMode,
148 OdGsMarker gsSelectionMark,
149 const OdGePoint3d& pickPoint,
150 const OdGePoint3d& lastPoint,
151 const OdGeMatrix3d& xWorldToEye,
152 OdGePoint3dArray& snapPoints ) const override;
153
155 OdDb::OsnapMode osnapMode,
156 OdGsMarker gsSelectionMark,
157 const OdGePoint3d& pickPoint,
158 const OdGePoint3d& lastPoint,
159 const OdGeMatrix3d& xWorldToEye,
160 OdGePoint3dArray& snapPoints,
161 const OdGeMatrix3d& insertionMat ) const override;
162
163 bool subIsContentSnappable() const override;
164
165 OdResult subGetGripPoints( OdGePoint3dArray& gripPoints ) const override;
166 OdResult subMoveGripPointsAt( const OdIntArray& indices, const OdGeVector3d& offset ) override;
169 const double curViewUnitSize,
170 const int gripSize,
171 const OdGeVector3d& curViewDir,
172 const int bitFlags ) const override;
174 const OdDbVoidPtrArray& grips,
175 const OdGeVector3d& offset,
176 int bitFlags ) override;
177 OdResult subGetStretchPoints( OdGePoint3dArray& stretchPoints ) const override;
179 const OdIntArray& indices,
180 const OdGeVector3d& offset ) override;
181
182 OdResult subErase( bool erasing ) override;
183 OdDbObjectPtr subWblockClone( OdDbIdMapping& ownerIdMap, OdDbObject*, bool bPrimary ) const override;
184 OdDbObjectPtr subDeepClone( OdDbIdMapping& ownerIdMap, OdDbObject*, bool bPrimary ) const override;
185
186protected:
188};
189
190namespace FxBIM
191{
194 [[deprecated( "Use version without 'mode' parameter" )]]
197
199
201 {
202 virtual void Create( OdDbObjectId idSection ) = 0;
203 };
204
205 using CFxSectionCreateManagerPtr = std::shared_ptr< CFxSectionCreateManager >;
206
208
210 {
212 virtual OdDbEntityPtrArray GetSelectionSet() { return {}; }
216 , OdGePoint3d& pointFrame2
217 , std::list< OdGePoint3d >& listLeaderPoints
218 , double& dCalloutRadius
219 , OdGeMatrix3d& mTransformation
220 , OdString& scaleName
221 , OdString& strDefaultDetailViewName
222 , bool& bRequestSectionName ) = 0;
223
225 , OdDbDatabasePtr pDb
226 , const OdGePlane& ucs
227 , const OdDbEntityPtrArray& wrappers
229
231
232 virtual Error GetSectionName( OdString& sectionName
234 , OdDbObjectId& idLayerSection
235 , OdDbDatabasePtr pDb ) = 0;
236
237 virtual void AddDetailViewEntitiesToDb( OdDbDatabasePtr pDb, CFxBIMSectionPtr pDetailSection ) = 0;
238
239 virtual void OnSectionCreated( CFxBIMSectionPtr pBimSection ) {}
240 };
241
243 CFxSectionParameterProvider& ProviderImpl,
244 CFxUIDialog* pDialog = nullptr );
245
246} // namespace FxBIM
247
249
250#include "FxBIMDrawing.h"
251
253{
254public:
255 virtual ~CFxBIMSectionReactor() = default;
256
257 virtual void Created( CFxBIMSection* p ) {}
258 virtual void Removed( CFxBIMSection* p, bool removed ) {}
259
260 virtual void Renamed( CFxBIMSection* p, const OdString& oldName, bool undo ) {}
261
262 virtual void ViewCreated( const CFxBIMDrawing::ViewRef& viewRef, OdDbDatabase* pDb ) {}
263 virtual void ViewCopied( const CFxBIMDrawing::ViewRef& viewRef, const OdString& viewHandle, const OdString& viewNumber, const OdDbObjectId& idXref, OdDbDatabase* pDb ) {}
264 virtual void ViewRemoved( const CFxBIMDrawing::ViewRef& viewRef, bool removed, OdDbDatabase* pDb ) {}
265 virtual void ViewRenamed( CFxBIMSectionView* p, OdString const& sOldNumber, OdString const& sOldName, bool undo ) {}
266
267 virtual void Regenerated( CFxBIMSection* p, OdDbDatabase* pDbDest, const std::vector< OdDbObjectId >& oldSE, const std::vector< OdDbObjectId >& newSE ) {}
268
269 virtual void ModifiedGraphics( CFxBIMSection* p ) {}
270 virtual void ModifiedType( CFxBIMSection* p ) {}
271 virtual void ModifiedFilter( CFxBIMSection* p ) {}
272};
OdArray< OdGePoint3d, OdMemoryAllocator< OdGePoint3d > > OdGePoint3dArray
OdSmartPtr< OdDbDatabase > OdDbDatabasePtr
Definition DbDatabase.h:203
OdArray< OdDbEntityPtr > OdDbEntityPtrArray
Definition DbEntity.h:56
OdArray< void *, OdMemoryAllocator< void * > > OdDbVoidPtrArray
Definition DbGrip.h:55
OdArray< OdDbGripDataPtr > OdDbGripDataPtrArray
Definition DbGrip.h:49
OdSmartPtr< OdDbObject > OdDbObjectPtr
Definition DbObject.h:1750
Error
Definition FxBIM.h:40
@ eFail
Definition FxBIM.h:42
std::shared_ptr< CFxBIMObject > CFxBIMObjectPtr
Definition FxBIM.h:112
#define FXBIM_API
Definition FxBIMDefs.h:4
OdSmartPtr< CFxBIMSection > CFxBIMSectionPtr
OdArray< int, OdMemoryAllocator< int > > OdIntArray
Definition IntArray.h:35
ptrdiff_t OdGsMarker
unsigned int OdUInt32
OdResult
Definition OdResult.h:29
void SetDetailViewLeaderPoints(const std::list< OdGePoint3d > &listDetailViewLeaderPoints)
bool subIsContentSnappable() const override
const std::list< OdGePoint3d > & GetDetailViewLeaderPoints() const
void SetDetailViewCalloutHandle(OdDbHandle hDetailViewCallout)
OdResult subGetStretchPoints(OdGePoint3dArray &stretchPoints) const override
void dwgOutFields(OdDbDwgFiler *pFiler) const override
void SetDetailViewLeaderHandle(OdDbHandle hDetailViewLeader)
OdResult subGetGeomExtents(OdGeExtents3d &extents) const override
virtual void SetName(const OdString &name)
void SetDetailViewCalloutCenter(OdGePoint3d pointDetailViewCalloutCenter)
void SetDetailViewFrameHandle(OdDbHandle hDetailViewFrame)
virtual SectionType Type() const
virtual const OdGePlane & Plane() const
virtual const std::vector< OdDbObjectId > & Layers() const
OdDbHandle GetDetailViewCalloutHandle() const
OdResult subMoveGripPointsAt(const OdDbVoidPtrArray &grips, const OdGeVector3d &offset, int bitFlags) override
OdDbObjectPtr subWblockClone(OdDbIdMapping &ownerIdMap, OdDbObject *, bool bPrimary) const override
OdResult subGetOsnapPoints(OdDb::OsnapMode osnapMode, OdGsMarker gsSelectionMark, const OdGePoint3d &pickPoint, const OdGePoint3d &lastPoint, const OdGeMatrix3d &xWorldToEye, OdGePoint3dArray &snapPoints, const OdGeMatrix3d &insertionMat) const override
OdString GetDetailViewCalloutBottomLabel() const
void subGripStatus(const OdDb::GripStat status) override
virtual void RemoveFromEntRefs()
void SetDetailViewCalloutBottomLabel(OdString strDetailViewCalloutBottomLabel)
virtual const std::vector< OdGePoint2d > & Points() const
virtual void SetLayers(const std::vector< OdDbObjectId > &layers)
OdResult subMoveGripPointsAt(const OdIntArray &indices, const OdGeVector3d &offset) override
OdDbHandle GetDetailViewFrameHandle() const
virtual void SetFilter(const OdString &filter)
void dxfOutFields(OdDbDxfFiler *pFiler) const override
virtual void SetPlane(const OdGePlane &plane)
void SetDetailViewCalloutRadius(double dDetailViewCalloutRadius)
virtual void SetFlags(int flags)
OdResult dxfInFields(OdDbDxfFiler *pFiler) override
OdDbObjectId GetDetailViewParentSection() const
OdResult subGetGripPoints(OdGePoint3dArray &gripPoints) const override
virtual int Flags() const
virtual ~CFxBIMSection()
OdUInt32 subSetAttributes(OdGiDrawableTraits *traits) const override
virtual void AddEntRef(const OdDbObjectId &eRefId)
virtual const OdString & Name() const
virtual void AddLayer(const OdDbObjectId &layer)
Add layer, if it is not added yet.
OdResult subGetOsnapPoints(OdDb::OsnapMode osnapMode, OdGsMarker gsSelectionMark, const OdGePoint3d &pickPoint, const OdGePoint3d &lastPoint, const OdGeMatrix3d &xWorldToEye, OdGePoint3dArray &snapPoints) const override
void subViewportDraw(OdGiViewportDraw *vd) const override
bool IsPlan() const
OdString GetDetailViewScaleStr() const
OdGePoint3d GetDetailViewCalloutCenter() const
virtual const OdString & Filter() const
OdString GetBuilding() const
const OdGeMatrix3d & GetDetailViewCalloutTransformation() const
OdResult subErase(bool erasing) override
virtual void SetPoints(const std::vector< OdGePoint2d > &points)
OdResult subGetGripPoints(OdDbGripDataPtrArray &grips, const double curViewUnitSize, const int gripSize, const OdGeVector3d &curViewDir, const int bitFlags) const override
void HideDrawBox(const bool &bHide)
OdResult subMoveStretchPointsAt(const OdIntArray &indices, const OdGeVector3d &offset) override
double GetDetailViewCalloutRadius() const
virtual void SetDepth(double depth)
void SetBuilding(const OdString &strBuilding)
bool subWorldDraw(OdGiWorldDraw *wd) const override
OdDbHandle GetDetailViewLeaderHandle() const
virtual void RemoveLayer(const OdDbObjectId &layer)
Remove layer, if it was added.
OdResult dwgInFields(OdDbDwgFiler *pFiler) override
virtual void AddEntRefs(const OdDbEntityPtrArray &arrEntRefs)
void SetDetailViewParentSection(OdDbObjectId idDetailParentSection)
void SetDetailViewCalloutTransformation(const OdGeMatrix3d &mTr)
ODDB_DECLARE_MEMBERS(CFxBIMSection)
virtual void SetType(CFxBIMSection::SectionType type)
OdDbObjectPtr subDeepClone(OdDbIdMapping &ownerIdMap, OdDbObject *, bool bPrimary) const override
virtual double Depth() const
virtual void ModifiedGraphics(CFxBIMSection *p)
virtual void Regenerated(CFxBIMSection *p, OdDbDatabase *pDbDest, const std::vector< OdDbObjectId > &oldSE, const std::vector< OdDbObjectId > &newSE)
virtual void Renamed(CFxBIMSection *p, const OdString &oldName, bool undo)
virtual void ViewCopied(const CFxBIMDrawing::ViewRef &viewRef, const OdString &viewHandle, const OdString &viewNumber, const OdDbObjectId &idXref, OdDbDatabase *pDb)
virtual void ViewCreated(const CFxBIMDrawing::ViewRef &viewRef, OdDbDatabase *pDb)
virtual void Created(CFxBIMSection *p)
virtual void ViewRemoved(const CFxBIMDrawing::ViewRef &viewRef, bool removed, OdDbDatabase *pDb)
virtual ~CFxBIMSectionReactor()=default
virtual void ViewRenamed(CFxBIMSectionView *p, OdString const &sOldNumber, OdString const &sOldName, bool undo)
virtual void ModifiedFilter(CFxBIMSection *p)
virtual void ModifiedType(CFxBIMSection *p)
virtual void Removed(CFxBIMSection *p, bool removed)
OdString layer() const
GLuint const GLchar * name
Definition gles2_ext.h:265
GLuint GLsizei GLsizei GLint GLenum * type
Definition gles2_ext.h:274
GLintptr offset
Definition gles2_ext.h:183
Definition FxBIM.h:72
FXBIM_API void SetBIMSectionCreateManager(CFxSectionCreateManagerPtr pSectionCreateManager)
FXBIM_API CFxBIMSectionPtr GetBIMDrawingSection(OdDbDatabasePtr pBIMDrawingDb, OdDb::OpenMode mode)
FXBIM_API void SetBIMNavigatorControllerSectionReactor(CFxBIMObjectPtr pSectionReactor)
FXBIM_API Error CreateSection(OdDbDatabasePtr pDbCurrent, CFxSectionParameterProvider &ProviderImpl, CFxUIDialog *pDialog=nullptr)
std::shared_ptr< CFxSectionCreateManager > CFxSectionCreateManagerPtr
FXBIM_API CFxBIMSectionPtr GetBIMSection(OdDbDatabasePtr pDb, OdDbHandle hSection, OdDb::OpenMode mode)
FXBIM_API OdDbDatabasePtr OpenBIMSectionDrawingDatabase(CFxBIMSectionPtr pSection, OdDb::OpenMode mode)
GripStat
Definition DbGrip.h:112
OsnapMode
Definition OdaDefs.h:489
virtual void Create(OdDbObjectId idSection)=0
virtual void AddDetailViewEntitiesToDb(OdDbDatabasePtr pDb, CFxBIMSectionPtr pDetailSection)=0
virtual Error CheckValidity(CFxBIMProject::BimStatusFlags BimStatus)=0
virtual Error GetSectionName(OdString &sectionName, CFxBIMSection::SectionType &type, OdDbObjectId &idLayerSection, OdDbDatabasePtr pDb)=0
virtual Error GetSectionType(CFxBIMSection::SectionType &type, CFxBIMProject::BimStatusFlags eBimStatusFlag)=0
virtual OdGePlane CalcWorkingPlane()=0
virtual void OnSectionCreated(CFxBIMSectionPtr pBimSection)
virtual Error CreateSection(CFxBIMSectionPtr &pBimSection, OdDbDatabasePtr pDb, const OdGePlane &ucs, const OdDbEntityPtrArray &wrappers, CFxBIMSection::SectionType type)=0
virtual Error GetSectionTypeParameter(CFxBIMSection::SectionType &type)
virtual Error GetDetailViewParameters(OdGePoint3d &pointFrame1, OdGePoint3d &pointFrame2, std::list< OdGePoint3d > &listLeaderPoints, double &dCalloutRadius, OdGeMatrix3d &mTransformation, OdString &scaleName, OdString &strDefaultDetailViewName, bool &bRequestSectionName)=0
virtual OdDbEntityPtrArray GetSelectionSet()