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
280
281
282
283
/////////////////////////////////////////////////////////////////////////////// 
// 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 _ODDBGPIPPOINTS_INCLUDED_
#define _ODDBGPIPPOINTS_INCLUDED_
 
#include "RxObject.h"
#include "RxModule.h"
#include "IntArray.h"
#include "DbEntity.h"
#include "Gi/GiDrawable.h"
 
 
/** \details
    This class is the Grip Points Protocol Extension class.
    \sa
    TD_Db
 
    <group OdDb_Classes> 
*/
class TOOLKIT_EXPORT OdDbGripPointsPE : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbGripPointsPE);
  
  /** \details
    Returns all grip points of the specified entity.
 
    \param pEntity [in]  Pointer to the entity.
    \param gripPoints [in/out] Receives an array of WCS grip points.
 
    \remarks
    Grip points are appended to the specified array.
    
    \returns 
    Returns eOk if successful, or an appropriate error code if not.
    The default implementation of this function returns eNotImplemented.
  */
  virtual OdResult getGripPoints(
    const OdDbEntity* pEntity,
    OdGePoint3dArray& gripPoints ) const;
 
  /** \details
    Moves the specified grip points of the specified entity.
    
    \param pEntity [in]  Pointer to the entity.
    \param indices [in]  Array of indicies.
    \param offset [in] The direction and magnitude of the grip points offset (WCS).
    
    \remarks
    Each element in gripPoints has a corresponding entry in indices, which specifies the index of 
    the grip point as returned by getGripPoints.
    
    \returns
    Returns eOk if successful, or an appropriate error code if not.
    The default implementation of this function returns eNotImplemented.
  */
    virtual OdResult moveGripPointsAt(
    OdDbEntity* pEntity,
    const OdIntArray& indices,
    const OdGeVector3d& offset );
 
  /** \details
    Returns OdDbGripData objects for grip points of this entity.
 
    \param pEntity [in]  Pointer to the entity.
    \param grips [in/out] Receives an array of OdDbGripData objects.
 
    \remarks
    Grip points are appended to the specified array.
    When eNotImplemented is returned, the application should call the other overload of the getGripPoints() method.
    The default implementation of this function returns eNotImplemented.
  */
  virtual OdResult getGripPoints(
    const OdDbEntity* pEntity,
    OdDbGripDataPtrArray& grips,
    const double curViewUnitSize,
    const int gripSize,
    const OdGeVector3d& curViewDir,
    const int bitFlags ) const;
 
  /** \details
    Moves the specified grip points of this entity.
    
    \param pEntity [in]  Pointer to the entity.
    \param grips [in]  Array of OdDbGripData identifiers.
    \param offset [in] The direction and magnitude of the grip points offset (WCS).
 
    \remarks
    The default implementation of this function returns eNotImplemented. 
  */
    virtual OdResult moveGripPointsAt(
    OdDbEntity* pEntity,
    const OdDbVoidPtrArray& grips,
    const OdGeVector3d& offset,
    int bitFlags );
 
  /** \details
    Returns all stretch points of the specified entity.
 
    \param pEntity [in]  Pointer to the entity.
    \param stretchPoints [in/out]  Receives an array of WCS stretch points.
 
    \remarks
    Stretch points are appended to the specified array.
    
    Returns eOk if successful, or an appropriate error code if not.
    The default implementation of this function returns eNotImplemented.
  */
  virtual OdResult getStretchPoints(
    const OdDbEntity* pEntity,
    OdGePoint3dArray& stretchPoints ) const;
  /** \details
    Moves the specified stretch points of this entity.
    
    \param pEntity [in]  Pointer to the entity.
    \param indices [in]  Array of indicies.
    \param offset [in] The direction and magnitude of the stretch points offset (WCS).
    
    \remarks
    Each element in stretchPoints has a corresponding entry in indices, which specifies the index of 
    the stretch point as returned by getStretchPoints.
    
    Returns eOk if successful, or an appropriate error code if not.
    The default implementation of this function returns eNotImplemented.
  */
    virtual OdResult moveStretchPointsAt(
    OdDbEntity* pEntity,
    const OdIntArray& indices,
    const OdGeVector3d& offset );
 
  /** \details
    Returns all appropriate object snap points of the specified entity.
    
    \param pEntity [in]  Pointer to the entity.
    \param osnapMode [in]  The object snap mode being queried.
    \param gsSelectionMark [in]  The GS marker of the subentity being queried.
    \param pickPoint [in]  The WCS point being queried.
    \param lastPoint [in]  The WCS point picked before pickPoint.
    \param viewXform [in]  The WCS->DCS transformation matrix.
    \param ucs [in]  The WCS->UCS transformation matrix.
    \param snapPoints [in/out] Receives an array of UCS object snap points.
    
    \remarks
    Object snap points are appended to the specified array.
    
    osnapMode must be one of the following:
    
    <table>
    Name                      Value   Description 
    OdDb::kOsModeEnd          1       Endpoint
    OdDb::kOsModeMid          2       Midpoint
    OdDb::kOsModeCen          3       Center
    OdDb::kOsModeNode         4       Node
    OdDb::kOsModeQuad         5       Quadrant
    OdDb::kOsModeIntersec     6       Intersection
    OdDb::kOsModeIns          7       Insertion point
    OdDb::kOsModePerp         8       Perpendicular
    OdDb::kOsModeTan          9       Tangent
    OdDb::kOsModeNear         10      Nearest
    OdDb::kOsModeApint        11      Apparent intersection
    OdDb::kOsModePar          12      Parallel
    OdDb::kOsModeStart        13      Unknown 
    </table>
   
    The default implementation of this function returns eNotImplemented.
  */
    virtual OdResult getOsnapPoints( 
    const OdDbEntity* pEntity, 
    OdDb::OsnapMode osnapMode, 
    OdGsMarker gsSelectionMark, 
    const OdGePoint3d& pickPoint,
    const OdGePoint3d& lastPoint, 
    const OdGeMatrix3d& xWorldToEye, 
    OdGePoint3dArray& snapPoints ) const;
 
  /** \details
  Returns all appropriate object snap points of the specified entity.
 
  \param pEntity [in]  Pointer to the entity.
  \param osnapMode [in]  The object snap mode being queried.
  \param gsSelectionMark [in]  The GS marker of the subentity being queried.
  \param pickPoint [in]  The WCS point being queried.
  \param lastPoint [in]  The WCS point picked before pickPoint.
  \param viewXform [in]  The WCS->DCS transformation matrix.
  \param ucs [in]  The WCS->UCS transformation matrix.
  \param snapPoints [in/out] Receives an array of UCS object snap points.
  \param insert [in] Current insertion matrix
 
  \remarks
  Object snap points are appended to the specified array.
 
  osnapMode must be one of the following:
 
  <table>
  Name                      Value   Description 
  OdDb::kOsModeEnd          1       Endpoint
  OdDb::kOsModeMid          2       Midpoint
  OdDb::kOsModeCen          3       Center
  OdDb::kOsModeNode         4       Node
  OdDb::kOsModeQuad         5       Quadrant
  OdDb::kOsModeIntersec     6       Intersection
  OdDb::kOsModeIns          7       Insertion point
  OdDb::kOsModePerp         8       Perpendicular
  OdDb::kOsModeTan          9       Tangent
  OdDb::kOsModeNear         10      Nearest
  OdDb::kOsModeApint        11      Apparent intersection
  OdDb::kOsModePar          12      Parallel
  OdDb::kOsModeStart        13      Unknown 
  </table>
 
  The default implementation of this function returns eNotImplemented.
  */
    virtual OdResult getOsnapPoints( 
    const OdDbEntity* pEntity, 
    OdDb::OsnapMode osnapMode, 
    OdGsMarker gsSelectionMark, 
    const OdGePoint3d& pickPoint,
    const OdGePoint3d& lastPoint, 
    const OdGeMatrix3d& xWorldToEye, 
    OdGePoint3dArray& snapPoints,
    const OdGeMatrix3d& insert) const;
 
  /** \details
    Gets the grip points and supporting information about the grips for a subentity.
 
  \param pEntity [in]  Pointer to the entity.
    \param path [in]  The OdDbFullSubentPath to the subentity.
    \param grips [in/out] Receives an array of pointers of OdDbGripData objects, one object for each grip point in the subentity.
    \param curViewUnitSize [in] The size (in pixels) of one drawing unit in the current viewport.
    \param gripSize [in] The current grip size (in pixels).
    \param curViewDir [in] The view direction in the current viewport.
    \param bitflags [in] The bitmap of one or more flags specified by the GetGripPointsFlags enumeration.
  */
 
  virtual OdResult getGripPointsAtSubentPath(   const OdDbEntity* pEntity,
                        const OdDbFullSubentPath& path, OdDbGripDataPtrArray& grips,
                                              const double curViewUnitSize, const int gripSize,
                                              const OdGeVector3d& curViewDir, const OdUInt32 bitflags) const;
 
  /** \details
    Applies a vector offset to one or more grip points exposed by subentities on the object.
 
  \param pEntity [in]  Pointer to the entity.
    \param paths [in]  The array of OdDbFullSubentPath objects.
    \param gripAppData [in]  The array of pointers of OdDbGripData objects.
    \param offset [in]  The vector (in WCS coordinates) indicating the direction and magnitude of the translation.
    \param bitflags [in]  The bitmap of one or more flags specified by the GetGripPointsFlags enumeration.
  */
 
  virtual OdResult moveGripPointsAtSubentPaths(OdDbEntity* pEntity,
                        const OdDbFullSubentPathArray& paths, const OdDbVoidPtrArray& gripAppData,
                                                const OdGeVector3d& offset, const OdUInt32 bitflags);
};
 
/** \details
    This template class is a specialization of the OdSmartPtr class for OdDbGripPointsPE object pointers.
*/
typedef OdSmartPtr<OdDbGripPointsPE> OdDbGripPointsPEPtr;
 
#endif //_ODDBGPIPPOINTS_INCLUDED_