zjf
2023-03-10 abac8765bf6a1f400c2377b9999ce7495ba34a3f
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
/////////////////////////////////////////////////////////////////////////////// 
// 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_MINSERT_BLOCK_
#define _OD_DB_MINSERT_BLOCK_
 
#include "TD_PackPush.h"
 
#include "DbBlockReference.h"
 
class OdDbMInsertBlockImpl;
 
/** \details
    This class represents arrayed instances of block references (MInserts) in an OdDbDatabase instance.
 
    \sa
    TD_Db
 
    \remarks
    Creating an OdDbMInsertBlock instance with exactly one row and column creates an OdDbBlockReference instance. 
    <group OdDb_Classes> 
*/
class TOOLKIT_EXPORT OdDbMInsertBlock : public OdDbBlockReference
{
public:
  ODDB_DECLARE_MEMBERS(OdDbMInsertBlock);
 
  OdDbMInsertBlock();
  
  /** \details
    Returns the number of columns for this MInsert (DXF 70).
  */
  OdUInt16 columns() const;
 
  /** \details
    Sets the number of columns for this MInsert (DXF 70).
    \param numColumns [in]  Number of columns.
  */
  void setColumns(OdUInt16 numColumns);
  
  /** \details
    Returns the number of rows for this MInsert (DXF 71).
  */
  OdUInt16 rows() const;
 
  /** \details
    Sets the number of rows for this MInsert (DXF 71).
    \param numRows [in]  Number of rows.
  */
  void  setRows(OdUInt16 numRows);
  
  /** \details
    Returns the column spacing for this MInsert (DXF 44).
  */
  double columnSpacing() const;
 
  /** \details
    Sets the column spacing for this MInsert (DXF 44).
    \param colSpacing [in]  Column spacing.
  */
  void  setColumnSpacing(double colSpacing);
  
  /** \details
    Returns the row spacing for this MInsert (DXF 45).
  */
  double rowSpacing() const;
 
  /** \details
    Sets the row spacing for this MInsert (DXF 45).
    \param rowSpacing [in]  Row spacing.
  */
  void  setRowSpacing(
    double rowSpacing);
 
  /** \details
    Reads the .dwg file data of this object.
    
    \param pFiler [in]  Filer object from which data are read.
    
    \remarks 
    Returns the filer status. 
    This function is called by dwgIn() to allow the object to read its data. 
    When overriding this function: 
    1) Call assertWriteEnabled(). 2) Call the parent class's dwgInFields(pFiler). 
    3) If it returns eOK, continue; otherwise return whatever the parent's dwgInFields(pFiler) returned. 
    4) Call the OdDbDwgFiler(pFiler) methods to read each of the object's data items in the order 
    they were written. 
    5) Return pFiler->filerStatus().
  */   
  virtual OdResult dwgInFields(
    OdDbDwgFiler* pFiler);
 
  /** \details
    Writes the .dwg file data of this object.
    
    \param pFiler [in]  Pointer to the filer to which data are written.
    
    \remarks 
    This function is called by dwgIn() to allow the object to write its data. 
    When overriding this function: 
    1) Call assertReadEnabled(). 2) Call the parent class's dwgOutFields(pFiler). 
    3) Call the OdDbDwgFiler (pFiler) methods to write each of the object's data items in the 
    order they were written.
  */    
  virtual void dwgOutFields(
    OdDbDwgFiler* pFiler) const;
 
  /** \details
    Reads the DXF data of this object. 
    
    \param pFiler [in]  Pointer to the filer from which data are read. 
    
    \remarks 
    Returns the filer status. 
    This function is called by dxfIn() to allow the object to read its data. 
    When overriding this function: 
    1) Call assertWriteEnabled(). 2) Call the parent class's dwgInFields(pFiler).
    3) If it returns eOK, continue; otherwise return whatever the parent's dxfInFields(pFiler) returned. 
    4) Call the OdDbDxfFiler(pFiler) methods to read each of the object's data items in the order they were written. 
    5) Return pFiler->filerStatus().
  */    
  virtual OdResult dxfInFields(
    OdDbDxfFiler* pFiler);
 
  /** \details
    Reads the DXF data of this object. 
    
    \param pFiler [in]  Pointer to the filer from which data are read. 
    
    \remarks 
    This function is called by dxfOut() to allow the object to write its data. 
    When overriding this function: 
    1) Call assertReadEnabled(). 2) Call the parent class's dxfOutFields (pFiler). 
    4) Use pFiler to call the OdDbDxfFiler methods to write each of the object's data items 
    in the order they were written.
  */
  virtual void dxfOutFields(
    OdDbDxfFiler* pFiler) const;
 
  /** \details
    Overridables
  */    
  virtual OdResult subGetClassID(
    void* pClsid) const;
 
  /** \details
    Applies the specified 3D transformation matrix to this entity.
    
    \param xfm [in] 3D transformation matrix.
    
    \remarks
    Returns eOk if successful, or an appropriate error code if not.
  */
  virtual OdResult subTransformBy(
    const OdGeMatrix3d& xfm);
 
  /** \details
    Explodes this entity into a set of simpler entities, and adds them to the specified block 
    table record.
 
    \param pTargetBlkRec [out]  Pointer to the Block Table Record.
    \param ids [in/out]  Receives an array of Object IDs of the new Block References.
 
    \remarks
    Entities resulting from the explosion are appended to the specified array.
    The newly created entities are database resident or not depending on the block table 
    record they are appended to. If block table record is database resident the entities 
    are database resident as well. If block table record is not database resident newly 
    created entities are not database resident.
    The default implementation of this function returns eNotApplicable. This function can 
    be overridden in custom classes.
  */  
  OdResult explodeToBlock(
    OdDbBlockTableRecord *pTargetBlkRec, 
    OdDbObjectIdArray *pResIdArray);
 
  /** \details
    This is subGetGeomExtents, a member of class OdDbBlockReference.
    
    \param extents [out] An output extents.
    
    \remarks
    Returns eOk if successful, or an appropriate error code if not.
  */ 
  OdResult subGetGeomExtents(
    OdGeExtents3d& extents) const;
 
  /** \details
    Returns true if the entity has no view-dependent graphics. In another case
    returns false.
    
    \param pWd [in] Pointer to the OdGiWorldDraw object.
  */
  virtual bool subWorldDraw(
    OdGiWorldDraw* pWd) const;
 
  /** \details
    Explodes this entity into a set of simpler entities. 
    
    \param entitySet [in] Receives an array of pointers to the new entities.
    
    \remarks
    Returns eOk if successful, or an appropriate error code if not.
  */
  virtual OdResult subExplode(OdRxObjectPtrArray& entitySet) const;
};
/** \details
  This template class is a specialization of the OdSmartPtr class for OdDbMInsertBlock object pointers.
*/
typedef OdSmartPtr<OdDbMInsertBlock> OdDbMInsertBlockPtr;
 
#include "TD_PackPop.h"
 
#endif