/* 编写代码注意事项: 1.控件移除后,不可访问任何属性以及数值 2.子栏目的高度固定为600,添加到子栏目后,原卷展栏的高度会失效 */ if RigToolUI != undefined do (try(destroydialog RigToolUI)catch()) global L_rollout=#() --左侧子栏目 global R_rollout=#() --右侧子栏目 fn remove_L_rollout= --移除左侧子栏目 ( local ui_height=RigToolUI.height for i=1 to L_rollout.count do removesubrollout RigToolUI.RTleft L_rollout[i] free L_rollout if (ui_height>=600) and (L_rollout.count==0) and (R_rollout.count==0) then RigToolUI.height -=600 ) fn remove_R_rollout= --移除右侧子栏目 ( local ui_height=RigToolUI.height for i=1 to R_rollout.count do removesubrollout RigToolUI.RTright R_rollout[i] free R_rollout if (ui_height>=600) and (L_rollout.count==0) and (R_rollout.count==0) then RigToolUI.height -=600 ) rollout NewRig "新建绑定" width:300 height:600 ( --bitmap bmp1 "Bitmap" pos:[10,10] width:285 height:140 align:#center fileName:("C:\Users\ab\Desktop\RigTool\ctrlcolor\mainabout.png") --bitmap:(bitmap 285 140 color:[255,255,255]) label lab01 "请输入新绑定名称:" edittext cus_rig_name "" width:250 align:#center button apply_name "确定" width:50 height:30 ) rollout setupmodules "模块创建" width:318 height:300 ( GroupBox RTspline "条带样条线模块(脖子,脊椎)" width:290 height:120 pos:[10,10] edittext pre_spline_name "名称" pos:[30,30] width:250 spinner spline_joints "关节数量" pos:[30,50] width:250 range:[0,100,3] type:#integer radiobuttons spline_twisk "" labels:#("X轴扭曲","Y轴扭曲") pos:[30,70] columns:2 checkbox spline_mirror "镜像模块" pos:[210,70] checked:false button creatspline "创建条带" pos:[80,90] width:150 height:30 button spline_help "说明" pos:[250,90] width:35 height:30 GroupBox RTarms "手臂模块" width:290 height:180 pos:[10,140] edittext pre_arm_name "名称" pos:[30,160] width:250 spinner upperarm_twistjoints "上臂扭曲骨骼" pos:[30,180] width:250 range:[0,100,2] type:#integer spinner lowerarm_twistjoints "下臂扭曲骨骼" pos:[30,200] width:250 range:[0,100,2] type:#integer radiobuttons arm_elbow_joints "" labels:#("单肘部关节","双肘部关节") pos:[30,220] columns:2 spinner midarm_twistjoints "中部扭曲骨骼" pos:[30,240] width:250 range:[0,100,2] type:#integer enabled:false radiobuttons arm_mirror "" labels:#("仅左臂","双臂","仅右臂") pos:[30,260] default:2 columns:3 button creatarm "创建手臂" pos:[80,280] width:150 height:30 button arm_help "说明" pos:[250,280] width:35 height:30 on arm_elbow_joints changed sel do if sel==2 then midarm_twistjoints.enabled=true else midarm_twistjoints.enabled=false GroupBox RTlegs "腿部模块" width:290 height:180 pos:[10,330] edittext pre_leg_name "名称" pos:[30,350] width:250 spinner upperleg_twistjoints "大腿扭曲骨骼" pos:[30,370] width:250 range:[0,100,2] type:#integer spinner lowerleg_twistjoints "小腿扭曲骨骼" pos:[30,390] width:250 range:[0,100,2] type:#integer radiobuttons leg_elbow_joints "" labels:#("单膝盖关节","双膝盖关节") pos:[30,410] columns:2 spinner midleg_twistjoints "中部扭曲骨骼" pos:[30,430] width:250 range:[0,100,2] type:#integer enabled:false radiobuttons leg_mirror "" labels:#("仅左腿","双腿","仅右腿") pos:[30,450] default:2 columns:3 button creatleg "创建腿部" pos:[80,470] width:150 height:30 button leg_help "说明" pos:[250,470] width:35 height:30 on leg_elbow_joints changed sel do if sel==2 then midleg_twistjoints.enabled=true else midleg_twistjoints.enabled=false GroupBox RTFKchains "FK链模块(手指,舌头,尾巴,触须等)" width:290 height:170 pos:[10,520] edittext pre_fkchains_name "名称" pos:[30,540] width:250 spinner fkchains_num "链条数量" pos:[30,560] width:250 range:[0,100,1] type:#integer spinner fkchains_joints "每条链关节数" pos:[30,580] width:250 range:[0,100,1] type:#integer radiobuttons fkchains_outer "" labels:#("X朝前","Y朝前","Z朝前","X朝后","Y朝后","Z朝后") pos:[30,600] default:2 columns:3 checkbox fkchains_mirror "镜像模块" pos:[30,630] checked:true button creatfkchains "创建FK链" pos:[80,650] width:150 height:30 button fkchains_help "说明" pos:[250,650] width:35 height:30 GroupBox RThead "头部模块" width:290 height:140 pos:[10,700] edittext pre_head_name "名称" pos:[30,720] width:250 checkbox jaw "下巴" pos:[30,740] checked:true radiobuttons head_twist "" labels:#("X轴扭曲","Y轴扭曲") pos:[30,760] default:1 columns:2 checkbox head_mirror "镜像模块" pos:[30,780] checked:true button creathead "创建头部" pos:[80,800] width:150 height:30 button head_help "说明" pos:[250,800] width:35 height:30 GroupBox RTlookat "注视模块" width:290 height:150 pos:[10,850] edittext pre_lookat_name "名称" pos:[30,870] width:250 spinner lookat_joints "关节数量" pos:[30,890] width:250 range:[0,100,1] type:#integer radiobuttons lookat_outer "" labels:#("X朝前","Y朝前","Z朝前","X朝后","Y朝后","Z朝后") pos:[30,910] default:2 columns:3 checkbox lookat_mirror "镜像模块" pos:[30,940] checked:true button creatlookat "创建注视" pos:[80,960] width:150 height:30 button lookat_help "说明" pos:[250,960] width:35 height:30 GroupBox RTauxiliary "辅助关节模块" width:290 height:100 pos:[10,1010] edittext pre_auxiliary_name "名称" pos:[30,1030] width:250 checkbox auxiliary_mirror "镜像关节" pos:[30,1050] checked:true button creatauxiliary "创建辅助关节" pos:[80,1070] width:150 height:30 button auxiliary_help "说明" pos:[250,1070] width:35 height:30 ) rollout editmodules "模块编辑" width:318 height:300 ( GroupBox RTspline "条带样条线模块(脖子,脊椎)" width:290 height:120 pos:[10,10] edittext pre_spline_name "名称" pos:[30,30] width:250 spinner spline_joints "关节数量" pos:[30,50] width:250 range:[0,100,3] type:#integer radiobuttons spline_twisk "" labels:#("X轴扭曲","Y轴扭曲") pos:[30,70] columns:2 button creatspline "应用条带" pos:[80,90] width:150 height:30 button spline_load "载入" pos:[20,90] width:35 height:30 button spline_help "说明" pos:[250,90] width:35 height:30 GroupBox RTarms "手臂模块" width:290 height:180 pos:[10,140] edittext pre_arm_name "名称" pos:[30,160] width:250 spinner upperarm_twistjoints "上臂扭曲骨骼" pos:[30,180] width:250 range:[0,100,2] type:#integer spinner lowerarm_twistjoints "下臂扭曲骨骼" pos:[30,200] width:250 range:[0,100,2] type:#integer radiobuttons arm_elbow_joints "" labels:#("单肘部关节","双肘部关节") pos:[30,220] columns:2 spinner midarm_twistjoints "中部扭曲骨骼" pos:[30,240] width:250 range:[0,100,2] type:#integer enabled:false label arm_label01 "" pos:[30,260] button creatarm "应用手臂" pos:[80,280] width:150 height:30 button arm_load "载入" pos:[20,280] width:35 height:30 button arm_help "说明" pos:[250,280] width:35 height:30 on arm_elbow_joints changed sel do if sel==2 then midarm_twistjoints.enabled=true else midarm_twistjoints.enabled=false GroupBox RTlegs "腿部模块" width:290 height:180 pos:[10,330] edittext pre_leg_name "名称" pos:[30,350] width:250 spinner upperleg_twistjoints "大腿扭曲骨骼" pos:[30,370] width:250 range:[0,100,2] type:#integer spinner lowerleg_twistjoints "小腿扭曲骨骼" pos:[30,390] width:250 range:[0,100,2] type:#integer radiobuttons leg_elbow_joints "" labels:#("单膝盖关节","双膝盖关节") pos:[30,410] columns:2 spinner midleg_twistjoints "中部扭曲骨骼" pos:[30,430] width:250 range:[0,100,2] type:#integer enabled:false label leg_label01 "" pos:[30,450] button creatleg "应用腿部" pos:[80,470] width:150 height:30 button leg_load "载入" pos:[20,470] width:35 height:30 button leg_help "说明" pos:[250,470] width:35 height:30 on leg_elbow_joints changed sel do if sel==2 then midleg_twistjoints.enabled=true else midleg_twistjoints.enabled=false GroupBox RTFKchains "FK链模块(手指,舌头,尾巴,触须等)" width:290 height:170 pos:[10,520] edittext pre_fkchains_name "名称" pos:[30,540] width:250 spinner fkchains_num "链条数量" pos:[30,560] width:250 range:[0,100,1] type:#integer spinner fkchains_joints "每条链关节数" pos:[30,580] width:250 range:[0,100,1] type:#integer label fkchains_label01 "" pos:[30,600] label fkchains_label02 "" pos:[30,620] button creatfkchains "应用FK链" pos:[80,650] width:150 height:30 button fkchains_load "载入" pos:[20,650] width:35 height:30 button fkchains_help "说明" pos:[250,650] width:35 height:30 GroupBox RThead "头部模块" width:290 height:140 pos:[10,700] edittext pre_head_name "名称" pos:[30,720] width:250 checkbox jaw "下巴" pos:[30,740] checked:true radiobuttons head_twist "" labels:#("X轴扭曲","Y轴扭曲") pos:[30,760] default:1 columns:2 label head_label01 "" pos:[30,780] button creathead "应用头部" pos:[80,800] width:150 height:30 button head_load "载入" pos:[20,800] width:35 height:30 button head_help "说明" pos:[250,800] width:35 height:30 GroupBox RTlookat "注视模块" width:290 height:150 pos:[10,850] edittext pre_lookat_name "名称" pos:[30,870] width:250 spinner lookat_joints "关节数量" pos:[30,890] width:250 range:[0,100,1] type:#integer label lookat_label01 "" pos:[30,910] label lookat_label02 "" pos:[30,940] button creatlookat "应用注视" pos:[80,960] width:150 height:30 button lookat_load "载入" pos:[20,960] width:35 height:30 button lookat_help "说明" pos:[250,960] width:35 height:30 ) rollout Advancedmodules "模块高级设置" width:300 height:600 ( local imagespath=#("","","","","","","","","","") label label01 "----------------覆盖模块颜色------------------" button ctrlcolor01 "1" width:50 height:20 across:5 button ctrlcolor02 "2" width:50 height:20 button ctrlcolor03 "3" width:50 height:20 button ctrlcolor04 "4" width:50 height:20 button ctrlcolor05 "5" width:50 height:20 button ctrlcolor06 "6" width:50 height:20 across:5 button ctrlcolor07 "7" width:50 height:20 button ctrlcolor08 "8" width:50 height:20 button ctrlcolor09 "9" width:50 height:20 button ctrlcolor10 "10" width:50 height:20 colorPicker thecolor "" color:[255,0,0] modal:false width:280 height:20 label label002 "" label label003 "" label label004 "----------------镜像模块------------------" edittext mirror_modules_name "模块名称" width:240 align:#left across:2 button mirror_modules_load "载入" width:30 align:#right radiobuttons mirror_LR "" labels:#("对齐左边","对齐右边") default:1 columns:2 align:#center button mirror_modules_apply "应用模块镜像" width:150 align:#center height:30 label label02 "" label label03 "" label label04 "----------------重命名模块------------------" edittext modules_name "模块新名称" width:240 align:#left across:2 button modules_name_load "载入" width:30 align:#right button modules_name_apply "应用模块名称" width:150 align:#center height:30 label label05 "" label label06 "" label label07 "----------------模块父节点------------------" edittext modules_parent "新链接模块" width:240 align:#left across:2 button modules_parent_load "载入" width:30 align:#right button modules_parent_apply "将选定模块链接到新模块" width:150 align:#center height:30 label label08 "" label label09 "" label label10 "----------------删除模块------------------" button modules_delete "删除选定模块" width:150 align:#center height:30 on Advancedmodules open do ( for i =1 to 10 do imagespath[i]=("C:\Users\ab\Desktop\RigTool\ctrlcolor\\"+ i as string +".png") ctrlcolor01.images=#(imagespath[1],(bitmap 50 20 color:[0,0,0]),1,1,1,1,1) ctrlcolor02.images=#(imagespath[2],undefined,1,1,1,1,1) ctrlcolor03.images=#(imagespath[3],undefined,1,1,1,1,1) ctrlcolor04.images=#(imagespath[4],undefined,1,1,1,1,1) ctrlcolor05.images=#(imagespath[5],undefined,1,1,1,1,1) ctrlcolor06.images=#(imagespath[6],undefined,1,1,1,1,1) ctrlcolor07.images=#(imagespath[7],undefined,1,1,1,1,1) ctrlcolor08.images=#(imagespath[8],undefined,1,1,1,1,1) ctrlcolor09.images=#(imagespath[9],undefined,1,1,1,1,1) ctrlcolor10.images=#(imagespath[10],undefined,1,1,1,1,1) ) ) rollout RTctrlrig "生成/删除绑定" width:300 height:600 ( GroupBox creat_ctrlrig "生成绑定" width:290 height:100 pos:[10,10] checkbox custom_prefix "添加自定义前缀名称" pos:[30,30] checked:false edittext custom_prefix_name "名称" pos:[30,50] width:250 enabled:false button create_rig "生成绑定" pos:[80,70] width:150 height:30 GroupBox delete_ctrlrig "删除绑定" width:290 height:100 pos:[10,120] checkbox delete_bones "是否删除骨骼" pos:[30,150] checked:false button delete_rig "删除绑定" pos:[80,170] width:150 height:30 on custom_prefix changed thestate do if custom_prefix.state==true then custom_prefix_name.enabled=true else custom_prefix_name.enabled=false ) rollout RTctrlsetup "控制器设置" width:300 height:600 ( local imagespath=#("","","","","","","","","","") label label01 "----------------控制器颜色------------------" button ctrlcolor01 "1" width:50 height:20 across:5 button ctrlcolor02 "2" width:50 height:20 button ctrlcolor03 "3" width:50 height:20 button ctrlcolor04 "4" width:50 height:20 button ctrlcolor05 "5" width:50 height:20 button ctrlcolor06 "6" width:50 height:20 across:5 button ctrlcolor07 "7" width:50 height:20 button ctrlcolor08 "8" width:50 height:20 button ctrlcolor09 "9" width:50 height:20 button ctrlcolor10 "10" width:50 height:20 colorPicker thecolor "" color:[255,0,0] modal:false width:280 height:20 label label02 "" label label03 "" label label04 "----------------控制器缩放------------------" checkbox x_scale "X轴局部" across:4 align:#left checkbox y_scale "Y轴局部" align:#center checkbox z_scale "Z轴局部" align:#center checkbox mirror_scale "镜像" align:#right slider scale_parmeter "" ticks:5 range:[0,100,50] type:#integer width:280 align:#center label label05 "缩放比例:50%" align:#center button apply_scale "应用缩放" width:150 height:30 on RTctrlsetup open do ( for i =1 to 10 do imagespath[i]=("C:\Users\ab\Desktop\RigTool\ctrlcolor\\"+ i as string +".png") ctrlcolor01.images=#(imagespath[1],(bitmap 50 20 color:[0,0,0]),1,1,1,1,1) ctrlcolor02.images=#(imagespath[2],undefined,1,1,1,1,1) ctrlcolor03.images=#(imagespath[3],undefined,1,1,1,1,1) ctrlcolor04.images=#(imagespath[4],undefined,1,1,1,1,1) ctrlcolor05.images=#(imagespath[5],undefined,1,1,1,1,1) ctrlcolor06.images=#(imagespath[6],undefined,1,1,1,1,1) ctrlcolor07.images=#(imagespath[7],undefined,1,1,1,1,1) ctrlcolor08.images=#(imagespath[8],undefined,1,1,1,1,1) ctrlcolor09.images=#(imagespath[9],undefined,1,1,1,1,1) ctrlcolor10.images=#(imagespath[10],undefined,1,1,1,1,1) ) on scale_parmeter changed val do ( label05.text=("缩放比例:"+ val as string+"%") ) on thecolor changed newcolor do selection.wirecolor = newcolor ) rollout RTctrlselect "选择器" width:300 height:600 ( button btn1 "功能1" ) rollout RigToolUI "绑定工具" width:700 height:60 ( checkbutton btnsub1 "创建Rig" width:50 height:20 across:5 button btnsub2 "移除左侧" width:70 height:20 button btnsub3 "移除右侧" width:70 height:20 button btnsub4 "打印" width:50 height:20 button btnsub5 "button" width:50 height:20 button btnsub6 "button" width:50 height:20 across:5 button btnsub7 "button" width:50 height:20 button btnsub8 "button" width:50 height:20 button btnsub9 "button" width:50 height:20 button btnsub10 "button" width:50 height:20 subrollout RTleft "" height:600 across:2 subrollout RTright "" height:600 across:2 on btnsub2 pressed do remove_L_rollout() on btnsub3 pressed do remove_R_rollout() on btnsub4 pressed do try (print RigToolUI.RTright.Advancedmodules.modules_name.text) catch() on btnsub1 changed thestate do if thestate then ( remove_L_rollout() remove_R_rollout() RigToolUI.height +=600 addsubrollout RigToolUI.RTleft NewRig rolledup:false ; append L_rollout NewRig addsubrollout RigToolUI.RTleft setupmodules rolledup:true ; append L_rollout setupmodules addsubrollout RigToolUI.RTleft editmodules rolledup:true ; append L_rollout editmodules addsubrollout RigToolUI.RTleft RTctrlrig rolledup:true ; append L_rollout RTctrlrig addsubrollout RigToolUI.RTright Advancedmodules rolledup:false ; append R_rollout Advancedmodules addsubrollout RigToolUI.RTright RTctrlsetup rolledup:true ; append R_rollout RTctrlsetup ) else (remove_L_rollout() ;remove_R_rollout()) /* ( removesubrollout RigToolUI.RTleft NewRig removesubrollout RigToolUI.RTleft setupmodules removesubrollout RigToolUI.RTleft editmodules removesubrollout RigToolUI.RTleft RTctrlrig removesubrollout RigToolUI.RTright Advancedmodules removesubrollout RigToolUI.RTright RTctrlsetup ) */ ) createDialog RigToolUI