⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acis_tutorials_(geometry).htm

📁 acis说明文档
💻 HTM
📖 第 1 页 / 共 5 页
字号:
</td></tr></table><p>Another intcurve-related class that you should be aware of is the <i>bs3_curve</i> class.  A bs3_curve is a 3-dimensional b-spline curve.  (It is actually a NURBS curve.)  All int_cur classes contain a bs3_curve.  The bs3_curve is generally a b-spline approximation to the procedurally defined int_cur; however, in the case of an exact_int_cur the bs3_curve is considered to be exact, not an approximation; therefore, an exact_int_cur represents a NURBS curve.  In addition to a bs3_curve each int_cur may contain pointers to two surfaces and two <i>bs2_curves</i>.  (A bs2_curve is identical to a b3_curve, except it is defined in two dimensions, not three.)  The two surfaces may be used by the procedural definition of the int_cur.  Each of the two bs2_curves is (usually) an approximation to the image of the curve projected into the parameter space of the corresponding surface.  The exception to this occurs with the par_int_cur class.  In the case of a par_in_cur, the bs2_curve is considered to be exact.  A par_int_cur is the 3-dimensional curve defined by the 2-dimensional bs2_curve and its associated surface.  </p><p>This discussion of int_curs, bs3_curves, bs2_curves, etc. is intended to familiarize you with some of the terminology and concepts used in ACIS.  Most likely you will never create an int_cur, bs3_curve, or bs2_curve directly.  They will be created for you as a result of using higher level functions that create curves, CURVES, or EDGES.  For instance, you can create an EDGE based upon a NURBS curve using api_mk_ed_int_ctrlpts( ).  In fact, curves are often created by much higher level operations such as sweeps, blends, or Booleans.  Similarly, you most likely will never directly manipulate int_curs, bs3_curves, or bs2_curves.  (For instance, directly deleting an int_cur is dangerous.  Each int_cur contains a use count reflecting how many intcurves reference it.  When all of the intcurves referencing an int_cur have been deleted, the int_cur will delete itself.)  </p><a name="CURVES_.28upper_case_classes.29"></a><h3> <span class="mw-headline"> CURVES (upper case classes) </span></h3><p>CURVES are used by the ACIS model structure.  They are the geometry underlying EDGES.  There are four types of CURVES: STRAIGHT, ELLIPSE, HELIX, and INTCURVE.  Each UPPER CASE geometry class contains an instance of its corresponding lower case geometry class.  (In other words, a STRAIGHT contains a straight; an ELLIPSE contains an ellipse; a HELIX contains a helix; and an INTCURVE contains a intcurve.)  The CURVE classes also inherit all of the member functions of the ENTITY class, so they can be saved and restored, rolled backward and forward (i.e, undone and redone), debugged, copied, etc.  </p><a name="Surfaces"></a><h2> <span class="mw-headline"> Surfaces </span></h2><dl><dd><span class="boilerplate seealso"><i>Main article: <a href="/r18/index.php?title=Surfaces&amp;action=edit" class="new" title="Surfaces">Surfaces </a></i></span></dd></dl><p><br />Because the concept and implementation of surfaces is so similar to the concept and implementation of curves, the following discussion of surfaces is very similar to the discussion of curves.  </p><p>The concept of a surface is implemented in ACIS in the surface and SURFACE classes.  Classes derived from surface are not persistent: those derived from SURFACE are persistent.  The geometry underlying FACES must be persistent so SURFACES are used in the model structure.  Each FACE contains a pointer to a SURFACE. There are several types of SURFACES - and for each SURFACE type there is an associated (lower case) surface type - so let's briefly describe surfaces conceptually before we get into the class distinctions.  </p><p>Each surface maps a pair of parameter values (u, v) into a 3-dimensional point (x, y, z).  Each surface contains a pair of parameter ranges that restrict the values of the parameters, although in some cases the parameter range may be infinite, which means the parameter may take on any value.  Surfaces may be open, closed, or periodic in either parametric direction.  Periodic means two things in ACIS: </p><ol><li> If a surface is periodic in a parametric direction with a period, <i>p</i>, then the position corresponding to a parameter value, <i>t</i>, is the same position that corresponds to the parameter <i>t + n*p</i>, where <i>n</i> is any integer.  In other words, if you evaluate a surface that is periodic in a parametric direction at the parameter <i>t + n*p</i> you will get the same position for any integer value of n. </li><li> The surface is at least G1 continuous across the seam.  The seam for a periodic surface is the curve corresponding to the start and end of the principle parameter range.  The principle parameter range for a periodic surface is the range into which inverse evaluations are mapped.  (An evaluation maps a pair of parameter values (u, v) into a 3-dimensional point (x, y, z).  An inverse evaluation maps a 3-dimensional point (x, y, z) into a pair of parameter values (u, v).)  For example, a cone is periodic in the v direction.  The principle parameter range of an cone in the v direction is [-pi, pi], so at the point corresponding to a v parameter value of pi (or -pi) the surface must be at least G1 continuous in the v direction.   </li></ol><p>ACIS defines four types of analytic surfaces: planes, cones, spheres, and tori.  It defines a non-uniform rational b-spline surface and it defines many types of procedurally defined surfaces (for example, a surface of revolution.) The following table describes the specific classes used to create these types of curves.</p><table class="wikitable"><tr><th> Persistent Class</th><th> Non-Persistent Class</th><th> Description</th></tr><tr><td> PLANE</td><td> plane</td><td> a planar surface</td></tr><tr><td> CONE</td><td> cone</td><td> a conical surface</td></tr><tr><td> SPHERE</td><td> sphere</td><td> a spherical surface</td></tr><tr><td> TORUS</td><td> torus</td><td> a toroidal surface</td></tr><tr><td> SPLINE</td><td> spline</td><td> a NURBS surface, or<p>a procedural surface</p></td></tr></table><a name="surfaces_.28lower_case_classes.29"></a><h3> <span class="mw-headline"> surfaces (lower case classes) </span></h3><p>The surface class defines many virtual functions including the following: </p><ul><li> determining the parameter range of the surface, </li><li> determining if a surface is open, closed, or periodic in either parametric direction,</li><li> determining the position, normal, or curvature at a specific parametric location,</li><li> determining the parameter location corresponding to a position on the surface,</li><li> determining the foot of the perpendicular line from a given point to the surface,</li><li> determining if a given point is within a given tolerance of the surface.</li></ul><p>The specific surface types are described below.</p><p>A <i>plane</i> represents a portion of a planar surface.  The form of a <a href="/r18/index.php?title=Plane&amp;action=edit" class="new" title="Plane">plane</a> is always <i>open</i> in both directions. The parameter range of a plane may be (and is generally) limited to a subset of the real number line in both the u and v directions.  </p><p>A <i>cone</i> represents a portion of an elliptical cone.  A <a href="/r18/index.php?title=Cone&amp;action=edit" class="new" title="Cone">cone</a> is frequently used to represent a cylindrical surface (or more precisely, a right circular cylinder.)  A cone may be open, closed, or periodic in the v-direction.  A cone is open in the u-direction.  If a cone is periodic in the v-direction, it has a period of 2*pi and its principle parameter range is [-pi, pi].  In the u-direction a cone will not extend beyond its apex.  If a cone extends to its apex, it is singular in u at the apex.</p><p>A <i>sphere</i> represents a portion of a spherical surface.  A <a href="/r18/index.php?title=Sphere&amp;action=edit" class="new" title="Sphere">sphere</a> may be open, closed, or periodic in the v-direction.  A sphere is open in the u-direction, with a maximum parametre range in the u-direction of [-pi/2, pi/2].  If a sphere is periodic in the v-direction, it has a period of 2*pi and its principle parameter range is [-pi, pi].  If a sphere extends to either of its poles, it is singular in u at the pole.</p><p>A <i>torus</i> represents a portion of a toriodal surface.  A <a href="/r18/index.php?title=Torus&amp;action=edit" class="new" title="Torus">torus</a> may be a doughnut, apple, lemon, or vortex torus.  A non-degenerate torus (a donut) may be open, closed, or periodic in either parametric direction.  A degenerate torus (an apple, lemon, or vortex) is not periodic in the u-direction, but may be in the v-direction.  If a torus is periodic in the u-direction, it has a period of 2*pi and a parameter range of [-pi, pi].  If a torus is periodic in the v-direction, it has a period of 2*pi and a parameter range of [-pi, pi].  </p><p>A <i>spline</i> represents a parametric surface, with a specific parameter range.  The form of an <a href="/r18/index.php?title=Spline&amp;action=edit" class="new" title="Spline">spline</a> may be open, closed, or periodic in either direction.  A spline is really a wrapper around an <i>spl_sur</i>.  This makes it much more efficient to copy and manipulate splines.  The spl_sur class is an abstract base class.  There are many classes derived from the spl_sur class which demonstrates the flexibility of this class.  Some of these are enumerated below.</p><table class="wikitable"><tr><th> spl_sur class</th><th> Description</th></tr><tr><td>exact_spl_sur</td><td>a NURBS surface</td></tr><tr><td>ruled_spl_sur</td><td>a ruled surface</td></tr><tr><td>sum_spl_sur</td><td>a sum surfaces</td></tr><tr><td>law_spl_sur</td><td>surface defined by a user defined function</td></tr><tr><td>off_spl_sur</td><td>the offset of another surface</td></tr><tr><td>rot_spl_sur</td><td>a surface of revolution</td></tr><tr><td>skin_spl_sur</td><td>a skinned surface</td></tr><tr><td>net_spl_sur</td><td>a net surface</td></tr><tr><td>sweep_spl_sur</td><td>a swept surface</td></tr></table><p>Another spline-related class that you should be aware of is the <i>bs3_surface</i> class.  A bs3_surface is a 3-dimensional b-spline surface.  (It is actually a NURBS surface.)  All spl_sur classes contain a bs3_surface.  The bs3_surface is generally a b-spline approximation to the procedurally defined spl_sur; however, in the case of an exact_spl_sur the bs3_surface is considered to be exact, not an approximation; therefore, an exact_spl_sur represents a NURBS surface.   </p><p>This discussion of spl_surs and bs3_surfaces is intended to familiarize you with some of the terminology and concepts used in ACIS.  Most likely you will never create an spl_sur, or bs3_surface directly.  They will be created for you as a result of using higher level functions that create surface, SURFACES, or FACES.  For instance, you can create an FACE based upon a NURBS surface using api_mk_fa_spl_ctrlpts( ).  In fact, surfaces are often created by much higher level operations such as offsetting, sweeping, or blending.  Similarly, you most likely will never directly manipulate spl_surs or bs3_surfaces.  (For instance, directly deleting an spl_sur is dangerous.  Each spl_sur contains a use count reflecting how many splines reference it.  When all of the splines referencing a spl_sur have been deleted, the spl_sur will delete itself.)  </p><a name="SURFACES_.28upper_case_classes.29"></a><h3> <span class="mw-headline"> SURFACES (upper case classes) </span></h3><p>SURFACES are used by the ACIS model structure.  They are the geometry underlying FACES.  There are five types of SURFACES: PLANE, CONE, SPHERE, TORUS, and SPLINE.  Each UPPER CASE geometry class contains an instance of its corresponding lower case geometry class.  (In other words, a PLANE contains a plane; a CONE contains a cone; a SPHERE contains a sphere; a TORUS contains a torus; and a SPLINE contains a spline.)  The SURFACE classes also inherit all of the member functions of the ENTITY class, so they can be saved and restored, rolled backward and forward (i.e, undone and redone), debugged, copied, etc.  </p><a name="Parameter_Space_Curves_.28Pcurves.29"></a><h2> <span class="mw-headline"> Parameter Space Curves (Pcurves) </span></h2><dl><dd><span class="boilerplate seealso"><i>Main article: <a href="/r18/index.php?title=Pcurve&amp;action=edit" class="new" title="Pcurve">Pcurve</a></i></span></dd></dl><p><br />If an EDGE lies on a FACE, ACIS may contain a representation of CURVE underlying the EDGE in the parameter space of the SURFACE underlying the FACE.  The only cases in which ACIS requires a parameter space representation of the CURVE is:</p><ul><li> if the SURFACE is a SPLINE, or </li><li> if the EDGE is a tolerant EDGE.  (We shall discuss tolerant EDGES and COEDGES in <a href="/r18/index.php/Tutorial:ACIS_Tutorials_%28ACIS_Tolerances%29" title="Tutorial:ACIS Tutorials (ACIS Tolerances)">Tutorials (ACIS Tolerances)</a>.)</li></ul><p>For all other cases a parameter space representation of a CURVE is optional.  That is, for all other cases you may construct one for use by your application, but it most likely will not be used by ACIS algorithms.</p><p>With the exception of par_int_cur-based curves (and tolerant edges), parameter space curves are considered to be an secondary representation, generated from the curve and the surface. That is, the parameter space curves can be deleted and reconstructed using the curve and surface information.  </p><a name="pcurve_.28lower_case_class.29"></a><h3> <span class="mw-headline"> pcurve (lower case class) </span></h3><p>A pcurve is somewhat similar to an intcurve in the sense that a pcurve is really just a wrapper around an <i>par_cur</i>.  This makes it much more efficient to copy and manipulate pcurves.  The par_cur class is an abstract base class.  There are three classes derived from the par_cur class.  These are enumerated below.</p><table class="wikitable"><tr><th> par_cur class</th><th> Description</th></tr><tr><td>exp_par_cur</td><td>an explicit parameter space curve<p>(defined by a surface and a bs2_curve)</p></td></tr><tr><td>imp_par_cur</td><td>an implicit parameter space curve<p>(defined by one of the surfaces and bs2_curves underlying an intcurve)</p></td></tr><tr><td>law_par_cur</td><td>a law-based parameter space curve<p>(defined by a surface and a 2-dimensional law)</p></td></tr></table><p>We have already mentioned the <i>bs2_curve</i> class.  A bs2_curve is a 2-dimensional b-spline curve.  (It is actually a NURBS curve.)  A bs2_curve underlying a par_cur is an approximation to the image of a curve projected into the parameter space of a surface.  Because the evaluation of par_curs is based upon the evaluation of their underlying bs2_curves, the accuracy of par_cur (and, therefore, pcurve) evaluations depends upon the accuracy to which the bs2_curves are generated.  In other words, pcurves are not procedural curves.</p><p>This discussion of par_curs and bs2_curves is intended to familiarize you with some of the terminology and concepts used in ACIS.  Most likely you will never create an par_cur or bs2_curve directly.  In fact, most applications do not require direct access to pcurves or PCURVES.  They will be created and maintained for you as a result of your application's use of  higher level functions.    </p><a name="PCURVE_.28upper_case_class.29"></a><h3> <span class="mw-headline"> PCURVE (upper case class) </span></h3><p>PCURVES are the geometry underlying COEDGES, but not all COEDGES possess PCURVES.  A PCURVE is required only if a COEDGE lies on a SPLINE surface or the COEDGE is tolerant; otherwise, the PCURVE is optional. </p><p>Unlike CURVES and SURFACES there are no classes derived from the PCURVE class.  There is only one PCURVE class.  However, there are two fundamentally different types of PCURVES.  A PCURVE may have a private definition, meaning it contains a pcurve, or it may use a surface and bs2_curve underlying an intcurve.  This flexibility (using the data underlying an intcurve) allows models to be constructed fewer explicit pcurves.  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -