📄 tutorialacis tutorial 3 understanding and traversing acis topology (part i) - docr18.mht
字号:
traditional winged-edge data structure, then only 2-manifold regions =
could be=20
modeled.) If an edge is used by a wire, then the edge will have a single =
coedge.=20
If an edge is used by one or more faces, it will have a coedge for each =
use by=20
each face. If an edge is used twice by a face, then the face is on both =
sides of=20
the edge. There are three terms for edges that are used twice by a face =
that you=20
should be aware of. </P>
<DIV class=3D"thumb tright">
<DIV class=3Dthumbinner style=3D"WIDTH: 302px"><A class=3Dimage=20
title=3D"Faces with spur, prop, and seam edges"=20
href=3D"http://doc.spatial.com/r18/index.php/Image:Tutorial3_EdgeTypes.jp=
g"><IMG=20
class=3Dthumbimage height=3D204 alt=3D"Faces with spur, prop, and seam =
edges"=20
src=3D"http://doc.spatial.com/r18/images/thumb/4/49/Tutorial3_EdgeTypes.j=
pg/300px-Tutorial3_EdgeTypes.jpg"=20
width=3D300 border=3D0></A>=20
<DIV class=3Dthumbcaption>
<DIV class=3Dmagnify style=3D"FLOAT: right"><A class=3Dinternal =
title=3DEnlarge=20
href=3D"http://doc.spatial.com/r18/index.php/Image:Tutorial3_EdgeTypes.jp=
g"><IMG=20
height=3D11 alt=3D"" src=3D"" width=3D15></A></DIV>Faces with spur, =
prop, and seam=20
edges</DIV></DIV></DIV>
<UL>
<LI>A <I>spur edge</I> is an edge that is not closed and it does not =
connect=20
to another edge on one or both ends. In other words, on one or both =
ends it=20
has a <I>free vertex</I> or a <I>spur vertex</I>. Spur edges can also =
exist in=20
wires. </LI></UL>
<UL>
<LI>A <I>prop edge</I> is any edge that is used twice by a face that =
is not=20
closed and is not a spur edge. It has adjacent edges at both ends. The =
exception to this if one or both of the vertices lie at singularities. =
A spur=20
edge may have a vertex at which there are no adjacent edges if the =
vertex lies=20
at a surface singularity. Prop edges and spur edges are mutually =
exclusive.=20
</LI></UL>
<UL>
<LI>A <I>seam edge</I> is a special case of a prop edge. If a prop =
edge runs=20
along the parametric boundary of a periodic surface (i.e., it splits =
the face=20
along parametric boundary of a periodic surface) then it may be called =
a seam=20
edge. </LI></UL>
<P>In general, spur edges and prop edges are not necessary for the =
topology of a=20
face and may be removed by merging. The exception to this is a seam edge =
on a=20
spline surface. As was stated in the loop discussion, prior to ACIS =
version 16=20
periodic faces on periodic spline surfaces required seam edges. Since =
ACIS=20
version 16 seam edges on periodic spline surface are optional. </P>
<P>The concept of a coedge is implemented in the COEDGE class. The =
COEDGE class=20
is derived from the ENTITY class. Each instance of a COEDGE contains a =
pointer=20
to the LOOP or WIRE that owns it, a pointer to the next COEDGE owned by =
the LOOP=20
or WIRE, a pointer to the previous COEDGE owned by the LOOP or WIRE, a =
pointer=20
to the partner COEDGE, a pointer to the underlying EDGE, and in some =
cases, a=20
pointer to parameter space curve, a PCURVE. (PCURVES will be discussed =
in=20
Tutorial 4.) </P><A name=3DEdges></A>
<H3><SPAN class=3Dmw-headline>Edges </SPAN></H3>
<DL>
<DD><SPAN class=3D"boilerplate seealso"><I>Main article: <A =
class=3Dnew=20
title=3DEdges=20
=
href=3D"http://doc.spatial.com/r18/index.php?title=3DEdges&action=3De=
dit">Edges</A></I></SPAN>=20
</DD></DL>
<P>An <B>edge</B> is either part of a wire or used to bound a face. In =
other=20
words, if an edge is part of a wire it cannot bound a face and similarly =
if an=20
edge bounds a face it cannot be part of a wire. A single edge can bound =
many=20
faces. The faces bounded by an edge are obtained from the coedges of the =
edge.=20
Each coedge represents the use of an edge by a face (or a wire.) The =
coedges of=20
an edge are stored in a counter clockwise order about the edge; =
therefore, we=20
can obtain an ordered list of faces about the edge. If an edge belongs =
to a wire=20
it will have a single coedge. (The exception to this rule is an =
"intersection=20
graph" used by the ACIS Boolean algorithm. An edge in an intersection =
graph wire=20
may have multiple coedges. The structure and use of intersection graph =
wires is=20
beyond the scope of this tutorial. One should just be aware that if one =
obtains=20
a intersection graph wire it will contain more than one coedge per edge =
and=20
needs to be "cleaned" before it can be used by other ACIS algorithms.) =
One=20
obtains adjacent edges in a wire by following the pointers in each =
edge's=20
coedge. </P>
<P>An edge has a direction. The direction of the edge is obtained using =
the=20
direction of its underlying geometry; i.e., its curve. The edge may run =
in the=20
same direction as its curve, or in the opposite direction of its curve. =
Because=20
an edge is directed, it has a start and an end vertex. These may be the =
same=20
vertex. </P>
<P>In addition to the three types of edges mentioned in the coedge =
section=20
(spur, prop, and seam edges) there are a few more types of edges that =
you should=20
be familiar with. Edges can be categorized according to their closure. =
For=20
instance, if an edge has two distinct vertices, then the edge is =
<I>open</I>. If=20
the edge start and end vertices of an edge are the same, the edge is=20
<I>closed</I>. If the edge is closed and underlying curve's start and =
end=20
tangent directions are the same, then the edge is <I>periodic</I>. =
Another=20
special type of edge is one with zero length. Such an edge is considered =
to be a=20
<I>degenerate</I> edge. Such an edge is often referred to as a NULL edge =
because=20
the underlying pointer to the edge's geometry is NULL. One should never=20
encounter a NULL edge in the interior of a wire, although a wire may =
consist=20
entirely of a NULL edge. If a NULL edge resides in the middle of a face, =
it is=20
often referred to as an isolated vertex. One would obtain an isolated =
vertex if=20
one connected two spheres that were touching at a single point. There is =
also an=20
isolated vertex at the apex of a cone. </P>
<P>What are the relationships among the edges of a face or wire? The =
edges of a=20
face or wire may be connected to each other both physically or =
topologically. If=20
two edges touch each other (i.e., they intersect) then there must be one =
or two=20
vertices to represent the set of common points. Edges of a face or wire =
may not=20
touch except at their boundary vertices. </P>
<P>The concept of an edge is implemented in the EDGE class. The EDGE =
class is=20
derived from the ENTITY class. Each instance of a EDGE contains a =
pointer to the=20
COEDGE that owns it, a pointer to the start VERTEX of the EDGE, a =
pointer to the=20
end VERTEX of the EDGE, and pointer to the CURVE underlying the EDGE. =
(CURVES=20
will be discussed in Tutorial 4.) </P><A name=3DVertices></A>
<H3><SPAN class=3Dmw-headline>Vertices </SPAN></H3>
<DL>
<DD><SPAN class=3D"boilerplate seealso"><I>Main article: <A =
class=3Dnew=20
title=3DVertices=20
=
href=3D"http://doc.spatial.com/r18/index.php?title=3DVertices&action=3D=
edit">Vertices</A></I></SPAN>=20
</DD></DL>
<P><BR>A <B>vertex</B> typically is used to bound an edge. In fact, a =
vertex may=20
bound many edges. In a manifold solid the vertex will point to =
<I>one</I> of its=20
edges and all of the other edges bounded by the vertex can be obtained =
by=20
traversing edge and coedge pointers. This is the most common case. </P>
<DIV class=3D"thumb tright">
<DIV class=3Dthumbinner style=3D"WIDTH: 322px"><A class=3Dimage=20
title=3D"A non-manifold vertex connecting two separation surfaces"=20
href=3D"http://doc.spatial.com/r18/index.php/Image:Tutorial3_Vert1.jpg"><=
IMG=20
class=3Dthumbimage height=3D242=20
alt=3D"A non-manifold vertex connecting two separation surfaces"=20
src=3D"http://doc.spatial.com/r18/images/thumb/6/68/Tutorial3_Vert1.jpg/3=
20px-Tutorial3_Vert1.jpg"=20
width=3D320 border=3D0></A>=20
<DIV class=3Dthumbcaption>
<DIV class=3Dmagnify style=3D"FLOAT: right"><A class=3Dinternal =
title=3DEnlarge=20
href=3D"http://doc.spatial.com/r18/index.php/Image:Tutorial3_Vert1.jpg"><=
IMG=20
height=3D11 alt=3D"" src=3D"" width=3D15></A></DIV>A non-manifold vertex =
connecting two=20
separation surfaces</DIV></DIV></DIV>
<P>If a volume is non-manifold at the vertex, as shown in the figure to =
the=20
right, then the vertex will point to <I>one</I> of the edges it bounds =
in each=20
manifold region (also called a "separation surface.") The other edges in =
each=20
separation surface that are bounded by the vertex can be obtained by =
traversing=20
edge and coedge pointers. (The pointers of the edges and coedges =
connected to=20
the non-manifold vertex are not affected by the non-manifold vertex.) If =
a=20
vertex bounds an edge of a face (including a NULL edge in the interior =
of a=20
face) and an edge of a wire, the vertex points to the edge on the face =
and the=20
edge on the wire. In other words, the wire is treated as if it were a =
separation=20
surface. Looking at this from another perspective, if a wire touches the =
interior of a face, there must be a vertex at the point where the wire =
and face=20
intersect. The vertex in the face will be an isolated vertex (i.e., a =
NULL=20
edge.) The vertex must contain a pointer to both an edge of the wire and =
the=20
NULL edge of the face. </P>
<P>What are the relationships among the vertices of a face or wire? The =
vertices=20
of a face or wire must be physically distinct from each other. If two =
vertices=20
touch each other (i.e., they are within a global or local tolerance of =
each=20
other) then the vertices must be combined into a single vertex. </P>
<P>The concept of an vertex is implemented in the VERTEX class. The =
VERTEX class=20
is derived from the ENTITY class. Each instance of a VERTEX contains a =
pointer=20
to an EDGE that owns it (or in the case of a non-manifold VERTEX, a list =
of=20
pointers to a set of EDGES that own it), and pointer to the APOINT =
underlying=20
the VERTEX. (APOINTS will be discussed in Tutorial 4.) </P><A=20
name=3DTopology_classes></A>
<H2><SPAN class=3Dmw-headline>Topology classes </SPAN></H2>
<P>The topological classes in ACIS are derived from the ENTITY class. =
What do we=20
already know about these classes simply because they are derived from =
the ENTITY=20
class? First, we know that they are persistent; i.e., they have states =
that are=20
recorded in the ACIS history structure. They may be created, deleted, =
modified,=20
saved, restored, copied, and debugged. And we know that the topology =
classes=20
have UPPER CASE names. They are, from the top-down, <A class=3D"external =
text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classBODY.html">BODY</A=
>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classLUMP.html">LUMP</A=
>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classSHELL.html">SHELL<=
/A>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classSUBSHELL.html">SUB=
SHELL</A>,=20
<A class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classWIRE.html">WIRE</A=
>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classFACE.html">FACE</A=
>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classLOOP.html">LOOP</A=
>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classCOEDGE.html">COEDG=
E</A>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classEDGE.html">EDGE</A=
>, <A=20
class=3D"external text"=20
href=3D"http://doc.spatial.com/r18/qref/ACIS/html/classVERTEX.html">VERTE=
X</A>.=20
Each topological class is defined in its own header files (For instance, =
the=20
BODY class is defined in body.hxx.) but for your convenience all of =
these=20
classes are defined in the header file alltop.hxx. </P><A=20
name=3DManifold_and_non-manifold_objects></A>
<H2><SPAN class=3Dmw-headline>Manifold and non-manifold objects =
</SPAN></H2>
<P>In this tutorial and elsewhere in ACIS documentation we frequently =
use the=20
terms <I>manifold</I> or <I>non-manifold</I>. What do they mean? </P>
<P><BR>A manifold is a mathematical term for a object that locally =
resembles a=20
line, a plane, or a space. The term n-manifold refers to a manifold that =
locally=20
resembles a n-dimensional space, not one which lies in an n-dimensional =
space.=20
In our geometric modeling context we typically refer to 2-manifold =
boundaries of=20
objects. Having a 2-manifold boundary means that each point on the =
boundary is=20
like a point on the interior of a plane. Each point on the 2-dimensional =
boundary is completely surrounded by other points on the 2-dimensional =
boundary.=20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -