<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!--
Copyright (c) 2006 UGS Corp.

All Rights Reserved.

This software and related documentation are proprietary to UGS Corp.
-->
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Polygon File Creation</title>
      <script language="javaScript">
        abridged="false";
        displayConditions=new Array();
      </script>
      <link type="text/css" href="../css/main_styles.css" rel="stylesheet">
   </head>
   <body class="bodydocs" onload="top.pageLoader()" bgcolor="#FFFFFF">
      <div class="title_topic2" id="xps10_pagetitle">Polygon File Creation</div>
      <hr noshade="true">
      <p class="para_topic">Geometry Definition is a three-step process that allows you to define the parameters used to create a Polygon file (.ply file) from an NX part file to be used with Vericut. To access this option go to File-&rarr; Export-&rarr; Polygon file and enter the name if the file. </p>
      <p class="para_topic">First, you will specify options and triangulation tolerances in the Geometry Definition dialog box illustrated below. Second, you will specify a .ply output file name. Third, you will select the geometry you wish to simulate in Vericut.</p>
      <div class="title_division">Step 1: Specify Output File Parameters</div>
      <p class="para_division">The Geometry Definition option displays the following dialog box. Most of these options pertain to triangulating the solid or sheet bodies. Once you have specified these parameters, you will select OK to specify the .ply output file name.</p>
      <p align="center"><img align="bottom" src="graphics/com_vericufi09.gif"></p>
      <p class="para_division">In order to process the solid or sheet bodies, the system must determine surface adjacencies, triangulate each surface making sure all edge vertices match, and determine normals to the triangles which point toward the outside of the surfaced body. To process the selected bodies, the system directly triangulates them and then outputs the triangles and normals to the .ply output file for use with Vericut. The coordinates of the triangulated in the .ply output file are in the Absolute Coordinate System.</p>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi08.gif"></p>
      </div>
      <div class="title_figure">Triangulated Body</div>
      <p class="para_division">The accuracy of the triangulation processing for surfaces is dependent upon three factors: 1) the edge tolerance used in Bounded Plane Creation, 2) the trim tolerance used in Trim Surface, 3) the triangulation tolerance.</p>
      <p class="para_division">The edge and trim tolerances determine how accurately the surface edges stored in the data base are positioned in relation to the true edges. Triangles along the edge of a surface have one or more vertices on the edge stored in the data base. Thus, inaccuracies in the edges stored in the data base result in inaccuracies in triangles along the edge of a surface.</p>
      <p class="para_division">It is imperative that you understand and set the tolerances correctly. Triangle Tol (triangulation tolerance) determines how smooth the approximation of the surface/solid will be. The smaller this number, the more triangular facets the system will generate as it attempts to simulate smoother contoured surfaces (see the Triangulation Tolerances figure). Adjacency Tol (adjacency tolerance) determines when two surfaces meet along an edge. You must be sure to coordinate this adjacency tolerance with other tolerances used throughout NX.</p>
      <p class="para_division">The Edge Tolerance used in Bounded Plane Creation and the Trim Tolerance used in Trim Surface determine the number of curve segments stored in the data base as an approximation of a surface edge. The smaller the tolerance, the more numerous the curve segments used to approximate an edge. When the system processes the triangulation of the surfaced model, it creates at least one triangle for each curve segment. As a result, the edge tolerance and surface trim tolerance determine the lower bound of the number of triangles produced. The number of triangles is the key determining factor in the speed of the processing.</p>
      <p class="para_division">Given the minimal set of triangles determined by the edge and trim tolerance, the Triangulation Tolerance determines how many more triangles are needed to obtain the accuracy desired.</p>
      <p class="para_division">To obtain the best performance possible, use the largest edge, trim, and Triangulation Tolerances possible to meet your needs. This will allow the system to correctly determine the adjacencies and to sufficiently provide accurate triangular approximation of the surfaces.</p>
      <p class="para_division">Each option in the Geometry Definition dialog box is described below.</p>
      <div class="title_division">Geometry</div>
      <p class="para_division">This option is always set to Part and cannot be changed.</p>
      <div class="title_division">Output Type</div>
      <p class="para_division">Output Type allows you to specify the type of file in which the system stores the output. This option toggles between Binary and Text.</p>
      <p class="para_division">Text creates an ASCII text output file that you can read and edit, although it takes up more memory space than a binary file.</p>
      <p class="para_division">Binary creates a binary output file. This produces the file in a more compact and efficient form, but which you cannot read or understand without some translation. The system defaults to this option.</p>
      <div class="title_division">Triangle Tol</div>
      <p class="para_division">Triangulation Tolerance allows you to enter a tolerance value which determines:</p>
      <ul>
         <li>
            <p class="para_item">how closely the triangles approximate the surface contours</p>
         </li>
         <li>
            <p class="para_item">how close the sides of the triangles which lie along the edges are to the edges of the surface</p>
         </li>
      </ul>
      <p class="para_division">The smaller the value you enter, the more triangles the system will generate as it simulates smoother contoured surfaces. More triangular facets require more processing time.</p>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi07.gif"></p>
      </div>
      <div class="title_figure">Triangulation Tolerances</div>
      <p class="para_division">English part values must range from .0001 to .1 inches with a default of .02. Metric part values must range from .0025 to 2.5 mm with a default of .5.</p>
      <div class="title_division">Adjacency Tol</div>
      <p class="para_division">Adjacency Tolerance allows you to enter a value which the system uses to determine if two surfaces will be attached to one another. The distance between two surface boundaries, as found in the data base, is calculated. If that distance is less than the Adjacency Tolerance, the two boundaries are considered to be coincident and the two surfaces are considered to be attached along that boundary. The default value for the Adjacency Tolerance is .005 for English parts, .12 for metric parts.</p>
      <p class="para_division">The Adjacency Tolerance has no affect on the speed of processing the solids.</p>
      <p class="para_division">A boundary, as found in the data base, is an approximation of the true surface edge. For example, when a cylinder is trimmed by a bounded plane which is not perpendicular to the axis of the cylinder, the true edge of the cylinder is an ellipse, but the system stores an approximating curve in the data base rather than an actual ellipse. This curve is accurate to within the trim tolerance specified when the surface was trimmed.</p>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi06.gif"></p>
      </div>
      <div class="title_figure">Elliptical Trim of a Cylinder which Results in an Approximating Curve</div>
      <p class="para_division">As a result, you must coordinate the setting of the Adjacency Tolerance with the trim tolerance used in Trim Surface (and similarly, the edge tolerance used in Bounded Plane Creation)</p>
      <p class="para_division">Use the following as rough guidelines for specifying Adjacency Tolerances.</p>
      <table border="0">
         <tr>
            <td valign="top" align="left"><img align="left" src="../graphics/note.gif" alt="Note" title="Note"></td>
            <td valign="bottom" align="left" width="100%">
               <div class="para_note">
                  <p class="para_note_body">&nbsp;To avoid encountering problems with the Adjacency Tolerance, you must design NX parts with these general guidelines in mind:</p>
               </div>
            </td>
         </tr>
      </table>
      <ul>
         <li>
            <p class="para_item">When creating a bounded plane, use an edge tolerance which is less than or equal to one-half the Adjacency Tolerance.</p>
         </li>
         <li>
            <p class="para_item">Likewise, when trimming a surface, use a trim tolerance which is less than or equal to one-half the Adjacency Tolerance you will use.</p>
         </li>
      </ul>
      <p class="para_division">To produce reasonable results, set the edge and trim tolerances within a range from .001 to .0025 for English parts, .0254 to .0635 for metric parts.</p>
      <p class="para_division">For the Adjacency Tolerance, set the value within a range from .0001 to .05 English, .0025 to 1.2 metric.</p>
      <p class="para_division">There is one exception to these rough guidelines. If, when creating the part:</p>
      <ul>
         <li>
            <p class="para_item">the edge tolerance in bounded plane creation and the trim tolerance in surface trim is less than or equal to the default tolerance of .01 inches</p>
         </li>
         <li>
            <p class="para_item">and the edges of two adjacent surfaces are endpoint to endpoint coincident (i.e., the 3D endpoints of the two edges coincide)</p>
         </li>
      </ul>
      <p class="para_division">then these edges will always be correctly identified as adjacent regardless of the setting of the Adjacency Tolerance.</p>
      <p class="para_division">For example, the adjacencies for all surfaces created by the Automatic Surfacing function within NX will be correctly determined because in this case adjacent surface edges are always endpoint to endpoint coincident and the edge tolerance used by Automatic Surfacing in the creation of bounded planes is .01 inches.</p>
      <table border="0">
         <tr>
            <td valign="top" align="left"><img align="left" src="../graphics/note.gif" alt="Note" title="Note"></td>
            <td valign="bottom" align="left" width="100%">
               <div class="para_note">
                  <p class="para_note_body">Edges whose length are smaller than the Adjacency Tolerance can cause adjacency problems if they are not endpoint to endpoint coincident. So it is best to construct surfaces so that adjacent edges are endpoint to endpoint coincident whenever possible. Not only will it help the correct determination of adjacencies, but it will also speed up the computation of those adjacencies.</p>
               </div>
            </td>
         </tr>
      </table>
      <p class="para_division">In general, any surface construction tolerance should be approximately 50% of the smallest machining tolerance (i.e., Intol/Outtol tolerance).</p>
      <p class="para_division">The system handles these edges whose length is less than the Adjacency Tolerance in the following manner:</p>
      <ul>
         <li>
            <p class="para_item">If an edge has length less than the Adjacency Tolerance and the neighboring edges are not endpoint to endpoint adjacent, the system displays the error message More Than 2 Edges Adjacent. In most cases, the output file will be successfully processed by Vericut.</p>
         </li>
      </ul>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi05.gif"></p>
      </div>
      <div class="title_figure">Small Edge Length Produces an Error</div>
      <ul>
         <li>
            <p class="para_item">If an edge has length less than the adjacency tolerance and the neighboring edges are endpoint to endpoint adjacent, the system correctly determines the adjacencies.</p>
         </li>
      </ul>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi04.gif"></p>
      </div>
      <div class="title_figure">Adjacencies Correctly Determined Along a Small Edge</div>
      <div class="title_division">Max Triangle Edge</div>
      <p class="para_division">Maximum Triangle Edge allows you to assign a maximum triangle edge length for generated triangles. This option toggles between OFF and on, with OFF being the default. When turned on, this option activates the Triangle Edge Size field below. When turned OFF, the system applies no limit to the triangle size.</p>
      <p class="para_division">For normal rapid prototyping use, this option can usually be set to OFF. However, when the resulting .ply file is used for some other application (such as Vericut), it may be necessary to apply a maximum triangle size.</p>
      <div class="title_division">Triangle Edge Size</div>
      <p class="para_division">Triangle Edge Size sets the value of the maximum triangle edge size. This value has no affect if the Maximum Triangle Edge option is OFF. If it is ON, the system guarantees that no triangle edge will exceed the specified value.</p>
      <div class="title_division">Triangle Display</div>
      <p class="para_division">Triangle Display allows you to temporarily display the triangles used to create the Vericut simulation. This option toggles between OFF and ON, with OFF the default. When turned ON, this option gives you the ability to visually check the triangulation of the entities for smoothness and any potential problems. The system displays the triangles in the current system display color.</p>
      <div class="title_division">Step 2: Specify Output File Name</div>
      <p class="para_division">Once you have specified each option in the Geometry Definition dialog box, select OK. The system then displays the following dialog box and prompts you to name the .ply output file.</p>
      <p align="center"><img align="bottom" src="graphics/com_vericufi12.gif"></p>
      <p class="para_division">The system automatically appends the default extension .ply to the file name if the file is binary. It appends the default extension .txt to the file name if the file is a text file.</p>
      <p class="para_division">The system checks to see if the entered file name currently exists. If it does (or if you select an existing name in the list), the system prompts you to either:</p>
      <ul>
         <li>
            <p class="para_item">Use Other Name</p>
         </li>
         <li>
            <p class="para_item">Replace It</p>
         </li>
         <li>
            <p class="para_item">Append to It</p>
         </li>
      </ul>
      <p class="para_division">You can use Append to It to put two related parts into one Vericut file.</p>
      <div class="title_division">Step 3: Select Geometry</div>
      <p class="para_division">After you specify the output file name, the system displays the Class Selection dialog box with the mask set to only allow selection of solid bodies and sheet bodies. In this step, you will select the bodies to which the system will apply the triangulation. The geometry you select represents the material to be simulated as illustrated below.</p>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi11.gif"></p>
      </div>
      <div class="title_figure">Selecting Part vs. Stock Geometry</div>
      <p class="para_division">Generally, you will select the modeled Blank Geometry to simulate the removal of stock.</p>
      <div class="title_division">Error Messages</div>
      <p class="para_division">The system may also display error messages if problems were encountered in processing the selected surfaces or solids. These are NX error messages.</p>
      <p class="para_division">For all error messages, the system highlights the offending edge, surface, or solid face, and then prompts you to either Continue Displaying Errors or Discontinue.</p>
      <p class="para_division">Choose Continue Displaying Errors for the system to resume highlighting each offending edge, surface, or solid face. Choose Discontinue to stop the output of this error message.</p>
      <p class="para_division">When the system has finished the processing of this error message it continues with subsequent processing and produces a Vericut output file.</p>
      <p class="para_division">The following error messages are non-fatal:</p>
      <p class="para_division">Edges Not Shared By Two Surfaces</p>
      <p class="para_division">Any edges which are not shared by two surfaces are detected. The system highlights all such edges of a surface and displays this error message.</p>
      <p class="para_division">There are two conditions which generate this message:</p>
      <ul>
         <li>
            <p class="para_item">Two surface edges that should be adjacent are found not to be. This may be caused by inexact modeling, or a violation of the guidelines for specifying adjacency tolerances. A single surface file is acceptable to Vericut for Auto Difference checking. Refer to the Vericut documentation for a description of the Auto Difference option.</p>
         </li>
         <li>
            <p class="para_item">The edge is part of a support structure and you do not want the edge to be attached to any other edge. In this case, consider the message to be only a warning and continue running the process.</p>
         </li>
      </ul>
      <p class="para_division">Normals Cannot Be Automatically Determined</p>
      <p class="para_division">When calculating the normals for surfaces, you choose a base surface to establish a correct normal for the model. If your selection of surfaces contains more than one body (a body being a group of surfaces that are all attached to one another), the system highlights all surfaces that are not connected via a chain of surfaces to the base surface and displays this error message. The system then continues the processing and will use the normals stored in the NX data base for all offending surfaces. Note that the normals for such surfaces may be incorrect.</p>
      <p class="para_division">The following figure shows a part containing two separate bodies of surfaces. Since the second body selected is not connected by a chain of surfaces to the base surface, the system highlights it and displays the error message.</p>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi03.gif"></p>
      </div>
      <div class="title_figure">System Interaction when it Cannot Determine Normals</div>
      <p class="para_division">If the surfaces highlighted are merely support structures, consider the message to be merely a warning; you can still use the output. Otherwise, make sure all the normals for all highlighted surfaces are correct. The Append to It option is ideally suited for handling this situation. Run the process once for each body, appending to the previous output file.</p>
      <div class="title_division">Fatal Errors</div>
      <p class="para_division">The following error messages are fatal. The resulting output file may not be processed successfully by Vericut.</p>
      <p class="para_division">More Than 2 Edges Adjacent</p>
      <p class="para_division">If more than two surfaces coincide along an edge, the system highlights the offending coincident edges and displays this error message. There are two conditions which can generate this message:</p>
      <ul>
         <li>
            <p class="para_item">The edge has length less than the adjacency tolerance and the neighboring edges are not endpoint to endpoint adjacent. In most cases, the output file will be processed successfully by Vericut.</p>
         </li>
         <li>
            <p class="para_item">Three or more surfaces meet along this edge.</p>
         </li>
      </ul>
      <p class="para_division">Degenerate Surface</p>
      <p class="para_division">Certain surfaces can be constructed in NX but are degenerate. The system highlights all such surfaces and displays this error message. There are five ways in which a surface can be degenerate.</p>
      <ul>
         <li>
            <p class="para_item">If the surface only consists of two boundary curves which coincide (see Example A).</p>
         </li>
         <li>
            <p class="para_item">If two of the boundary curves of a surface coincide (see Example B)</p>
         </li>
         <li>
            <p class="para_item">If a hole was trimmed into a surface that lies directly on one boundary (see Example C)</p>
         </li>
         <li>
            <p class="para_item">If a hole crosses a surface boundary (see Example D)</p>
         </li>
         <li>
            <p class="para_item">The distance between a hole and the periphery is less than two times the edge tolerance used in Bounded Plane Creation or the trim tolerance used in Trim Surface (see Example E).</p>
         </li>
      </ul>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/com_vericufi10.gif"></p>
      </div>
      <div class="title_figure">Ways in which a Surface is Degenerated</div>
      <p class="para_division">Unable To Triangulate Surface</p>
      <p class="para_division">The system cannot triangulate the surface due to surface being corrupted, or because of a programming error.</p>
      <p class="para_division">Unable To Triangulate Solid Face</p>
      <p class="para_division">The system cannot triangulate the solid due to a programming error.</p>
      <p class="para_division">Virtual Memory Exhausted</p>
      <p class="para_division">If at any time during processing a dynamic memory call runs out of space, the system immediately stops the process, frees all dynamically allocated space, and displays this error message.</p>
   </body>
</html>