zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/////////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). 
// All rights reserved. 
// 
// This software and its documentation and related materials are owned by 
// the Alliance. The software may only be incorporated into application 
// programs owned by members of the Alliance, subject to a signed 
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable  
// trade secrets of the Alliance and its suppliers. The software is also 
// protected by copyright law and international treaty provisions. Application  
// programs incorporating this software must include the following statement 
// with their copyright notices:
//   
//   This application incorporates Teigha(R) software pursuant to a license 
//   agreement with Open Design Alliance.
//   Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. 
//   All rights reserved.
//
// By use of this software, its documentation or related materials, you 
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
 
 
 
 
#ifndef _OD_DB_SHAPE_
#define _OD_DB_SHAPE_
 
#include "TD_PackPush.h"
 
#include "DbEntity.h"
 
 
/** \details
    <group OdDb_Classes>
 
    This class represents Shape entities in an OdDbDatabase instance.
    
    \remarks
    A Shape entity is a single character of an SHX font. It is specified by name() and/or shapeNumber() and styleId(). 
  
    Library: TD_Db
 
    \sa
    <link db_shape.html, Working with Shapes>
 
    OdDbMText, OdDbText classes
*/
class TOOLKIT_EXPORT OdDbShape : public OdDbEntity
{
public:
 
  /*
    OdDbShape(const OdGePoint3d& position,
      double size,
      const OdChar* name,
      double rotation = 0,
      double widthFactor = 0);
  */
 
  ODDB_DECLARE_MEMBERS(OdDbShape);
 
  OdDbShape();
  /** \details
    Returns the position of this entity (WCS equivalent of DXF 10).
  */
  OdGePoint3d position() const;
  
  /** \details
    Sets the position of this entity (WCS equivalent of DXF 10).
 
    \param position [in]  Position.
  */
  void setPosition(
    const OdGePoint3d& position);
 
  /** \details
    Returns the size of this Shape entity (DXF 40).
  */
  double size() const;
 
  /** \details
    Sets the size of this Shape entity (DXF 40).
    \param size [in]  Shape size.
  */
  void setSize(
    double size);
 
  /** \details
    Returns the name of this Shape entity (DXF 2).
    \remarks
    The name is not part of a Shape entity, but is derived from shapeNumber() and styleId().
  */
  OdString name() const;
 
  /** \details
    Sets the name of this Shape entity (DXF 2).
    
    \remarks
    The name is not part of a Shape entity, but is derived from shapeNumber() and shapeIndex().
    It is more efficient to use setShapeNumber() and setStyleId() directly.
  */
  OdResult setName(
    const OdString& name);
 
  /** \details
    Returns the rotation angle of this Shape entity (DXF 50).
    \note
    All angles are expressed in radians.
  */
  double rotation() const;
  
  /** \details
    Sets the rotation angle of this Shape entity (DXF 50).
    \param rotation [in]  Rotation angle.
    \note
    All angles are expressed in radians.
  */
  void setRotation(
    double rotation);
 
  /** \details
    Returns the relative X scale factor (width factor) for this Shape entity (DXF 41).
  */
  double widthFactor() const;
 
  /** \details
    Sets the relative X scale factor (width factor) for this Shape entity (DXF 41).
    
    \param widthFactor [in]  Width factor.
  */
  void setWidthFactor(
    double widthFactor);
 
 /** \details
    Returns the oblique angle of this Shape entity (DXF 51).
 
    \remarks
    oblique() has a range of ±1.48335 radians (±85°).
    
    Oblique angles are measured clockwise from the vertical.
 
    \note
    All angles are expressed in radians.  
 */
  double oblique() const;
  
  /** \details
    Sets the oblique angle of this Shape entity (DXF 51).
    \param oblique [in]  Oblique angle.
    
    \remarks
    oblique() has a range of ±1.48335 radians (±85°).
    
    Oblique angles are measured clockwise from the vertical.
     
    \note
    All angles are expressed in radians.  
  */
  void setOblique(
    double oblique);
 
  /** \details
    Returns the thickness of this entity (DXF 39).
    
    \remarks
    Thickness is the extrusion length along the normal.
  */
  double thickness() const;
  
  /** \details
    Sets the thickness of this entity (DXF 39).
    \param thickness [in]  Thickness.
    \remarks
    Thickness is the extrusion length along the normal.
  */
  void setThickness(
    double thickness);
 
  /** \details
    Returns the WCS normal to the plane of this entity (DXF 210).
  */
  OdGeVector3d normal() const;
  
  /** \details
    Sets the WCS normal to the plane of this entity (DXF 210).
    \param normal [in]  Normal.
  */
  void setNormal(
    const OdGeVector3d& normal);
 
  bool isPlanar() const;
 
  virtual OdResult getPlane(
    OdGePlane& plane, 
    OdDb::Planarity& planarity) const;
 
  /** \details
    Returns the shape number of this Shape entity.
    \remarks
    A Shape entity is a single character of an SHX font. 
    This function returns the code of that character.  
  */
  OdInt16 shapeNumber() const;
 
  /** \details
    Sets the shape number of this Shape entity.
    \remarks
    A Shape entity is a single character of an SHX font. 
    This function sets the code of that character.
    \param shapeNumber [in]  Shape number.  
  */
  void setShapeNumber(
    OdInt16 shapeNumber);
 
  /** \details
    Returns the Object ID of the OdDbTextStyleTableRecord containing
    the SHX font file for this Shape entity.
 
    \remarks
    A Shape entity is a single character of an SHX font. This function
    returns a reference to that font.
  */
  OdDbObjectId styleId() const;
 
  /** \details
    Sets the Object ID of the OdDbTextStyleTableRecord containing
    the SHX font file for this Shape entity.
 
    \remarks
    A Shape entity is a single character of an SHX font. This function
    sets a reference to that font.
    \param styleId [in]  Style Object ID.  
  */
  OdResult setStyleId(
    OdDbObjectId styleId);
 
  bool subWorldDraw(
    OdGiWorldDraw* pWd) const;
 
  OdResult dwgInFields(
    OdDbDwgFiler* pFiler);
 
  void dwgOutFields(
    OdDbDwgFiler* pFiler) const;
 
  OdResult dxfInFields(
    OdDbDxfFiler* pFiler);
 
  void dxfOutFields(
    OdDbDxfFiler* pFiler) const;
 
  void dxfOut(
    OdDbDxfFiler* pFiler) const;
 
  OdResult dxfInFields_R12(
    OdDbDxfFiler* pFiler);
 
  void dxfOutFields_R12(
    OdDbDxfFiler* pFiler) const;
 
  OdResult subGetClassID(
    void* pClsid) const;
 
  virtual OdResult subTransformBy(
    const OdGeMatrix3d& xfm);
 
  OdGeMatrix3d getEcs( ) const;
};
 
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbShape object pointers.
*/
typedef OdSmartPtr<OdDbShape> OdDbShapePtr;
 
#include "TD_PackPop.h"
 
#endif