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

📄 _understanding_and_traversing_acis_topology_(part_iv).htm

📁 acis说明文档
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<span class="kw2">#include</span> <span class="st0">&quot;get_top.hxx&quot;</span>&nbsp;<span class="co1">// Declaration of the ACIS licensing function.</span><span class="kw4">void</span> unlock_spatial_products_&lt;NNN&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;&nbsp;<span class="co1">// Declaration of our functions.</span><span class="kw4">void</span> do_something<span class="br0">&#40;</span><span class="br0">&#41;</span>;<span class="kw4">int</span> my_initialization<span class="br0">&#40;</span><span class="br0">&#41;</span>;<span class="kw4">int</span> my_termination<span class="br0">&#40;</span><span class="br0">&#41;</span>;&nbsp;<span class="co1">// The main program...</span><span class="kw4">int</span> main <span class="br0">&#40;</span><span class="kw4">int</span> <span class="kw7">argc</span>, <span class="kw4">char</span>** <span class="kw7">argv</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>&nbsp;	<span class="kw4">int</span> ret_val = my_initialization<span class="br0">&#40;</span><span class="br0">&#41;</span>;	<span class="kw1">if</span> <span class="br0">&#40;</span>ret_val<span class="br0">&#41;</span> 		<span class="kw1">return</span> <span class="nu0">1</span>;&nbsp;	do_something<span class="br0">&#40;</span><span class="br0">&#41;</span>;&nbsp;	ret_val = my_termination<span class="br0">&#40;</span><span class="br0">&#41;</span>;	<span class="kw1">if</span> <span class="br0">&#40;</span>ret_val<span class="br0">&#41;</span>		<span class="kw1">return</span> <span class="nu0">1</span>;&nbsp;	<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;Program completed successfully<span class="es0">\n</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;	<span class="kw1">return</span> <span class="nu0">0</span>;<span class="br0">&#125;</span>&nbsp;<span class="kw4">void</span> do_something<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>&nbsp;	<span class="kw6">API_BEGIN</span>&nbsp;		<span class="co1">// Create a block.</span>&nbsp;		<span class="kw7">BODY</span> * my_body;		result = api_make_cuboid <span class="br0">&#40;</span><span class="nu0">10.0</span>, <span class="nu0">10.0</span>, <span class="nu0">10.0</span>, my_body<span class="br0">&#41;</span>;		<span class="kw1">if</span> <span class="br0">&#40;</span>!result.<span class="me1">ok</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>			<span class="kw7">err_mess_type</span> err_no = result.<span class="me1">error_number</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;			<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;ERROR in api_make_cuboid()&nbsp;%d:&nbsp;%s<span class="es0">\n</span>&quot;</span>,				err_no, find_err_mess <span class="br0">&#40;</span>err_no<span class="br0">&#41;</span><span class="br0">&#41;</span>;			sys_error <span class="br0">&#40;</span>err_no<span class="br0">&#41;</span>;		<span class="br0">&#125;</span>&nbsp;		<span class="co1">// First let's demonstrate the use of the global </span>		<span class="co1">// topological traversal functions.</span>&nbsp;		<span class="kw7">ENTITY_LIST</span> lump_list;		<span class="kw7">ENTITY_LIST</span> shell_list;		<span class="kw7">ENTITY_LIST</span> wire_list;		<span class="kw7">ENTITY_LIST</span> face_list;		<span class="kw7">ENTITY_LIST</span> edge_list;		<span class="kw7">ENTITY_LIST</span> vertex_list;&nbsp;		get_lumps <span class="br0">&#40;</span>my_body, lump_list<span class="br0">&#41;</span>;		get_shells <span class="br0">&#40;</span>my_body, shell_list<span class="br0">&#41;</span>;		get_wires <span class="br0">&#40;</span>my_body, wire_list<span class="br0">&#41;</span>;		get_faces <span class="br0">&#40;</span>my_body, face_list<span class="br0">&#41;</span>;		get_edges <span class="br0">&#40;</span>my_body, edge_list<span class="br0">&#41;</span>;		get_vertices <span class="br0">&#40;</span>my_body, vertex_list<span class="br0">&#41;</span>;&nbsp;		<span class="kw4">int</span> num_lumps = lump_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="kw4">int</span> num_shells = shell_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="kw4">int</span> num_wires = wire_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="kw4">int</span> num_faces = face_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="kw4">int</span> num_edges = edge_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="kw4">int</span> num_vertices = vertex_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;&nbsp;		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;The body has&nbsp;:<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\t</span>&nbsp;%d lumps<span class="es0">\n</span>&quot;</span>, num_lumps<span class="br0">&#41;</span>;		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\t</span>&nbsp;%d shells<span class="es0">\n</span>&quot;</span>, num_shells<span class="br0">&#41;</span>;				<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\t</span>&nbsp;%d wires<span class="es0">\n</span>&quot;</span>, num_wires<span class="br0">&#41;</span>;				<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\t</span>&nbsp;%d faces<span class="es0">\n</span>&quot;</span>, num_faces<span class="br0">&#41;</span>;		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\t</span>&nbsp;%d edges<span class="es0">\n</span>&quot;</span>, num_edges<span class="br0">&#41;</span>;		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\t</span>&nbsp;%d vertices<span class="es0">\n</span>&quot;</span>, num_vertices<span class="br0">&#41;</span>;		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;&nbsp;		<span class="co1">// Let's traverse one of the lists using the index operator.</span>		<span class="co1">// Let's see how many edges each of the faces have.</span>&nbsp;		<span class="kw4">int</span> i;		<span class="kw7">ENTITY_LIST</span> temp_edge_list;		<span class="kw1">for</span> <span class="br0">&#40;</span>i = <span class="nu0">0</span>; i &lt; num_faces; i++<span class="br0">&#41;</span> <span class="br0">&#123;</span>			<span class="kw7">FACE</span> * f = <span class="br0">&#40;</span><span class="kw7">FACE</span>*<span class="br0">&#41;</span> face_list<span class="br0">&#91;</span>i<span class="br0">&#93;</span>;			get_edges <span class="br0">&#40;</span>f, temp_edge_list<span class="br0">&#41;</span>;			<span class="kw4">int</span> temp_num_edges = temp_edge_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;			<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;face[%d] has&nbsp;%d edges<span class="es0">\n</span>&quot;</span>, i, temp_num_edges<span class="br0">&#41;</span>;			temp_edge_list.<span class="me1">clear</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="br0">&#125;</span>		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;&nbsp;		<span class="co1">// Let's traverse one of the lists using init() and next().</span>		<span class="co1">// Let's see how many faces each of the edges have.</span>&nbsp;		i = <span class="nu0">0</span>;		<span class="kw7">EDGE</span> * e = <span class="kw2">NULL</span>;		edge_list.<span class="me1">init</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="kw7">ENTITY_LIST</span> temp_face_list;		<span class="kw1">while</span> <span class="br0">&#40;</span>e = <span class="br0">&#40;</span><span class="kw7">EDGE</span>*<span class="br0">&#41;</span> edge_list.<span class="me1">next</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>			get_faces <span class="br0">&#40;</span>e, temp_face_list<span class="br0">&#41;</span>;			<span class="kw4">int</span> temp_num_faces = temp_face_list.<span class="me1">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;			<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;edge[%d] has&nbsp;%d faces<span class="es0">\n</span>&quot;</span>, i++, temp_num_faces<span class="br0">&#41;</span>;			temp_face_list.<span class="me1">clear</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;		<span class="br0">&#125;</span>		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;&nbsp;		<span class="co1">// Now let's demonstrate the use of some of </span>		<span class="co1">// the topological ENTITY class methods.</span>&nbsp;		<span class="co1">// Let's see how many coedges each of the faces have.</span>&nbsp;		<span class="kw1">for</span> <span class="br0">&#40;</span>i = <span class="nu0">0</span>; i &lt; num_faces; i++<span class="br0">&#41;</span> <span class="br0">&#123;</span>			<span class="kw7">FACE</span> * f = <span class="br0">&#40;</span><span class="kw7">FACE</span>*<span class="br0">&#41;</span> face_list<span class="br0">&#91;</span>i<span class="br0">&#93;</span>;			<span class="kw4">int</span> temp_num_coedges = <span class="nu0">0</span>;			<span class="kw7">LOOP</span> * l = f-&gt;<span class="me3">loop</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;			<span class="kw1">while</span> <span class="br0">&#40;</span>l<span class="br0">&#41;</span> <span class="br0">&#123;</span>				<span class="kw7">COEDGE</span> * first_coedge = l-&gt;<span class="me3">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;				<span class="kw7">COEDGE</span> * c = first_coedge;				<span class="kw1">do</span> <span class="br0">&#123;</span>					temp_num_coedges++;					c = c-&gt;<span class="me3">next</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;				<span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span>c&nbsp;!= first_coedge<span class="br0">&#41;</span>;				l = l-&gt;<span class="me3">next</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;			<span class="br0">&#125;</span>			<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;face[%d] has&nbsp;%d coedges<span class="es0">\n</span>&quot;</span>, i, temp_num_coedges<span class="br0">&#41;</span>;		<span class="br0">&#125;</span>		<span class="kw3">printf</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;&nbsp;		<span class="co1">// Let's see how many edges each of the vertices have.</span>		<span class="co1">// We shall assume that the vertex is a manifold vertex</span>		<span class="co1">// and that each of the edges bounded by this vertex</span>		<span class="co1">// is a manifold edge.  We shall also assume that each</span>		<span class="co1">// face of each vertex has at least two edges.  (In other</span>		<span class="co1">// words, there are no closed edges.)  These assumptions </span>		<span class="co1">// make the algorithm much easier to understand.</span>&nbsp;		<span class="kw1">for</span> <span class="br0">&#40;</span>i = <span class="nu0">0</span>; i &lt; num_vertices; i++<span class="br0">&#41;</span> <span class="br0">&#123;</span>

⌨️ 快捷键说明

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