<HTML><HEAD><link type="text/css" href="../css/main_styles.css" rel="stylesheet"></HEAD>
<BODY><TITLE>%mqc_report_sketch_constraints</TITLE><H1>%mqc_report_sketch_constraints </H1><P CLASS="Paragraph">Classname: <B>%mqc_report_sketch_constraints </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>
    Report constraint status of sketch.
    Note: The constraints in linked sketch will not be reported.
Parameters:
    (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.
    (String)   log_msg          -  User defined message to be added when the system
                                   reports the violation.
                                   Default is an empty string.
Results:
    Info   - Report sketch constraints in part.
</PRE><PRE><FONT COLOR= blue>DefClass: %mqc_report_sketch_constraints( %ug_base_checker );
</FONT></PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )    %test_category: "Get Information.Modeling";
   ( String )    %displayed_name: "Report Sketch Constraints";

</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\">   Parameter for this class</PRE><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 this class</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( String )               log_msg_label: "Log Message";


</SPAN></FONT></PRE></DIV><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   ( List )      %sketch_tag_list: Loop
                 {
                     With  $all_sketches Is  mqc_askFeatures( feature_type, SKETCH );
                     For   $each_sketch  In  $all_sketches;
                     
                     If ( -mqc_isLinkedFeature( $each_sketch ) )
                     Collect $each_sketch;
                 };
                 
   ( List )      %sketch_name_list:Loop
                 {
                     For  $each_feat  In  %sketch_tag_list:;
                     Collect First(mqc_askFeatureNameAndType($each_feat));
                 };
    
 
</SPAN></FONT></PRE></DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\">   Checker function</PRE><DIV><PRE STYLE=\"text-align : left;\" CLASS=\"Code\"><FONT COLOR=blue>   (Any Uncached)   do_check: 
   @{ 
        If ( Empty?(%sketch_tag_list:) ) 
        Then 
            ug_mqc_log( LOG_INFO, {}, "The part contains no sketches." ) 
        Else 
        @{
            #Get sketch constraint information.
            #Return list is like: {21, {{"SKETCH_000", {{8,SKET_parallel},{2,SKET_vertical}}},...}}
            $sketch_constraint_list  << Loop
            {
                With $total_con   Is  0;
                
                For  $i  From  1  To  Length( %sketch_tag_list: );

                For  $sketch_tag  Is  Nth( $i,%sketch_tag_list: );
                For  $sketch_name Is  Nth( $i,%sketch_name_list:);
                For  $con_proto   Is  Partition( mqc_askSketchConstraints($sketch_tag), key, second );

                For  $sketch_con  Is  Loop
                {
                     With  $sum_con   Is  0;
                
                     For   $each_sort In  $con_proto;
                     
                     For   $con_num   Is  Length($each_sort);
                     For   $con_type  Is  Second(First($each_sort));
                     
                     For   $sum_con   Is  $sum_con + $con_num;
                     
                     #Collect {Number of each type constraint, constraint type}
                     #Such as {8, SKET_parallel}
                     Collect {$con_num, $con_type} Into $con_sorts;
                     
                     Return Is { $sum_con, $con_sorts };
                };
                
                For  $total_con   Is  $total_con + First($sketch_con);

                Collect  {$sketch_name, Second($sketch_con)} Into  $sketch_con_list;

                Return Is { $total_con, $sketch_con_list };
            };

            #Log sketch constraint information.
            If ( First($sketch_constraint_list) = 0 ) 
            Then 
                 ug_mqc_log( LOG_INFO, {}, "The part has no sketch constraints." ) 
            Else 
            @{
                 $usr_msg << If ( "" = log_msg: ) Then "" Else log_msg: + "~n"; 
                 $detail_msg << "Found " + Stringvalue( First($sketch_constraint_list) ) + " constraint(s) in part.";
                 ug_mqc_log( LOG_INFO, {}, $usr_msg + $detail_msg );

                 $execution << loop
                 {
                     For  $each_sketch_list In  Second( $sketch_constraint_list );

                     For  $sketch_name      Is  First( $each_sketch_list );
                     For  $sketch_con       Is  Second ( $each_sketch_list );
                     
                     Do ug_mqc_log( LOG_INFO, {},  "~n " + $sketch_name );
            
                     Do If ( Empty?( $sketch_con ) ) 
                        Then ug_mqc_log( LOG_INFO, {},  " 0 constraint" )
                        else Loop 
                        { 
                            For  $con_list  In  $sketch_con;

                            For  $con_num   Is  First ($con_list);
                            For  $con_type  Is  Second($con_list);
                                
                            For  $message   Is  " "+Stringvalue($con_num)+" "+$con_type+" constraints";
                                
                            Do ug_mqc_log( LOG_INFO, {},  $message );  
                        }; 
                 };
            };
        };
   };                      


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