Knowledge Fusion例子

2023-03-18,,

#! NX/KF 5.0
#
#*******************************************************************************************
# Design: GuiTu
# Date : 2017.9.8
# E_mall: 1714787391@qq.com
# QQ : 1714787391
# name : 批量层处理
#*********# 文件名与类名 #****************************************************************
Defclass: guitu_setlayer (%ui_comp) ; (string) title: "批量层处理";
(string) cue: "归途提示:选择要移动层对象";
############################ 定义组区 ###########################################
(list) DialogItems: {select_group:,fanyi_group:,set_group:}; # 对话框里组的 列表(list) ############################ 参数声名区 ##########################################
(any Parameter Modifiable) layer_value: 256;
(any Parameter Modifiable) str: "256";
(any Parameter Modifiable) str1: "";
(any Parameter Modifiable) b1: true;
(any Parameter Modifiable) b2: true;
(any Parameter Modifiable) b3: true;
(any Parameter Modifiable) b4: true;
(any Parameter Modifiable) b5: true; # 隐藏
(any Parameter Modifiable) b6: true; # 草图 (any Parameter Modifiable) int: 256; ############################ UI界面 区 ##########################################
(child) select_group:
{
class, %ui_comp_group;
title, "选择目标";
Members, {select_face: };
}; (Child) select_face:
{
Class, %ui_comp_selection;
Many, false; #是否多选
SnapPointOverlay, false;
SoUpdateOption, 3; Tooltip, "选择目标";
Scope, 1;
FilterTriple, {{2,0,0},{3,0,0},{5,0,0},{9,0,0},{197,0,0},{70,0,0},{19,0,0},{20,0,0},{43,0,0}}; #选择类型
SelectedObjects, {};
SelectedObject, SelectedObjects:; };
(child) fanyi_group:
{
class, %ui_comp_group;
title, "图层";
Members, {rh_label3:,rh_label4:,rh_label5:,rh_label6:, UI_button:,list_box:,integer:}; #####表示在shaft_group:组下有多少子规则
}; (child) rh_label3:
{
class, %ui_comp_label;
Title, "遍历目标体=" ;
topAttach, select_face: ;
};
(child) rh_label4:
{
class, %ui_comp_label;
Title, str1: ;
leftAttach, rh_label3:;
topAttach, select_face: ;
};
(child) rh_label5:
{
class, %ui_comp_label;
Title, "" ;
topAttach, rh_label4: ;
};
(child) rh_label6:
{
class, %ui_comp_label;
Title, "提示: "+"~n" +"你的图层类别没有设置或设置格式与本工具有异"+"~n"+"你可通过设置图层类别来获得更多可选图层列表信息"+"~n"+"了解更多信息请点击下列图标按钮";
icon, "advwave_legend_icon_outofdate.bmp";
topAttach, rh_label5: ;
leftAttach, rh_label5:;
};
(Child) UI_button:
{
Class, %ui_comp_button;
Title, " ";
icon,"informational_symbol.bmp"; #
};
(Child) list_box:
{
Class, %ui_comp_list_box;
ListItems, Append_type_layer_string: ; # 列表内容
SelectedItems, {}; # 返回选择的列表内容
selected, SelectedItems:;
SingleSelect, false; # 单选多选
ShowMoveUpDownButtons, true; # true显示上下移动按钮
DisplayRows, 4; # 列表框的显示行数
};
(any) int_value: first ( SplitString(nth( if list_box:SelectedItems:={} then 1 else first(list_box:SelectedItems:)+1 ,Append_type_layer_string:)," ")); (Child) integer:
{
Title, " ";
Class, %ui_comp_integer;
value,int:;
MaximumValue, 2^30;
MinimumValue, -2^30;
Width, 0;
};
(child) set_group:
{
class, %ui_comp_group;
title, "设置";
Members, {toggle:,toggle1: ,toggle2:,toggle4:,toggle5:,toggle3: };
};
(Child) toggle: {
Class, %ui_comp_toggle;
title, "允许改动图层";
value, b1:;
};
(Child) toggle1: {
Class, %ui_comp_toggle;
title, "仅相同图层";
value, b2:;
};
(Child) toggle2: {
Class, %ui_comp_toggle;
title, "仅相同颜色";
value, b3:;
};
(Child) toggle4: {
Class, %ui_comp_toggle;
title, "仅显示对象";
value, b5:;
};
(Child) toggle5: {
Class, %ui_comp_toggle;
title, "不操作草图对象";
value, b6:;
}; (Child) toggle3: {
Class, %ui_comp_toggle;
title, "区分样条cntl和thru";
value, b4:;
}; ############################ 代码 区 ########################################## # ********************************* 技术 一 获得选择对象信息 #获得选择目标 Type (类型)
(String) a: ug_object_askType(first(select_face:SelectedObjects:));
(list) a1: askTypeSubtype(first(select_face:SelectedObjects:));
(String) a2: if a:!="" then a: else "" ; #( askcolor info)
(integer) color1: ug_vd_si_ask_color(first(select_face:SelectedObjects:));
#( asklayer info)
(integer) layer1: if a:="ug_body" then asklayer(first(select_face:SelectedObjects:)) else nth(5,mqc_askEntityDisplayData(ug_cam_askObjectTag(first(select_face:SelectedObjects:)))); #( 图层 信息 ) #给定遍历的的类型进行遍历
(Any) cycle: ug_cycleObjectsByType({MakeName(a2:)},"");
# 遍历处理(区分 "ug_spline_thru"和"ug_spline_cntl")
(Any) cycledeal_1: loop {
for $a from 0 to length(cycle:)-1;
for $b is $a +1;
if ug_object_askType(nth($b,cycle:))= a: append {nth($b,cycle:)}; } ; (Any) cycledeal: if a2:="ug_spline_thru"|a2:="ug_spline_cntl"& toggle3:value:=true then cycledeal_1: else cycle: ; #+
基准平面
ug_cycleObjectsByType({ug_datum_plane},"") #- #**********************************技术 二 扩展技术 获得对象类型所在图层 (list) Categoryinfor: mqc_askCategory();
(list) askEmptyLayers: mqc_askEmptyLayers();
(list) askEmptyLayersatCategory: findDuplicates( askEmptyLayers:+ Append_type_layer:); #收集类型所在的层
(any) select_layer: nth(5,mqc_askEntityDisplayData(ug_cam_askObjectTag(first(select_face:SelectedObjects:)))); (any) Append_type_layer: loop {
for $a from 0 to length(Categoryinfor:)-1;
for $b is $a +1;
for $m is last(SplitString(first(nth($b,Categoryinfor:)),"_"));
if last(SplitString(a:,"_"))=$m return {if ug_AskWorkLayer()=select_layer: then 256 else 256,ug_AskWorkLayer()}+nth(4,(nth($b,Categoryinfor:)));
return is {256};
}; # 1 .将int list 变为 str list 2.区分空层和非空层 mqc_ask_layer_entities({$m}, ALL,true)
(any) Append_type_layer_string: loop {
for $a from 0 to length(Append_type_layer:)-1;
for $b is $a +1;
for $m is nth($b,Append_type_layer:);
append { if mqc_findSublist( $m, { askEmptyLayersatCategory: } )={}&ug_AskWorkLayer()=$m then stringValue($m )+" "+stringValue(length(mqc_askObjectsInLayer({$m}, ALL,true)))+" "+"工作层" else if mqc_findSublist( $m, { askEmptyLayersatCategory: } )={} then stringValue($m )+" "+stringValue(length(mqc_askObjectsInLayer({$m}, ALL,true))) else stringValue($m ) } ;
}; #********************************* 技术三 过滤机制
# 收集颜色相同类型的object toggle2:
(list) sametypeColorobj: loop {
for $a from 0 to length(cycledeal:)-1;
for $b is $a +1;
for $m is ug_vd_si_ask_color(nth($b,cycledeal:));
if $m=color1: Append {nth($b,cycledeal:)} ;
};
(list) Colorobj: if toggle2:value:=true then sametypeColorobj: else cycledeal:;
# 收集图层相同类型的object toggle1:
(list) sametypelayerobj: loop {
for $a from 0 to length(cycledeal:)-1;
for $b is $a +1;
for $m is if a:="ug_body" then asklayer(first(select_face:SelectedObjects:)) else nth(5,mqc_askEntityDisplayData(ug_cam_askObjectTag(nth($b,cycledeal:))));
if $m=layer1: Append {nth($b,cycledeal:)} ;
};
(list) layerobj: if toggle1:value:=true then sametypelayerobj: else cycledeal:;
# 收集隐藏object toggle4:
(list) allblankobj: mqc_askBlankedObjects();
(list) selectobjblankobj: loop {
for $a from 0 to length(cycledeal:)-1;
for $b is $a +1;
for $m is nth($b,cycledeal:);
for $T is ug_cam_askObjectTag($m) ;
if mqc_findSublist( $T, { allblankobj: } )={} Append {nth($b,cycledeal:)} ; # 表示仅仅收集没有隐藏对象
};
(list) blankobj: if toggle4:value:=false then cycledeal: else selectobjblankobj:; #****技术(一)------1 (过滤处理)
# 判断是否选相同颜色
(list) setlayerobj: ug_findDuplicates(ug_findDuplicates(blankobj:+layerobj: )+ug_findDuplicates(layerobj:+Colorobj: )+ug_findDuplicates(blankobj:+Colorobj: ) ) ; # sket过滤 setlayerobj: (list) askFeat: mqc_askFeatures();
(any) sket: loop {
for $a from 0 to length(setlayerobj:)-1;
for $b is $a +1;
for $m is nth($b,setlayerobj:);
for $objtag is ug_cam_askObjectTag($m);
for $Featuretag is mqc_askFeatureOfObject ($objtag );
if $Featuretag!=-1 append{$m};
};
# collect is skect object
(any) sketFeat: loop {
for $a from 0 to length(sket:)-1;
for $b is $a +1;
for $m is nth($b,sket:);
for $objtag is ug_cam_askObjectTag($m);
for $Featuretag is mqc_askFeatureOfObject ($objtag );
if second(mqc_askFeatureNameAndType($Featuretag))="SKETCH" append{$m};
}; # decide whether or not to select an operation skect object through toggle5:value: is true or false (list) endsetlayer: if toggle5:value:=true then SetDifference(setlayerobj:,sketFeat:) else setlayerobj:; #********************************** 技术 四 设置图层
(any) setlayer: loop {
for $a from 0 to length( endsetlayer:)-1;
for $b is $a +1;
if toggle:value:=False return 0;
do ug_setObjectLayer(nth($b, endsetlayer:), makenumber(int_value:));
}; (list) demandValue: {setlayer:}; # 对话框的初始化 1 (Method integer) OnInitialize:(Instance $instance)
@{ %ui_comp_setCacheValue(self(), int:,integer:,value);
%ui_comp_setCacheValue(self(), b1:,toggle:,value);
%ui_comp_setCacheValue(self(), b2:,toggle1:,value);
%ui_comp_setCacheValue(self(), b3:,toggle2:,value);
%ui_comp_setCacheValue(self(), b4:,toggle3:,value);
%ui_comp_setCacheValue(self(), b5:,toggle4:,value);
%ui_comp_setCacheValue(self(), b6:,toggle5:,value);
# if (string3:value:="guitu_information") then {%ui_comp_setCacheValue(self(), true,UI_button:,Visibility);} else {%ui_comp_setCacheValue(self(), false ,UI_button:,Visibility);}; if (last(SplitString(a:,"_"))="point"&length(Append_type_layer_string:)=1) then
{
%ui_comp_setCacheValue(self(), true, rh_label6: ,Visibility);
%ui_comp_setCacheValue(self(), true,UI_button:,Visibility);
}
else
{
%ui_comp_setCacheValue(self(), false , rh_label6: ,Visibility);
%ui_comp_setCacheValue(self(), false ,UI_button:,Visibility);
}; if (a2:="ug_spline_thru"|a2:="ug_spline_cntl")
then
{
%ui_comp_setCacheValue(self(), true,toggle3: ,Visibility); }
else
{
%ui_comp_setCacheValue(self(), false , toggle3: ,Visibility); }; 0;
}; #更新机制 2
(Method integer ) Update:(Instance $instance)
@{ %ui_comp_setCacheValue(self(),Append_type_layer_string:,list_box: ,ListItems);
%ui_comp_setCacheValue(self(),makenumber(int_value:),integer:,value); %ui_comp_setCacheValue(self(), if a2:="" then "{"+format("%d",first(a1:))+","+format("%d",last(a1:)) +"}"+" : 可选图层列表" else a2: +" : 可选图层列表" ,rh_label5: ,Title);
%ui_comp_setCacheValue(self(), format("%d",length(endsetlayer:)),rh_label4: ,Title); if ($instance = UI_button:) then
@{
ug_printValues( {" 批量层处理帮助 "});
ug_printValues( {"======================"});
ug_printValues( {"信息列表创建者 : "+ug_askUserName()});
ug_printValues( {"日期 : "+dateTimeString(localTime? ,True)});
ug_printValues( {"当前工作部件 : "+ug_askScenarioDirectory()+".prt"});
ug_printValues( {"系统平台 : "+ug_askOSName()});
ug_printValues( {"======= 过滤对象==========="});
ug_printValues( {"颜色相同对象 : ",length(Colorobj:)});
ug_printValues( {"图层相同 : ",length(layerobj:)});
ug_printValues( {"隐藏对象 : ",length(blankobj:)});
ug_printValues( {"遍历目标体 : ", length(setlayerobj: )});
ug_printValues( {"sket: : ", sketFeat:});
ug_printValues( {"sket: : ",setlayerobj:}); ug_printValues({"草图对象 : ", length(setlayerobj: )-length(notsketFeat: )});
ug_printValues( {"&&&&&&&&&&&&&&&&&&& 设置 &&&&&&&&&&&&&&&&&&&&&&&&&&&"});
ug_printValues( {"***************允许移动图层 开关作用 *********************** : "+ "~n" });
ug_printValues({" 是否移动对象 " + "~n" } );
ug_printValues({ "***************仅相同图层 开关作用 *********************** : "+ "~n" });
ug_printValues({" 仅操作图层相同的类型对象 " + "~n" } );
ug_printValues({ "***************仅相同图层 开关作用 *********************** : "+ "~n" });
ug_printValues({ " 仅操作图层相同的类型对象 " + "~n" });
ug_printValues( {"***************仅相同颜色 开关作用 *********************** : "+ "~n" });
ug_printValues({" 仅操作颜色相同的类型对象 " + "~n" });
ug_printValues( {"**************仅显示对象 开关作用 *********************** : "+ "~n" });
ug_printValues( {"仅操作当前显示的的类型对象 " + "~n" } );
ug_printValues({ "*************区分样条cntl和thru 开关作用 *********************** : "+ "~n" +
"原本以为样条分为'通过点'和'根据极点' 那么thru 应为'通过点' 而cntl 应为'根据极点' " + "~n" +
"但是经过后来测试发现并不是那回事 但也相似 "+"~n" +
"做逆向造型常用到截面线 这个命令截出的类型即为 cntl 型,还有就是使用'根据极点'创建得到的以及使用'通过点'当你选择的(次数=创建的点数)" + "~n" }); } else
doNothing; if (last(SplitString(a:,"_"))="ug_spline_thru"|length(Append_type_layer_string:)=1) then
{
%ui_comp_setCacheValue(self(), true, rh_label6: ,Visibility);
%ui_comp_setCacheValue(self(), true,UI_button:,Visibility);
}
else
{
%ui_comp_setCacheValue(self(), false , rh_label6: ,Visibility);
%ui_comp_setCacheValue(self(), false ,UI_button:,Visibility);
}; if (a2:="ug_spline_thru"|a2:="ug_spline_cntl")
then
{
%ui_comp_setCacheValue(self(), true,toggle3: ,Visibility); }
else
{
%ui_comp_setCacheValue(self(), false , toggle3: ,Visibility); }; 0;
};

  

Knowledge Fusion例子的相关教程结束。

《Knowledge Fusion例子.doc》

下载本文的Word格式文档,以方便收藏与打印。