CFx SDK Documentation  2023 SP0
DbEntity.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 _ODDBENTITY_INCLUDED_
25 #define _ODDBENTITY_INCLUDED_ /* { Secret} */
26 
27 #include "TD_PackPush.h"
28 
29 #include "DbObject.h"
30 #include "Ge/GePoint3d.h"
31 #include "Ge/GeLine3d.h"
32 #include "Ge/GePlane.h"
33 #include "CmColor.h"
34 #include "IntArray.h"
35 #include "DbDatabase.h"
36 #include "DbSubentId.h"
37 #include "GsMarkerArray.h"
38 #include "DbGrip.h"
39 #include "OdaDefs.h"
40 
41 class OdGePlane;
42 class OdGeMatrix3d;
43 class OdDbFullSubentPath;
44 class OdGePoint3d;
45 class OdGeVector3d;
47 
52 
57 
62 namespace OdDb
63 {
64 
66  {
67  kNoSave = 0,
71  };
72 
73  enum Planarity
74  {
76  kPlanar = 1,
77  kLinear = 2
78  };
79 }
80 
90 {
91 public:
93 
95 
100 
104  OdCmColor color() const;
105 
117  const OdCmColor &color,
118  bool doSubents = true);
119 
130 
134  virtual OdCmEntityColor entityColor() const;
135 
151  OdUInt16 colorIndex,
152  bool doSubents = true);
153 
158 
170  OdDbObjectId colorId,
171  bool doSubents = true);
172 
177 
191  const OdCmTransparency& transparency,
192  bool doSubents = true);
193 
198 
205 
216  const OdString& plotStyleName,
217  bool doSubents = true);
218 
242  OdDb::PlotStyleNameType plotStyleNameType,
243  OdDbObjectId plotStyleNameId = OdDbObjectId::kNull,
244  bool doSubents = true);
245 
249  OdString layer() const;
250 
255 
266  const OdString& layerName,
267  bool doSubents = true,
268  bool allowHiddenLayer = false);
269 
280  OdDbObjectId layerId,
281  bool doSubents = true,
282  bool allowHiddenLayer = false);
283 
284 
289 
294 
305  const OdString& linetypeName,
306  bool doSubents = true);
307 
318  OdDbObjectId linetypeID,
319  bool doSubents = true);
320 
325 
330 
341  const OdString& materialName,
342  bool doSubents = true);
343 
354  OdDbObjectId materialID,
355  bool doSubents = true);
356 
357 
359  {
362  kEdgeVisualStyle
363  };
364 
369  VisualStyleType vstype = kFullVisualStyle) const;
370 
383  OdDbObjectId visualStyleId,
384  VisualStyleType vstype = kFullVisualStyle,
385  bool doSubents = true);
386 
391  virtual const OdGiMapper* materialMapper() const;
392 
403  virtual void setMaterialMapper(
404  const OdGiMapper* mapper,
405  bool doSubents = true);
406 
410  double linetypeScale() const;
411 
423  double linetypeScale,
424  bool doSubents = true);
425 
440 
460  OdDb::Visibility visibility,
461  bool doSubents = true) ODRX_SEALED;
462 
475  OdDb::Visibility tempVisibility() const;
476 
487  void setTempVisibility(OdDb::Visibility visibility);
488 
492  OdDb::LineWeight lineWeight() const;
493 
504  virtual OdResult setLineWeight(
505  OdDb::LineWeight lineWeight,
506  bool doSubents = true);
507 
511  virtual bool castShadows() const;
512 
517  virtual void setCastShadows(bool castShadows);
518 
522  virtual bool receiveShadows() const;
523 
528  virtual void setReceiveShadows(bool receiveShadows);
529 
536  virtual OdDb::CollisionType collisionType() const;
537 
544  void setPropertiesFrom(
545  const OdDbEntity* pSource,
546  bool doSubents = true);
547 
551  virtual bool isPlanar() const;
552 
571  virtual OdResult getPlane(
572  OdGePlane& plane,
573  OdDb::Planarity& planarity) const;
574 
587  void subHandOverTo(
588  OdDbObject* pNewObject);
589 
599  const OdGeMatrix3d& xfm) ODRX_SEALED;
600 
611  ODRX_SEALED_VIRTUAL OdResult getTransformedCopy(
612  const OdGeMatrix3d& xfm,
613  OdDbEntityPtr& pCopy) const ODRX_SEALED;
614 
630  OdRxObjectPtrArray& entitySet) const ODRX_SEALED;
631 
649  virtual OdResult explodeToBlock(
650  OdDbBlockTableRecord *pBlockRecord,
651  OdDbObjectIdArray *ids = 0);
652 
667  virtual OdResult explodeGeometry(
668  OdRxObjectPtrArray& entitySet) const;
669 
686  virtual OdResult explodeGeometryToBlock(
687  OdDbBlockTableRecord *pBlockRecord,
688  OdDbObjectIdArray *ids = 0);
689 
690  virtual bool subWorldDraw(OdGiWorldDraw* pWd) const;
691 
692  virtual void subViewportDraw(OdGiViewportDraw* pVd) const;
693 
712  void setDatabaseDefaults(
713  OdDbDatabase* pDb = 0,
714  bool doSubents = false);
715 
733  virtual void subSetDatabaseDefaults(
734  OdDbDatabase* pDb,
735  bool doSubents);
736 
737  virtual void applyPartialUndo(
738  OdDbDwgFiler* pUndoFiler,
739  OdRxClass* pClassObj);
740 
741  virtual OdResult dwgInFields(
742  OdDbDwgFiler* pFiler);
743 
744  virtual void dwgOutFields(
745  OdDbDwgFiler* pFiler) const;
746 
747  void appendToOwner(
748  OdDbIdPair& idPair,
749  OdDbObject* pOwnerObject,
750  OdDbIdMapping& ownerIdMap);
751 
752  virtual OdResult dxfIn(
753  OdDbDxfFiler* pFiler);
754 
755  virtual void dxfOut(
756  OdDbDxfFiler* pFiler) const;
757 
758  virtual OdResult dxfInFields(
759  OdDbDxfFiler* pFiler);
760 
761  virtual void dxfOutFields(
762  OdDbDxfFiler* pFiler) const;
763 
764  virtual OdResult dxfInFields_R12(
765  OdDbDxfFiler* pFiler);
766 
767  virtual void dxfOutFields_R12(
768  OdDbDxfFiler* pFiler) const;
769 
770  virtual OdGiDrawable* drawable();
771 
772  virtual OdUInt32 subSetAttributes(
773  OdGiDrawableTraits* pTraits) const;
774 
775  virtual void subList() const;
776  virtual OdResult subGetClassID(void* pClsid) const;
777 
797  void subSwapIdWith(
798  const OdDbObjectId& otherId,
799  bool swapXdata = false,
800  bool swapExtDict = false);
801 
802  virtual OdResult subErase( bool erasing) ODRX_OVERRIDE;
803 
813  void recordGraphicsModified(bool graphicsModified = true);
814 
815  virtual void copyFrom(const OdRxObject* pSource);
816 
817 /* No implementation
818  Cause this entity, and any other entity who's draw bit is set, to be be drawn.
819  void draw();
820  */
821 
826  ODRX_SEALED_VIRTUAL void list() const ODRX_SEALED;
827 
828  virtual OdResult getGeomExtents(OdGeExtents3d& extents) const ODRX_SEALED;
829 
830  ODRX_SEALED_VIRTUAL void highlight(bool bDoIt = true, const OdDbFullSubentPath* pSubId = 0,
831  bool highlightAll = false) const ODRX_SEALED;
832 
866  OdDb::OsnapMode osnapMode,
867  OdGsMarker gsSelectionMark,
868  const OdGePoint3d& pickPoint,
869  const OdGePoint3d& lastPoint,
870  const OdGeMatrix3d& xWorldToEye,
871  OdGePoint3dArray& snapPoints ) const ODRX_SEALED;
872 
906  OdDb::OsnapMode osnapMode,
907  OdGsMarker gsSelectionMark,
908  const OdGePoint3d& pickPoint,
909  const OdGePoint3d& lastPoint,
910  const OdGeMatrix3d& xWorldToEye,
911  OdGePoint3dArray& snapPoints,
912  const OdGeMatrix3d& insertionMat) const ODRX_SEALED;
913 
914  ODRX_SEALED_VIRTUAL bool isContentSnappable() const ODRX_SEALED;
915 
925 
937  const OdIntArray& indices,
939 
949  OdDbGripDataPtrArray& grips,
950  const double curViewUnitSize,
951  const int gripSize,
952  const OdGeVector3d& curViewDir,
953  const int bitFlags ) const ODRX_SEALED;
954 
962  const OdDbVoidPtrArray& grips,
963  const OdGeVector3d& offset,
964  int bitFlags ) ODRX_SEALED;
965 
974  ODRX_SEALED_VIRTUAL OdResult getStretchPoints( OdGePoint3dArray& stretchPoints ) const ODRX_SEALED;
975 
987  ODRX_SEALED_VIRTUAL OdResult moveStretchPointsAt(
988  const OdIntArray& indices,
990 
996  virtual void dragStatus( const OdDb::DragStat status );
997 
1003  ODRX_SEALED_VIRTUAL void gripStatus( const OdDb::GripStat status ) ODRX_SEALED;
1004 
1008  ODRX_SEALED_VIRTUAL bool cloneMeForDragging() ODRX_SEALED;
1009 
1013  ODRX_SEALED_VIRTUAL bool hideMeForDragging() const ODRX_SEALED;
1014 
1025  virtual void saveAs(
1026  OdGiWorldDraw* pWd,
1027  OdDb::DwgVersion ver ) const;
1028 
1029 
1030 
1037  ODRX_SEALED_VIRTUAL OdResult getCompoundObjectTransform(OdGeMatrix3d & xM) const ODRX_SEALED;
1038 
1046  OdGePoint3dArray& points, OdGsMarker thisGsMarker = 0,
1047  OdGsMarker otherGsMarker = 0) const ODRX_SEALED;
1048 
1056  const OdGePlane& projPlane, OdGePoint3dArray& points,
1057  OdGsMarker thisGsMarker = 0, OdGsMarker otherGsMarker = 0) const ODRX_SEALED;
1058 
1062  OdResult boundingBoxIntersectWith(const OdDbEntity* pEnt, OdDb::Intersect intType,
1063  OdGePoint3dArray& points, OdGsMarker thisGsMarker, OdGsMarker otherGsMarker) const;
1064 
1068  OdResult boundingBoxIntersectWith(const OdDbEntity* pEnt, OdDb::Intersect intType,
1069  const OdGePlane& projPlane, OdGePoint3dArray& points,
1070  OdGsMarker thisGsMarker, OdGsMarker otherGsMarker) const;
1071 
1097  ODRX_SEALED_VIRTUAL OdResult getSubentPathsAtGsMarker(OdDb::SubentType type, OdGsMarker gsMark,
1098  const OdGePoint3d& pickPoint,const OdGeMatrix3d& xfm,
1099  OdDbFullSubentPathArray& subentPaths,
1100  const OdDbObjectIdArray* pEntAndInsertStack = 0) const ODRX_SEALED;
1101 
1111  ODRX_SEALED_VIRTUAL OdResult getGsMarkersAtSubentPath( const OdDbFullSubentPath& subPath,
1112  OdGsMarkerArray& gsMarkers) const ODRX_SEALED;
1113 
1125  ODRX_SEALED_VIRTUAL OdResult getGripPointsAtSubentPath( const OdDbFullSubentPath& path, OdDbGripDataPtrArray& grips,
1126  const double curViewUnitSize, const int gripSize,
1127  const OdGeVector3d& curViewDir, const OdUInt32 bitflags) const ODRX_SEALED;
1128 
1138  ODRX_SEALED_VIRTUAL OdResult moveGripPointsAtSubentPaths( const OdDbFullSubentPathArray& paths,
1139  const OdDbVoidPtrArray& gripAppData, const OdGeVector3d& offset, const OdUInt32 bitflags) ODRX_SEALED;
1140 
1148 
1156 
1164 
1172  ODRX_SEALED_VIRTUAL OdResult transformSubentPathsBy(const OdDbFullSubentPathArray &paths, const OdGeMatrix3d & xform) ODRX_SEALED;
1173 
1181  ODRX_SEALED_VIRTUAL OdResult getSubentClassId( const OdDbFullSubentPath& path, void* clsId ) ODRX_SEALED;
1182 
1190  ODRX_SEALED_VIRTUAL OdResult getSubentPathGeomExtents( const OdDbFullSubentPath& path, OdGeExtents3d& extents ) ODRX_SEALED;
1191 
1192  ODRX_SEALED_VIRTUAL void subentGripStatus(OdDb::GripStat status, const OdDbFullSubentPath& subentity) ODRX_SEALED;
1193 
1200  virtual OdGeMatrix3d getEcs() const;
1201 
1202 protected:
1203  virtual OdDbObjectPtr subWblockClone(OdDbIdMapping& ownerIdMap, OdDbObject*, bool bPrimary) const ODRX_OVERRIDE;
1204  virtual OdDbObjectPtr subDeepClone(OdDbIdMapping& ownerIdMap, OdDbObject*, bool bPrimary) const ODRX_OVERRIDE;
1205 
1206  virtual OdResult subTransformBy(
1207  const OdGeMatrix3d& xfm);
1208  virtual OdResult subGetTransformedCopy(
1209  const OdGeMatrix3d& xfm,
1210  OdDbEntityPtr& pCopy) const;
1211  virtual OdResult subExplode(
1212  OdRxObjectPtrArray& entitySet) const;
1213  virtual OdResult subGetCompoundObjectTransform(OdGeMatrix3d & xM) const;
1214 
1215  virtual bool subCloneMeForDragging();
1216  virtual bool subHideMeForDragging() const;
1217 
1218  virtual void subGripStatus( const OdDb::GripStat status );
1219 
1220  virtual OdResult subGetOsnapPoints(
1221  OdDb::OsnapMode osnapMode,
1222  OdGsMarker gsSelectionMark,
1223  const OdGePoint3d& pickPoint,
1224  const OdGePoint3d& lastPoint,
1225  const OdGeMatrix3d& xWorldToEye,
1226  OdGePoint3dArray& snapPoints ) const;
1227 
1228  virtual OdResult subGetOsnapPoints(
1229  OdDb::OsnapMode osnapMode,
1230  OdGsMarker gsSelectionMark,
1231  const OdGePoint3d& pickPoint,
1232  const OdGePoint3d& lastPoint,
1233  const OdGeMatrix3d& xWorldToEye,
1234  OdGePoint3dArray& snapPoints,
1235  const OdGeMatrix3d& insertionMat) const;
1236 
1237  virtual bool subIsContentSnappable() const;
1238 
1239  virtual OdResult subGetGripPoints( OdGePoint3dArray& gripPoints ) const;
1240  virtual OdResult subMoveGripPointsAt(const OdIntArray& indices,const OdGeVector3d& offset );
1241  virtual OdResult subGetGripPoints(
1242  OdDbGripDataPtrArray& grips,
1243  const double curViewUnitSize,
1244  const int gripSize,
1245  const OdGeVector3d& curViewDir,
1246  const int bitFlags ) const;
1247  virtual OdResult subMoveGripPointsAt(
1248  const OdDbVoidPtrArray& grips,
1249  const OdGeVector3d& offset,
1250  int bitFlags );
1251  virtual OdResult subGetStretchPoints( OdGePoint3dArray& stretchPoints ) const;
1252  virtual OdResult subMoveStretchPointsAt(
1253  const OdIntArray& indices,
1254  const OdGeVector3d& offset );
1255 
1256  virtual OdResult subIntersectWith(const OdDbEntity* pEnt, OdDb::Intersect intType,
1257  OdGePoint3dArray& points, OdGsMarker thisGsMarker = 0,
1258  OdGsMarker otherGsMarker = 0) const;
1259 
1260  virtual OdResult subIntersectWith(const OdDbEntity* pEnt, OdDb::Intersect intType,
1261  const OdGePlane& projPlane, OdGePoint3dArray& points,
1262  OdGsMarker thisGsMarker = 0, OdGsMarker otherGsMarker = 0) const;
1263 
1264  virtual void subHighlight(bool bDoIt = true, const OdDbFullSubentPath* pSubId = 0,
1265  bool highlightAll = false) const;
1266 
1267  virtual OdDb::Visibility subVisibility() const;
1268  virtual OdResult subSetVisibility(OdDb::Visibility visibility, bool doSubents = true);
1269 
1270  virtual OdResult subGetGeomExtents(
1271  OdGeExtents3d& extents) const;
1272  virtual OdResult subDeleteSubentPaths(const OdDbFullSubentPathArray& paths);
1273  virtual OdResult subAddSubentPaths(const OdDbFullSubentPathArray& paths);
1274 
1275  virtual OdResult subMoveGripPointsAtSubentPaths( const OdDbFullSubentPathArray& paths,
1276  const OdDbVoidPtrArray& gripAppData, const OdGeVector3d& offset, const OdUInt32 bitflags);
1277  virtual OdResult subGetGripPointsAtSubentPath( const OdDbFullSubentPath& path, OdDbGripDataPtrArray& grips,
1278  const double curViewUnitSize, const int gripSize,
1279  const OdGeVector3d& curViewDir, const OdUInt32 bitflags) const;
1280  virtual OdResult subGetSubentPathsAtGsMarker(OdDb::SubentType type, OdGsMarker gsMark,
1281  const OdGePoint3d& pickPoint,const OdGeMatrix3d& xfm,
1282  OdDbFullSubentPathArray& subentPaths,
1283  const OdDbObjectIdArray* pEntAndInsertStack = 0) const;
1284  virtual OdResult subGetGsMarkersAtSubentPath( const OdDbFullSubentPath& subPath,
1285  OdGsMarkerArray& gsMarkers) const;
1286  virtual OdDbEntityPtr subSubentPtr(const OdDbFullSubentPath& path) const;
1287  virtual OdResult subTransformSubentPathsBy(const OdDbFullSubentPathArray &paths, const OdGeMatrix3d & xform);
1288  virtual OdResult subGetSubentClassId( const OdDbFullSubentPath& path, void* clsId ) const;
1289  virtual OdResult subGetSubentPathGeomExtents( const OdDbFullSubentPath& path, OdGeExtents3d& extents ) const;
1290  virtual void subSubentGripStatus(OdDb::GripStat status, const OdDbFullSubentPath& subentity);
1291 
1293  friend class OdDbOsnapOverrule;
1295  friend class OdDbGripOverrule;
1299  friend class OdDbGeometryOverrule;
1300 };
1301 
1302 #include "TD_PackPop.h"
1303 
1304 #endif /* _ODDBENTITY_INCLUDED_ */
1305 
OdArray< OdDbEntityPtr > OdDbEntityPtrArray
Definition: DbEntity.h:56
OdSmartPtr< OdDbEntity > OdDbEntityPtr
Definition: DbEntity.h:46
#define TOOLKIT_EXPORT
Definition: DbExport.h:40
true
Definition: DimVarDefs.h:2046
false
Definition: DimVarDefs.h:165
void intersectWith(TRect &dcRectThis, const TRect &dcRect, bool bValidate=true)
Definition: GsDefs.h:294
ptrdiff_t OdGsMarker
unsigned int OdUInt32
unsigned short OdUInt16
#define ODRX_SEALED_VIRTUAL
#define ODRX_OVERRIDE
#define ODRX_SEALED
OdResult
Definition: OdResult.h:29
virtual OdResult setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbObjectId plotStyleNameId=OdDbObjectId::kNull, bool doSubents=true)
OdDbObjectId materialId() const
virtual OdResult setLinetype(OdDbObjectId linetypeID, bool doSubents=true)
virtual OdResult setColorIndex(OdUInt16 colorIndex, bool doSubents=true)
OdDb::Visibility visibility() const
virtual const OdGiMapper * materialMapper() const
ODRX_SEALED_VIRTUAL OdResult setVisibility(OdDb::Visibility visibility, bool doSubents=true) ODRX_SEALED
virtual OdResult setLayer(OdDbObjectId layerId, bool doSubents=true, bool allowHiddenLayer=false)
OdDbObjectId visualStyleId(VisualStyleType vstype=kFullVisualStyle) const
virtual OdCmEntityColor entityColor() const
virtual void setMaterialMapper(const OdGiMapper *mapper, bool doSubents=true)
virtual OdResult setLinetypeScale(double linetypeScale, bool doSubents=true)
OdString material() const
virtual OdResult setTransparency(const OdCmTransparency &transparency, bool doSubents=true)
OdDbObjectId blockId() const
OdDbObjectId linetypeId() const
virtual OdResult setMaterial(OdDbObjectId materialID, bool doSubents=true)
virtual OdResult setColor(const OdCmColor &color, bool doSubents=true)
virtual OdResult setPlotStyleName(const OdString &plotStyleName, bool doSubents=true)
virtual OdResult setVisualStyle(OdDbObjectId visualStyleId, VisualStyleType vstype=kFullVisualStyle, bool doSubents=true)
@ kFaceVisualStyle
Definition: DbEntity.h:361
@ kFullVisualStyle
Definition: DbEntity.h:360
virtual OdResult setLayer(const OdString &layerName, bool doSubents=true, bool allowHiddenLayer=false)
virtual OdResult setLinetype(const OdString &linetypeName, bool doSubents=true)
OdDbObjectId layerId() const
ODDB_DECLARE_MEMBERS(OdDbEntity)
OdDbObjectId colorId() const
double linetypeScale() const
OdCmColor color() const
OdString linetype() const
OdDb::PlotStyleNameType getPlotStyleNameId(OdDbObjectId &plotStyleNameId) const
OdUInt16 colorIndex() const
OdString layer() const
virtual OdResult setColorId(OdDbObjectId colorId, bool doSubents=true)
OdCmTransparency transparency() const
OdString plotStyleName() const
virtual OdResult setMaterial(const OdString &materialName, bool doSubents=true)
static TOOLKIT_EXPORT_STATIC const OdDbObjectId kNull
Definition: DbObjectId.h:118
GLuint GLsizei GLsizei GLint GLenum * type
Definition: gles2_ext.h:274
GLintptr offset
Definition: gles2_ext.h:183
AECBASE_API Result moveGripPointsAt(AECDbEntity *pEntity, const OdDbVoidPtrArray &aGripAppData, const std::vector< OdUInt32 > &aModes, const OdGeVector3d &vOffset, OdUInt8 iBitFlags)
AECBASE_API Result getGripPoints(AECDbEntity *pEntity, std::vector< AECGrPoint > &aGrips, double dCurViewUnitSize, OdUInt8 iGripSize, const OdGeVector3d &vViewDir, OdUInt8 iBitFlags)
PlotStyleNameType
Definition: OdaDefs.h:415
GripStat
Definition: DbGrip.h:80
DwgVersion
Definition: OdaDefs.h:46
EntSaveAsType
Definition: DbEntity.h:66
@ kSaveAsR12
Definition: DbEntity.h:68
@ kNoSave
Definition: DbEntity.h:67
@ kSaveAsR14
Definition: DbEntity.h:70
@ kSaveAsR13
Definition: DbEntity.h:69
Intersect
Definition: OdaDefs.h:472
OsnapMode
Definition: OdaDefs.h:480
Planarity
Definition: DbEntity.h:74
@ kLinear
Definition: DbEntity.h:77
@ kPlanar
Definition: DbEntity.h:76
@ kNonPlanar
Definition: DbEntity.h:75
DragStat
Definition: DbGrip.h:73
LineWeight
Definition: OdaDefs.h:384
CollisionType
Definition: DbDatabase.h:360
Visibility
Definition: DbObject.h:144