<HTML><HEAD><link type="text/css" href="../css/main_styles.css" rel="stylesheet"></HEAD>
<BODY><TITLE>%mqc_check_multi_entity_layer</TITLE><H1>%mqc_check_multi_entity_layer </H1><P CLASS="Paragraph">Classname: <B>%mqc_check_multi_entity_layer </B></P><P CLASS="Paragraph">Inherits from: <B><A href=..\checkmate\xug_base_checker.html>%ug_base_checker </A></B></P><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"> </PRE><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">
<B>Description:</B>
    Check if all specified types of entities are on proper layers
Parameter:
   (List)   entity_layer_map:       -  List of description strings of the
                                       'Entity Type | Layers' mapping relations.
                                       For example:
                                       {
                                           "SOLID                         |  1-20",
                                           "SKETCH                        |  20-40",
                                           "_CURVE                        |  41-80",
                                           "DATUM                         |  81-100",
                                           "FOREIGN_ENTITY, SOLID_COLLECT |  110-120"
                                        };
                                        This is the mandatory parameter for the checker.
     (Boolean)  disabled?        -  If it is true, the checker is disabled.
                                      Default is False.
     (Boolean)  save_log_in_part -  The flag indicates whether the checking results can
                                      be saved to the part file
                                     Default is True.
   (Integer) log_type:              -  Indicate which logging type to use to report
                                           the violation
                                           1 - log error
                                           2 - log warning
                                           3 - log information
                                        The default value is 1 which is to log error.
   (String)  log_msg:               -  User defined message to be added when the system
                                           reports the violation.
                                       The default is no additional message.
Results:
   PASS    -- if all specified type entities are contained in proper layers
   FAILED  -- if any specified type entities is not contained in proper layers

<B>See Also:</B>
    %mqc_check_single_entity_layer
=============================================================================================
Create a new checker from this template by specifying the values of the mandatory parameters:
  1. (Must)     change the class name, and the category name
  2. (Optional) change the display name. (optional)
  3. (Must)     specify the entity type / layers mapping strings for interactive selections.
       ( List )  entity_layer_map_init:
                    List of strings of entity type(s) and layers mapping descriptions.
                    It must have the format like:
                     {
                         "entity_type_1  |  layer_range_1",
                         "entity_type_2  |  layer_range_2",
                         ...
                         "entity_type_n  |  layer_range_n"
                     };
                    The entity_type and the layer_range must be separated by '|'.
                          e.g. "SOLID   |   1-20".
                    Mutiple entity types in the description strings must be
                    separated by commas.
                          e.g. "SOLID,SOLID_BODY" means SOLID entity type and
                                SOLID BODY entity type.
                    Every entity type in the description strings must included in
                    the following list.
                    {  _CURVE, LINE, ARC, CONIC, SPLINE, SKETCH,
                       SOLID, SOLID_BODY, SHEET_BODY, FACETED_BODY,
                       COMPONENT, DATUM, DATUM_PLANE, DATUM_AXIS, _POINT,
                       CSYS, DRAFTING_ENTITY, DIMENSION, _GROUP, PLANE,
                       PATTERN, PATTERN_POINTS, FOREIGN_ENTITY,
                       SOLID_COLLECT, SOLID_SECTION, SOLID_SILHOUETTE };
                    Mutiple layer ranges in the description strings
                     must be separated by commas,
                          e.g. "1,3-5,7,9" means layer 1, layers 3 to 5
                                plus layer 7, and layer 9.
                    For example:
                    {
                       "SOLID                         |  1-20",
                       "SKETCH                        |  20-40",
                       "_CURVE                        |  41-80",
                       "DATUM                         |  81-100",
                       "FOREIGN_ENTITY, SOLID_COLLECT |  110-120"
                    };
  4. (Optinal) change the default log type
      (integer) log_type:  1;
=============================================================================================
</PRE><PRE><FONT COLOR= blue>DefClass: %mqc_check_multi_entity_layer( %ug_base_checker );
</FONT></PRE><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Check-Mate attributes and parameters </PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )    %test_category: "Template.File Structure";
   ( String )    %displayed_name: "Check Entity / Layer Mappings";
   
