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
/////////////////////////////////////////////////////////////////////////////// 
// 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 _DbLoftedSurface_h_Included_
#define _DbLoftedSurface_h_Included_
 
#include "TD_PackPush.h"
#include "DbSurface.h"
#include "DbLoftOptions.h"
 
 
/** \details
    This class implements a three-dimensional lofted surface entity.
    
    \sa
    TD_Db
   
    <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbLoftedSurface : public OdDbSurface
{
public:
  OdDbLoftedSurface ();
  ODDB_DECLARE_MEMBERS(OdDbLoftedSurface);
 
  /** \details
  Creates a lofted surface from the specified curves according to the specified lofting options. 
    
    \param crossSectionCurves     [in] A new height value.
    \param guideCurves             [in] An array of curve entities to be used as cross sections during the lofting process.
    \param pPathCurve             [in] A path curve.
    \param loftOptions          [in] A set of loft options.
    \param pSat                 [in] A pointer to an output stream buffer.
    
    \returns Returns eOk if a lofted surface was successfully created or an appropriate error code otherwise.
 
    \remarks
    All curve entities must be either open or closed. 
    When all curves are closed, this method accepts a point entity as the first and (or) last array element.
    This means that each curve in the guideCurves array must intersect each of the cross-section curves, so the guide curves form a net-like structure with the cross-section curves. 
    The cross-section and guide curves will be allocated on the created surface. 
    If any guide curves are specified, then pPathCurve should be NULL. 
    If pPathCurve is not NULL, then the created surface follows its shape (as close as possible). 
    The path curve does not need to intersect the cross-section curves and does not even need to be near the cross sections. 
    If the pPathCurve parameter is specified (not NULL), then the guideCurves array must be empty. 
  */
  virtual OdResult createLoftedSurface(
    OdDbEntityPtrArray& crossSectionCurves,
    OdDbEntityPtrArray& guideCurves,
    OdDbEntity* pPathCurve, 
    OdDbLoftOptions& loftOptions, const OdStreamBuf *pSat = 0 );
 
  /** \details
    Returns the number of cross section curves.
  */
  int           numCrossSections () const;
  
  /** \details
    Returns a cross section curve with specified index.
    
    \param idx [in]  An index of a cross section.
    
    \remarks
    The index for cross sections is zero-based (i.e., starts with 0). 
  */
  OdDbEntityPtr getCrossSection ( int idx ) const;
  
  /** \details
    Returns the number of guide curves used by the surface.
  */
    int           numGuideCurves () const;
  
  /** \details
  Returns a guide curve with specified index.
    
    \param idx [in]  An index of the guide curve.
    
    \remarks
    The index for guide curves is zero-based (i.e., starts with 0). 
  */
  OdDbEntityPtr getGuideCurve ( int idx ) const;
  
  /** \details
    Returns the path entity along which the surface is lofting.
  */
  OdDbEntityPtr getPathEntity () const;
  
  
 
  /** \details
  Returns the loft options used to create this surface.
    
    \param loftOptions [out]  An instance of the OdDbLoftOptions class passed from the method with the loft option values.
  */
  void          getLoftOptions ( OdDbLoftOptions& loftOptions ) const;
 
  
  /** \details
  Sets new loft option values and recreates the surface. 
    
    \param loftOptions [in]  New loft option values to be set.
    
    \returns Returns eOk if the lofted surface was successfully recreated with new options or an appropriate error code otherwise.
    
  \remarks 
    This method is implemented only for Spatial modeler and returns eNotImplementedYet status 
    for other modelers. 
  */
  OdResult setLoftOptions ( const OdDbLoftOptions& loftOptions );
 
  virtual OdResult subTransformBy(
    const OdGeMatrix3d& xfm );
 
  // OdDbObject methods
 
  virtual OdResult dwgInFields(
    OdDbDwgFiler* pFiler);
 
  virtual void dwgOutFields(
    OdDbDwgFiler* pFiler) const;
 
  virtual OdResult dxfInFields(
    OdDbDxfFiler* pFiler);
 
  virtual void dxfOutFields(
    OdDbDxfFiler* pFiler) const;
 
  virtual OdResult subGetClassID(
    void* pClsid) const;
 
  virtual bool isDependent() const { return false; }
};
 
/** \details
    This template class is a specialization of the OdSmartPtr class for OdDbLoftedSurfacePtr object pointers.
*/
typedef OdSmartPtr<OdDbLoftedSurface> OdDbLoftedSurfacePtr;
 
#include "TD_PackPop.h"
#endif //_DbLoftedSurface_h_Included_