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
/////////////////////////////////////////////////////////////////////////////// 
// 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 _DBSCALE_INCLUDED_
#define _DBSCALE_INCLUDED_
 
#include "DbObject.h"
 
/** \details
  <group OdDb_Classes>
 
  This class implements the /scale object/ that stores information about an /annotation scale/ as an 
  element of the database container. The database stores the scale instances in the dictionary 
  and associates the object ID with an each scale instance. The /scale dictionary/ is accessed from 
  the /database object/ using the getScaleListDictionaryId() method. The /root drawing dictionary/, 
  associates the "ACAD_SCALELIST" name with the /scale dictionary/.
 
  \remarks
  This class is intended for stand-alone applications only. TXSDK developers cannot use it.
 
  \sa
  TD_Db
 
  \sa
  <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
  <link db_scale_sample_dictionary.html, Example of Working with the Scale Dictionary Object>
 
  \sa
  <link db_scale.html, Working with Scales>
 
  OdDbAnnotationScale class
*/
class TOOLKIT_EXPORT OdDbScale : public OdDbObject
{
public:
  ODDB_DECLARE_MEMBERS(OdDbScale);
 
  /** \details
    Builds an instance of the scale object.
 
    \remarks
    Use the static pseudo-constructor instead it.
    See: <link db_scale_manipulate.html, Manipulating Objects of the Scale Dictionary>
  */
  OdDbScale();
 
 
  /** \details
    Returns the internal scale name as a String value. This name is used as a comment for the ratio 
    of paper units to drawing units when the scale object is displayed in a list.
  
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::setScaleName() method
  */
  class OdString scaleName() const;
 
 
  /** \details
    Sets the internal scale name as a String value. This name is used as a comment for the ratio 
    of paper units to drawing units when the scale object is displayed in a list. The initial value 
    is an empty string by default.
  
    \param sName [in]   Scale name as non-empty string.
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::scaleName() method
  */
  void setScaleName( const OdString& sName );
 
 
  /** \details
    Returns the scale factor as a positive Double value. This factor defines the ratio in which 
    units of model space correlate to the units of paper space and indicates how many paper units 
    fit to one drawing unit.
  
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::paperUnits(), OdDbScale::drawingUnits() methods
  */
  double scale() const;
 
 
  /** \details
    Returns the number of drawing units as a positive Double value.
  
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::setDrawingUnits(), OdDbScale::paperUnits(), OdDbScale::scale() methods
  */
  double drawingUnits() const;
 
 
  /** \details
    Sets the number of drawing units as a positive Double value. The initial value is 1.0 by default.
  
    \param vUnits [in]   value of drawing units.
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::drawingUnits(), OdDbScale::setPaperUnits(), OdDbScale::scale() methods
  */
  void setDrawingUnits( double vUnits );
 
 
  /** \details
    Returns the number of paper units as a positive Double value.
  
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::setPaperUnits(), OdDbScale::drawingUnits(), OdDbScale::scale() methods
  */
  double paperUnits() const;
 
 
  /** \details
    Sets the number of paper units as a positive Double value. The initial value is 1.0 by default.
  
    \param vUnits [in]   value of paper units.
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::paperUnits(), OdDbScale::setDrawingUnits(), OdDbScale::scale() methods
  */
  void setPaperUnits( double vUnits );
 
 
  /** \details
    Determines whether the scale object is temporary stored in the database and returns True if the  
    scale is temporary or False if the scale is fixed. 
    
    \remarks
    The temporary scale typically exists because attached XREF objects in the drawing have dependencies 
    on scales that are not directly referenced by other objects in the drawing. 
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::setIsTemporaryScale() method
  */
  bool isTemporaryScale() const;
 
 
  /** \details
    Sets the scale temporary status as a Boolean value. The initial value is False by default.
 
    \remarks
    The temporary scale typically exists because attached XREF objects in the drawing have  
    dependencies on scales that are not directly referenced by other objects in the drawing. 
 
    \param bStatus [in]   True if the scale is temporary or False if the scale is fixed.
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::isTemporaryScale() method
  */
  void setIsTemporaryScale( bool bStatus );
 
 
  /** \details
    Determines whether the scale object is selected as one-to-one (1:1) by default and returns True if 
    the scale is selected (1:1) by default or False if the scale is not the default.
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::setIsUnitScale() method
  */
  bool isUnitScale() const;
 
 
  /** \details
    Sets the scale default status as a Boolean value. The initial value is False by default.
 
    \param bStatus [in]   True if the scale is selected (1:1) by default or False if the scale is not the default.
 
    \sa
    <link db_scale_sample_object.html, Example of Working with the Scale Object>
 
    \sa
    <link db_scale.html, Working with Scales>
 
    OdDbScale::isUnitScale() method
  */
  void setIsUnitScale( bool bStatus );
 
  /*!DOM*/
  /** \details
    For internal use only.
  */
  void getXRefMangledName(OdString, OdString&, OdDbDatabase *);
  /*!DOM*/  
  /** \details
    For internal use only.
  */
  static bool nameExists(const OdString&,OdString*,OdDbDatabase *);
 
  virtual OdResult dwgInFields(OdDbDwgFiler* pFiler) ODRX_OVERRIDE;
  virtual void dwgOutFields(OdDbDwgFiler* pFiler) const ODRX_OVERRIDE;
  virtual OdResult dxfInFields(OdDbDxfFiler* pFiler) ODRX_OVERRIDE;
  virtual void dxfOutFields(OdDbDxfFiler* pFiler) const ODRX_OVERRIDE;
 
  virtual void appendToOwner(OdDbIdPair& idPair, OdDbObject* pOwnerObject, OdDbIdMapping& ownerIdMap) ODRX_OVERRIDE;
  virtual OdResult subErase(bool erasing) ODRX_OVERRIDE;
  virtual void applyPartialUndo(OdDbDwgFiler* pFiler, OdRxClass* pClass) ODRX_OVERRIDE;
};
 
/** \details
  The typified smart pointer for the scale object. This template class is a specialization of 
  the OdSmartPtr class for OdDbScale object.
 
  \sa
  <link smart_pointers.html, Working with Smart Pointers>
*/
typedef OdSmartPtr<OdDbScale> OdDbScalePtr;
 
 
#endif //_DBSCALE_INCLUDED_