Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoBaseExtrusion.h
1#if !defined(_SO_BASE_EXTRUSION_)
2#define _SO_BASE_EXTRUSION_
3
4/*=======================================================================
5 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
6 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
7 *** ***
8 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
9 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
10 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
11 *** ***
12 *** RESTRICTED RIGHTS LEGEND ***
13 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
14 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
15 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
16 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
17 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
18 *** ***
19 *** COPYRIGHT (C) 1996-2017 BY FEI S.A.S, ***
20 *** BORDEAUX, FRANCE ***
21 *** ALL RIGHTS RESERVED ***
22**=======================================================================*/
23/*=======================================================================
24** Author : VSG (MMM YYYY)
25**=======================================================================*/
26
27#include <Inventor/fields/SoSFBool.h>
28#include <Inventor/fields/SoMFVec3f.h>
29#include <Inventor/fields/SoSFVec3f.h>
30#include <Inventor/nodes/SoShape.h>
31#include <Inventor/fields/SoSFEnum.h>
32#include <Inventor/SbPImpl.h>
33
34SO_PIMPL_PUBLIC_DECLARATION(SoExtrusion)
35
36SO_PIMPL_PUBLIC_DECLARATION(SoBaseExtrusion)
37
38
39//
40// Class: SoBaseExtrusion
41//
42// Node that defines the extrusion parameters
43//
45
77{
78 SO_NODE_ABSTRACT_HEADER(SoBaseExtrusion);
79 SO_PIMPL_PUBLIC_HEADER(SoBaseExtrusion)
80
81 public:
82
96
98 {
111 SMOOTH = 0,
112
116 BASIC = 1,
117
125 SMOOTH_WITHOUT_SELF_INTERSECTIONS = 2,
126 };
127
128 // Fields
133
138
143
149
155
156 private:
159
161 virtual ~SoBaseExtrusion();
162
163 private:
164
165 void commonConstructor();
166
167 private:
168
170 static SbVec3f *generateExtrusionVertices( SoAction *action, const SbVec3f * spine,
171 int numSpinePts, const SbVec2f *crossSection,
172 int numCrossSectionPts, const SbRotation *orientPts,
173 int numOrientPts, const SbVec2f *scalePts,
174 int numScalePts );
175
176 static SbVec3f findZaxis( const SbVec3f * spine, const int numspine,
177 const int i, const SbBool closed );
178 static SbVec3f findYaxis( const SbVec3f * spine, const int numspine,
179 const int i, const SbBool closed );
180
181 private:
182
183 static void initClass();
184 static void exitClass();
185
186 static void updateTols();
187
188 private:
189
190 static float s_dot_epsilon;
191 static float s_epsilon;
192
193 friend class inventor::impl::SoExtrusionImpl;
194 };
195
196
197#endif /* _SO_BASE_EXTRUSION_ */
198
Class for representing a rotation.
Definition SbRotation.h:126
2D vector class.
Definition SbVec.h:76
3D vector class.
Definition SbVec.h:932
Abstract base class for all actions.
Definition SoAction.h:132
Abstract base class for all extrusion-based shape nodes.
@ SPINE_ONLY
Only the spine points are scaled.
@ DEFAULT
Default scaling.
@ SECTION_ONLY
Only the cross section points are scaled.
SoSFBool beginCap
If TRUE, begin planar cap surfaces generated.
SoSFEnum scaleMode
Scaling behavior of the extrusion.
SoMFVec3f spine
Spine points.
SoSFEnum extrusionMode
Construction behavior of the extrusion.
SoSFBool endCap
If TRUE, end planar cap surfaces generated.
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Geometric shape ...
Multiple-value field containing any number of three-dimensional vectors.
Definition SoMFVec3f.h:181
Field containing a single Boolean value.
Definition SoSFBool.h:79
Field containing an enumerated value.
Definition SoSFEnum.h:89
Abstract base class for all shape nodes.
Definition SoShape.h:116
int SbBool
Boolean type.
Definition SbBase.h:87