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
/////////////////////////////////////////////////////////////////////////////// 
// 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_SECTIONSYMBOL_H
#define OD_SECTIONSYMBOL_H
 
#include "DbViewSymbol.h"
#include "TD_PackPush.h"
 
/** \details
    This class represents Section Symbol entities.
 
    Library: AcModelDocObj
    <group OdModelDocObj_Classes> 
*/
class MODELDOCOBJ_EXPORT OdDbSectionSymbol : public OdDbViewSymbol
{
public:
  ODDB_DECLARE_MEMBERS(OdDbSectionSymbol);
 
  /** \details
    Default constructor. Creates an OdDbDetailSymbol instance.
  */
  OdDbSectionSymbol();
  ~OdDbSectionSymbol();
 
  /** \details
    Returns the number of points in the section line of this Section Symbol entity.
  */
  int sectionPointsCount() const;
 
  /** \details
    Gets all points in the section line of this Section Symbol entity.
 
    \param pts [out]  Receives section line points.
  */
  void getSectionPoints(OdGePoint3dArray& pts) const;
 
  /** \details
    Gets values of label offset from all vertices.
 
    \param offsets [out]  Receives offset vectors.
  */
  void getLabelOffsets(OdGeVector3dArray& offsets) const;
 
  /** \details
    Gets the section line point at the specified index. 
 
    \param idx [in]  Index of the section line vertex.
    \param pt [out]  Receives the point at the index idx.
 
    \note
    eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()).
  */
  OdResult getSectionPointAt(int idx, OdGePoint3d& pt) const;
 
  /** \details
    Gets the section vertex bulge parameter at the specified index. 
 
    \param idx [in]  Index of the section symbol vertex.
    \param bulge [out]  Receives the bulge at the index idx.
 
    \note
    eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()).
  */
  OdResult getBulgeAt(int idx, double& bulge) const;
 
  /** \details
    Gets the label at the specified vertex index. 
 
    \param idx [in]  Index of the section symbol vertex.
    \param sName [out]  Receives the string that represents label.
 
    \note
    eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()).
  */
  OdResult getLabelNameAt(int idx, OdString& sName) const;
 
 
  /** \details
    Gets the label offset value from the specified vertex. 
 
    \param idx [in]  Index of the section symbol vertex.
    \param offset [out]  Receives the offset value.
 
    \note
    eOk value if successful, eOutOfRange if  idx is out of range (idx > sectionPointsCount()).
  */
  OdResult getLabelOffsetAt(int idx, OdGeVector3d& offset) const;
 
  /** \details
    Checks whether the view direction of the section symbol is left.
 
    \note
    Returns true only if the view direction is left, and false otherwise.
  */
  bool isViewDirectionLeft() const;
  void setViewDirectionLeft(bool bLeft);
 
  /** \details
    Checks whether the section symbol defines a half or full section.
 
    \note
    Returns true only if the section symbol defines a half section cut, false for full sections.
  */
  bool isHalfSection() const;
  void setIsHalfSection(bool bHalf);
 
  // Methods to use internal only :
 
  /** \details
    Appends new point of section line.
 
    \param pt [in]  Point of the section line.
    \param bulge [in]  Value of bulge.
 
    \note
    eOk value if successful.
  */
  OdResult addSectionPoint(const OdGePoint3d& pt, double bulge = 0);
 
  /** \details
    Modifies point by index.
 
    \param idx [in]  Index of the section symbol vertex.
    \param pt [in]  New value of point.
    \param bulge [in]  Value of bulge.
 
    \note
    eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()).
  */
  OdResult setSectionPointAt(int idx, const OdGePoint3d& pt, double bulge = 0);
 
 /** \details
    Modifies label name by index.
 
    \param idx [in]  Index of the section symbol vertex.
    \param name [in]  Name of label.
 
    \note
    eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()).
 */
  OdResult setLabelNameAt(int idx, const OdString & name);
 
 /** \details
    Modifies label offset by index.
 
    \param idx [in]  Index of the section symbol vertex.
    \param offset [in]  Value of label's offset.
 
    \note
    eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()).
 */
  OdResult setLabelOffsetAt(int idx, const OdGeVector3d& offset);
 
protected:
  // OdDbObject methods :
  virtual OdResult dwgInFields(OdDbDwgFiler* pFiler);
  virtual void dwgOutFields(OdDbDwgFiler* pFiler) const;
  virtual OdResult dxfInFields(OdDbDxfFiler* pFiler);
  virtual void dxfOutFields(OdDbDxfFiler* pFiler) const;
 
  // OdGiDrawable methods :
  virtual bool subWorldDraw(OdGiWorldDraw* pWorldDraw) const;
 
  // Methods to use internal only :
  //OdResult setSectionPoints(const OdGePoint3dArray& pts);
  //OdResult setSectionPoints(const OdGePoint3dArray& pts, const OdGeDoubleArray& bulges);
  //OdResult removeSectionPointAt(int idx);
  //void clearSectionPoints();
  //OdResult setLabelNames(const OdArray<OdString>& names);
  //OdResult setLabelOffsets(const OdGeVector3dArray& offsets);
  //void resetLabelOffsets(bool allOffsets = true);
  //bool flipDirection();
};
 
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbSectionSymbol object pointers.
*/
typedef OdSmartPtr<OdDbSectionSymbol> OdDbSectionSymbolPtr;
 
#include "TD_PackPop.h"
 
#endif // OD_SECTIONSYMBOL_H