CFx SDK Documentation  2020SP3
GiModelerDummyGeometry.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 _ODGIMODELERDUMMYGEOM_INCLUDED_
25 #define _ODGIMODELERDUMMYGEOM_INCLUDED_
26 
27 #include "Gi/GiDummyGeometry.h"
28 
29 #include "DbBaseSubentId.h"
30 
31 #include "ModelerMarkers.h"
32 
33 #include "TD_PackPush.h"
34 
40 template<class T, class DRAW, class WR, class WRA> class OdGeomGrabber : public T
41 {
42  OdGsMarker m_curSelMarker;
43  WRA &wires;
44 
45  OdGeomGrabber();
46 protected:
47  virtual OdGsMarker getCurSelMarker() const {
48  return m_curSelMarker;
49  }
50 
51 public:
52 
53  OdGeomGrabber(WRA &pW, DRAW &pVd)
54  : T(pVd, pVd.geometry(), pVd.subEntityTraits())
55  , m_curSelMarker(0)
56  , wires(pW)
57  { }
58 
59  virtual void setSelectionMarker(OdGsMarker n) { m_curSelMarker = n; T::setSelectionMarker(n); }
60 
61  virtual WR *appendWire()
62  {
63  WR *pWire = wires.append();
64  pWire->selMarker = OdIntToGsMarker(-getFaceIndex(m_curSelMarker));
65  pWire->color = T::subEntityTraits().trueColor();
66  return pWire;
67  }
68 
69  virtual void circle(const OdGePoint3d& center, double radius, const OdGeVector3d& normal)
70  {
71  appendWire()->circle(center, radius, normal);
72  T::circle(center, radius, normal);
73  }
74 
75  virtual void circle(const OdGePoint3d& p1, const OdGePoint3d& p2, const OdGePoint3d& p3)
76  {
77  appendWire()->circle(p1, p2, p3);
78  T::circle(p1, p2, p3);
79  }
80 
81  virtual void circularArc(const OdGePoint3d& center,
82  double radius,
83  const OdGeVector3d& normal,
84  const OdGeVector3d& startVector,
85  double sweepAngle,
86  OdGiArcType arcType = kOdGiArcSimple)
87  {
88  appendWire()->circularArc(center, radius, normal, startVector, sweepAngle);
89  T::circularArc(center, radius, normal, startVector, sweepAngle, arcType);
90  }
91 
92  virtual void circularArc(const OdGePoint3d& start,
93  const OdGePoint3d& point,
94  const OdGePoint3d& end,
95  OdGiArcType arcType = kOdGiArcSimple)
96  {
97  appendWire()->circularArc(start, point, end);
98  T::circularArc(start, point, end, arcType);
99  }
100 
101  virtual void polyline(OdInt32 nbPoints,
102  const OdGePoint3d* pVertexList,
103  const OdGeVector3d* pNormal = NULL,
104  OdGsMarker lBaseSubEntMarker = -1)
105  {
106  appendWire()->polyline(nbPoints, pVertexList);
107  T::polyline(nbPoints, pVertexList, pNormal, lBaseSubEntMarker);
108  }
109 
110  virtual void nurbs(const OdGeNurbCurve3d& nurbs)
111  {
112  appendWire()->nurbs(nurbs);
113  T::nurbs(nurbs);
114  }
115 };
116 
122 template<class T, class DRAW, class WR, class WRA> class OdShellGrabber : public T
123 {
124  OdGsMarker m_curSelMarker;
125  WRA &wires;
126 
127  OdShellGrabber();
128 public:
129 
130  OdShellGrabber(WRA &pW, DRAW &pVd) : T(pVd, pVd.geometry(), pVd.subEntityTraits())
131  , m_curSelMarker(0)
132  , wires(pW)
133  { }
134 
135  virtual OdGiRegenType regenType() const { return kOdGiHideOrShadeCommand; }
136 
137  virtual void setSelectionMarker(OdGsMarker n) { m_curSelMarker = n; T::setSelectionMarker(n); }
138 
139  virtual void shell(
140  OdInt32 numVertices,
141  const OdGePoint3d* vertexList,
142  OdInt32 faceListSize,
143  const OdInt32* faceList,
144  const OdGiEdgeData* pEdgeData = 0,
145  const OdGiFaceData* pFaceData = 0,
146  const OdGiVertexData* pVertexData = 0)
147  {
148  WR *pWire = wires.append();
149  pWire->selMarker = m_curSelMarker;
150  pWire->color = T::subEntityTraits().trueColor();
151  pWire->shell(
152  numVertices,
153  vertexList,
154  faceListSize,
155  faceList,
156  pEdgeData,
157  pFaceData,
158  pVertexData);
159 
160  T::shell(
161  numVertices,
162  vertexList,
163  faceListSize,
164  faceList,
165  pEdgeData,
166  pFaceData,
167  pVertexData);
168  }
169 };
170 
171 #include "TD_PackPop.h"
172 
173 #include "ModelerMarkersUndef.h"
174 
175 #endif // #ifndef _ODGIMODELERDUMMYGEOM_INCLUDED_
OdGeVector3d
Definition: GeVector3d.h:54
kOdGiArcSimple
@ kOdGiArcSimple
Definition: GiGeometry.h:684
NULL
#define NULL
Definition: GsProperties.h:177
OdGeomGrabber::getCurSelMarker
virtual OdGsMarker getCurSelMarker() const
Definition: GiModelerDummyGeometry.h:47
OdShellGrabber::shell
virtual void shell(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
Definition: GiModelerDummyGeometry.h:139
OdGeomGrabber::circle
virtual void circle(const OdGePoint3d &p1, const OdGePoint3d &p2, const OdGePoint3d &p3)
Definition: GiModelerDummyGeometry.h:75
OdGeomGrabber::polyline
virtual void polyline(OdInt32 nbPoints, const OdGePoint3d *pVertexList, const OdGeVector3d *pNormal=NULL, OdGsMarker lBaseSubEntMarker=-1)
Definition: GiModelerDummyGeometry.h:101
OdGeomGrabber::setSelectionMarker
virtual void setSelectionMarker(OdGsMarker n)
Definition: GiModelerDummyGeometry.h:59
OdGiVertexData
Definition: GiGeometry.h:549
OdIntToGsMarker
#define OdIntToGsMarker(arg)
Definition: OdPlatformSettings.h:905
TD_PackPop.h
OdGsMarker
ptrdiff_t OdGsMarker
Definition: OdPlatformSettings.h:889
OdGiFaceData
Definition: GiGeometry.h:245
OdGeomGrabber::circularArc
virtual void circularArc(const OdGePoint3d &start, const OdGePoint3d &point, const OdGePoint3d &end, OdGiArcType arcType=kOdGiArcSimple)
Definition: GiModelerDummyGeometry.h:92
OdShellGrabber::OdShellGrabber
OdShellGrabber(WRA &pW, DRAW &pVd)
Definition: GiModelerDummyGeometry.h:130
OdGePoint3d
Definition: GePoint3d.h:55
OdGeomGrabber::circle
virtual void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)
Definition: GiModelerDummyGeometry.h:69
OdInt32
int OdInt32
Definition: OdPlatformSettings.h:782
OdGiArcType
OdGiArcType
Definition: GiGeometry.h:683
GiDummyGeometry.h
ModelerMarkersUndef.h
OdGeomGrabber::circularArc
virtual void circularArc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple)
Definition: GiModelerDummyGeometry.h:81
OdGiEdgeData
Definition: GiGeometry.h:67
TD_PackPush.h
OdGeNurbCurve3d
Definition: GeNurbCurve3d.h:49
OdGeomGrabber::appendWire
virtual WR * appendWire()
Definition: GiModelerDummyGeometry.h:61
OdGeomGrabber
Definition: GiModelerDummyGeometry.h:41
DbBaseSubentId.h
OdShellGrabber::regenType
virtual OdGiRegenType regenType() const
Definition: GiModelerDummyGeometry.h:135
getFaceIndex
#define getFaceIndex(gsMarker)
Definition: ModelerMarkers.h:32
ModelerMarkers.h
kOdGiHideOrShadeCommand
@ kOdGiHideOrShadeCommand
Definition: GiCommonDraw.h:53
OdShellGrabber
Definition: GiModelerDummyGeometry.h:123
OdGiRegenType
OdGiRegenType
Definition: GiCommonDraw.h:50
OdGeomGrabber::nurbs
virtual void nurbs(const OdGeNurbCurve3d &nurbs)
Definition: GiModelerDummyGeometry.h:110
OdShellGrabber::setSelectionMarker
virtual void setSelectionMarker(OdGsMarker n)
Definition: GiModelerDummyGeometry.h:137
OdGeomGrabber::OdGeomGrabber
OdGeomGrabber(WRA &pW, DRAW &pVd)
Definition: GiModelerDummyGeometry.h:53