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
/////////////////////////////////////////////////////////////////////////////// 
// 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 _DbRevolveOptions_h_Included_
#define _DbRevolveOptions_h_Included_
 
#include "TD_PackPush.h"
#include "DbSurface.h"
 
class OdDbRevolveOptionsImpl;
 
/** \details
Class for setting options used for creating revolving surfaces and revolving solids 
(by calling OdDbRevolvedSurface::createRevolvedSurface() or OdDb3dSolid::createRevolvedSolid() methods).
Revolve options are used to control the shape of the resulting surface or solid object.
 
<group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbRevolveOptions
{
public:
  /** \details 
  Creates an instance of revolving surface options.
  */
  OdDbRevolveOptions();
  
  /** \details 
  Creates a copy of another instance of revolving surface options (copy constructor).
  
  \param src [in] An instance of revolving surface options to be copied.
  */
  OdDbRevolveOptions(const OdDbRevolveOptions& src);
  
  /** \details 
  Destroys the instance of revolving surface options.
  */
  ~OdDbRevolveOptions();
  
  /** \details 
  Assigning operator for revolving surface options.
  
  \param src [in] An instance of revolving surface options to be assigned to this instance.
  */
  OdDbRevolveOptions& operator =(const OdDbRevolveOptions& src);
 
  /** \details
  Returns the draft angle in radians. 
 
  Draft angle is an angle of a profile's taper relative to the axis while the profile is revolving around the axis.
  The default value is equal to 0.0. 
  */
  double draftAngle() const;
  
  /** \details
  Sets the draft angle.
  
  Draft angle is an angle of a profile's taper relative to the axis while the profile is revolving around the axis.
  The default value is equal to 0.0. 
  
  \param ang [in]  A new draft angle (radians).
  */
  void setDraftAngle(double ang);
 
  /** \details
  Returns the twist angle in radians.
 
  Twist angle is the angle of a profile's twisting while the profile is revolving around the axis in radians. 
  The default value is equal to 0.0.
  */
  double twistAngle() const;
  
  /** \details
  Sets the twist angle.
  
  Twist angle is the angle of a profile's twisting while the profile is revolving around the axis in radians. 
  The default value is equal to 0.0.
  
  \param ang [in]  A new twist angle (radians).
  */
  void setTwistAngle(double ang);
 
  /** \details
  Returns the value of the close to axis option.
  
  If the close to axis option is equal to true, then the ends of the profile will be extended to the axis of revolution before revolving. 
  The default value of the option is false.
  */
  bool closeToAxis() const;
  
  /** \details
  Sets the value of the close to axis option.
  
  If the close to axis option is equal to true, then the ends of the profile will be extended to the axis of revolution before revolving. 
  The default value of the option is false.
  
  \param val [in]  A new value of the close to axis option.
 
  */
  void setCloseToAxis(bool val);
 
  /** \details
  Checks whether a specified entity is valid for the revolve operation.
  
  \param pRevEnt              [in]  A pointer to the entity (curve or region) to be revolved.
  \param axisPnt              [in]  A point on the axis of revolution.
  \param axisDir              [in]  A vector determining the direction of the revolution axis.
  \param closed               [out] A passed-in parameter for returning the indicator determining whether the revolved entity is closed.
  \param endPointsOnAxis      [out] A passed-in parameter for returning the indicator determining whether the revolved entity is open and whether its endpoints lie on the axis of revolution.
  \param planar               [out] A passed-in parameter for returning the indicator determining whether the revolved entity is planar.
  \param displayErrorMessages [in]  Indicates whether error messages are displayed. Default value is false.
  
  \returns Returns eOk if a specified entity is valid for revolving, or eInvalidInput otherwise.
  
  \remarks
  The method is called by OdDbRevolvedSurface:: createRevolvedSurface() and OdDb3dSolid::createRevolvedSolid() methods, so it is not necessary for a client application to call it. 
  */
  OdResult checkRevolveCurve(
    OdDbEntity* pRevEnt,
    const OdGePoint3d& axisPnt,
    const OdGeVector3d& axisDir,
    bool& closed,
    bool& endPointsOnAxis,
    bool& planar,
    bool displayErrorMessages = false);
 
private:
  friend class OdDbRevolveOptionsImpl;
  OdDbRevolveOptionsImpl* m_pImpl;
};
 
#include "TD_PackPop.h"
#endif //_DbRevolveOptions_h_Included_