</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Boolean Parameter )    disabled?: false;
   ( Boolean Parameter )    save_log_in_part: true;
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">   Attributes for selecting spec to check</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List Parameter )      entity_layer_map: entity_layer_map_init:;
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  parameter for log_option                                       </PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List )                entity_layer_map_init:
                           {
                           }; 
   ( String )              entity_layer_label: "Entity Type / Layers";
   

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( Integer Parameter )    log_type: 1;
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  parameter for log_message     </PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List )                 log_type_option: { LOG_ERROR, LOG_WARNING, LOG_INFO, LOG_ANY };
   ( String )               log_type_label: "Log Option";
   
</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String Parameter )     log_msg: "";
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Attribute for check rules:</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )               log_msg_label: "Log Message";

   ( List )                 valid_type_name:
                            { _CURVE, LINE, ARC, CONIC, SPLINE, SKETCH, 
                              SOLID, SOLID_BODY, SHEET_BODY, FACETED_BODY,
                              COMPONENT, DATUM, DATUM_PLANE, DATUM_AXIS, _POINT,
                              CSYS, DRAFTING_ENTITY, DIMENSION, _GROUP, PLANE, 
                              PATTERN, PATTERN_POINTS, FOREIGN_ENTITY, 
                              SOLID_COLLECT, SOLID_SECTION, SOLID_SILHOUETTE }; 

</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue> ( List ) rules_to_check:
   @{
       If Empty?(entity_layer_map:)
   
       Then  {}
   
       Else  Loop
       {
          For  $each_sel  In  entity_layer_map:;
               
          For  $sel_list  Is  Splitstring( $each_sel, "|" );
          For  $moveblank Is  mqc_removePreSufBlank($sel_list);
                    
          For  $ent_type  Is  First ( $moveblank );
          For  $layer_str  Is  Second( $moveblank );
                             
          
          For  $valid_map Is ( -( $ent_type = "" ) ) & ( -( $ent_type = noValue ) ) & ( -( $layer_str = "" ) ) & ( -( $layer_str = noValue ) );
        
          For  $valid_layer  Is  ( -( $layer_str = "" ) ) & ( -( $layer_str = noValue ) ) & ( ug_rexp_match( $layer_str, "[0-9][0-9,\-]{0,}" ) );

          For  $type_list Is 
          @{          
                If ($valid_map)
                Then Loop
                { 
                    For  $a from 0 to 0;
                    For  $ent_list  Is  Splitstring( $ent_type,","); 
                    For  $entmoveblank Is  mqc_removePreSufBlank( $ent_list ); 
                    For  $type_name_list Is  
                    Loop 
                    { 
                        For $each_type In $entmoveblank; 
                        For $type_name Is MakeName( $each_type ); 
                        For $valid_type Is member( $type_name,valid_type_name: ); 
                        Do  If ( $valid_type )  
                            Then donothing 
                            Else  ug_mqc_log( LOG_WARNING, {}, 
                            "   Entity type " + $type_name + " with invalid string." ); 
                        If ( $valid_type )  Append { $type_name }; 
                    };
                    Do If ( - ( Empty?( $type_name_list )  ) ) 
                       Then $type_name_list
                       Else {}; 
                 }
                 Else {}; 
             }; 
                  
             Do If ( $valid_map ) & ( - ( Empty?( $type_list )  ) )
                Then  If ( $valid_layer )
                            Then donothing
                            Else ug_mqc_log( LOG_WARNING, {}, 
                                " Invalid layer string " + $layer_str + "." )
                      Else  ug_mqc_log( LOG_WARNING, {}, 
                                  " Invalid mapping " + $each_sel + "."  );
                      
             If ( $valid_map ) & ( - ( Empty?( $type_list )  ) ) & ( $valid_layer )
                   Append { { $type_list , $layer_str } };   
        
       };
   };


</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">  Checking...</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>  ( Any Uncached ) do_check:

                    If  Empty?( rules_to_check: )

                    Then  ug_mqc_empty_param_warning()

                    Else  Loop
                    {
                        For  $each_rule  In  rules_to_check:;
                        For  $entity_type_list  Is  First( $each_rule );
                        For  $layer_str  Is Second( $each_rule );

                        Do Loop
                        {
                           For  $entity_type  In  $entity_type_list;

                           Do  ug_mqc_checkEntityLayer( $entity_type, 
                                                        $layer_str, 
                                                        Nth( log_type:, log_type_option: ), 
                                                        log_msg:,
                                                        ignore_internal?, true );
                        };
                    };

</SPAN></FONT></PRE></DIV></TABLE><p class=EndLine>&nbsp;</p><p class=blank>&nbsp;</p></BODY></HTML>