<!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>Design Rules</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_topic1" id="xps10_pagetitle">Design Rules</div>
      <hr noshade="true">
      <div class="title_division">Overview</div>
      <p class="para_division">The following Design Rules have been incorporated in MPAW using Knowledge Fusion technology:</p>
      <ol type="1" start="1">
         <li>
            <p class="para_item"> <a class="links" href="javascript:void(0)" onclick="top.openFile('mpaw/des_rules.html#design_rules_des_rules_des_coord');return(false);">Datum Coordination Zone Check</a></p>
         </li>
         <li>
            <p class="para_item"> <a class="links" href="javascript:void(0)" onclick="top.openFile('mpaw/des_rules.html#design_rules_des_rules_des_dpt');return(false);">Datum Point Minimum Edge Distance Check</a></p>
         </li>
         <li>
            <p class="para_item"> <a class="links" href="javascript:void(0)" onclick="top.openFile('mpaw/des_rules.html#design_rules_des_rules_des_cpt');return(false);">Certification Data Minimum Edge Distance Check</a></p>
         </li>
      </ol>
      <p class="para_division">Whenever a model update occurs, these checks are performed automatically. If the checks are not passed, MPAW prompts you for further action.</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">  NOTE: You can also perform these checks interactively by using Tools-&rarr;Knowledge Fusion. For further information, please see the Knowledge Fusion Help.</p>
               </div>
            </td>
         </tr>
      </table><a name="design_rules_des_rules_des_coord"></a><div class="title_division">Coordination Zone Check</div>
      <p class="para_division">The Coordination Zone Check validates the perpendicular distance between the Datum Location Feature axes and the Datum Point against the radius of the datum coordination zone specified in the  <a class="links" href="javascript:void(0)" onclick="top.openFile('mpaw/pref.html');return(false);">Preferences-&rarr;Datum Location</a> dialog.
      </p>
      <div class="figure">
         <p align="center"><img align="bottom" src="graphics/des_coord.gif"></p>
      </div>
      <div class="title_figure">Coordination Zone Check</div><a name="design_rules_des_rules_des_dpt"></a><div class="title_division">Datum Point Minimum Edge Distance Check</div>
      <p class="para_division">The Datum Point Minimum Edge Distance Check validates the distance between the Datum Point and all the edges of the face (on which it is located) against the minimum edge distance specified in the  <a class="links" href="javascript:void(0)" onclick="top.openFile('mpaw/pref.html');return(false);">Preferences-&rarr;Datum Point</a> dialog.
      </p><a name="design_rules_des_rules_des_cpt"></a><div class="title_division">Certification Data Minimum Edge Distance Check</div>
      <p class="para_division">The Certification Data Minimum Edge Distance Check validates the distance between the Certification Data and all the edges of the faces (on which the Certification Points are located) against the minimum edge distance specified in the  <a class="links" href="javascript:void(0)" onclick="top.openFile('mpaw/pref.html');return(false);">Preferences-&rarr;Certification Data</a> dialog.
      </p>
      <div class="title_division">Sample .dfa File for Datum Coordination Zone Check</div><pre class="indent">#! UG/KF 17.0

#Let be the claas name in lower class since when we ask for claas names the names
are 

#automatically converted to lower case 

DefClass: dpt_chk_coord_zone( %ug_kf_feature );

# Parameter is a tag as a FSET is a ug_feature tag. So while instantiating

# this class you must pass this field. &quot;Canonical&quot; means it is a must to

# pass this and cannot assume a default value.

(Canonical part parameter) DPT:;

# The following line is the name of the feature that will shown in MNT

(string ) %ask_name: &quot;CHECK_COORDINATION_ZONE&quot;;

(List) DemandValue: {apply};


# The line below is a must to indicate that this feature

# will not participate in any boolean operation.


(boolean) %on_solid?: FALSE;

(string) %icon_name: &quot;check&quot;;

(list) %apply: {check_coordination(DPT:)};

(boolean) %on_suppress: ask_reason_for_override(DPT:);

(boolean) %on_unsuppress: remove_reason_for_override(DPT:);

#+

Here the Coordination_Zone function is returning a &quot;string&quot;.

Please look below to locate the word &quot;string&quot; in the

definition of the &quot;Cfunc&quot;. If you change data type

then the return type must be changed below + edit the

'C' code to make the same type in the &quot;rv&quot; value of KF and 

change the usage as shown in the next statement. Here, since

it is a string i have concatenated the return to a KF attribute

called &quot;Message&quot;.

#-

(list) %Error_code: {&quot;ERROR: Datum Point lies outside coordination zone&quot;,

&quot;ERROR: Incorrect instance passed for the check&quot;};

(Uncached List) saveValue: {DPT};

# Calls a 'C' function to check coordination zone.

Defun: check_coordination

(

Instance $instance; 

String ($lib; &quot;/disk12/gmdcs/v180/anbu/dcs_rules/iuf.hpp.sl&quot;); 

String ($name; &quot;DCS_dpt_check_coordination_zone&quot;) 

)


@{ CFunc(&quot;UF_KF_invoke_user_function&quot;; &quot;libufun&quot;); } integer;

Defun: ask_reason_for_override

(

Instance $instance;

String ($lib; &quot;/disk12/gmdcs/v180/anbu/dcs_rules/iuf.hpp.sl&quot;);

String ($name; &quot;UI_DCS_rule_create_override_dlg&quot;)

)

@{ CFunc(&quot;UF_KF_invoke_user_function&quot;; &quot;libufun&quot;); } boolean;

Defun: remove_reason_for_override

(

Instance $instance;

String ($lib; &quot;/disk12/gmdcs/v180/anbu/dcs_rules/iuf.hpp.sl&quot;);

String ($name; &quot;DCS_rule_remove_override_str&quot;)

)

@{ CFunc(&quot;UF_KF_invoke_user_function&quot;; &quot;libufun&quot;); } boolean;</pre></body>
</html>