CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
GiModelerDummyGeometry.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 license
16// 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 _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
40template<class T, class DRAW, class WR, class WRA> class OdGeomGrabber : public T
41{
42 OdGsMarker m_curSelMarker;
43 WRA &wires;
44
46protected:
47 virtual OdGsMarker getCurSelMarker() const {
48 return m_curSelMarker;
49 }
50
51public:
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,
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,
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
122template<class T, class DRAW, class WR, class WRA> class OdShellGrabber : public T
123{
124 OdGsMarker m_curSelMarker;
125 WRA &wires;
126
128public:
129
130 OdShellGrabber(WRA &pW, DRAW &pVd) : T(pVd, pVd.geometry(), pVd.subEntityTraits())
131 , m_curSelMarker(0)
132 , wires(pW)
133 { }
134
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_
OdGiRegenType
Definition: GiCommonDraw.h:51
@ kOdGiHideOrShadeCommand
Definition: GiCommonDraw.h:54
OdGiArcType
Definition: GiGeometry.h:787
@ kOdGiArcSimple
Definition: GiGeometry.h:788
#define getFaceIndex(gsMarker)
ptrdiff_t OdGsMarker
int OdInt32
#define OdIntToGsMarker(arg)
virtual void nurbs(const OdGeNurbCurve3d &nurbs)
OdGeomGrabber(WRA &pW, DRAW &pVd)
virtual void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)
virtual void circularArc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple)
virtual OdGsMarker getCurSelMarker() const
virtual void circularArc(const OdGePoint3d &start, const OdGePoint3d &point, const OdGePoint3d &end, OdGiArcType arcType=kOdGiArcSimple)
virtual void polyline(OdInt32 nbPoints, const OdGePoint3d *pVertexList, const OdGeVector3d *pNormal=NULL, OdGsMarker lBaseSubEntMarker=-1)
virtual WR * appendWire()
virtual void circle(const OdGePoint3d &p1, const OdGePoint3d &p2, const OdGePoint3d &p3)
virtual void setSelectionMarker(OdGsMarker n)
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)
OdShellGrabber(WRA &pW, DRAW &pVd)
virtual OdGiRegenType regenType() const
virtual void setSelectionMarker(OdGsMarker n)