基于Vertex的表情镜像的max工具脚本-《DotNet-UI篇1-1》

xiaoxiao2025-07-08  9

其实也可以MS和DotNet配合一起做GUI部分,只是我偏重DotNet,于是有了下面的

( ----------------------DotNetButton 简单封装----------------------data:width height posX posY struct ButtonUtility ( fn CreateButton btnName data = --func= ( local _button = dotNetObject "System.windows.forms.button" _button.text = btnName _button.size = dotNetObject "System.Drawing.Size" data[1] data[2] _button.location = dotNetObject "System.Drawing.Point" data[3] data[4] -- dotNet.addEventHandler _button "click" func _button ) ) Struct ButtonClass ( BtnName, Data, -- ClickFn, Btn = ButtonUtility.CreateButton BtnName Data --ClickFn ) ----------------------DotNet 封装---------------------- struct ToolUtility ( undefined ) fn CloseMainForm = ( gc() ) fn ResetXFormToPolyBtnClick = ( print("ResetXFormToPolyBtn") ) fn GetSampleBtnClick sender event = ( if(event.Button == event.Button.Left) then print("GetSampleBtnClick 一起嘿嘿嘿") else if(event.Button == event.Button.Right) then print("GetSampleBtnClick 一起鼓鼓掌") else if(event.Button == event.Button.Middle) then print("GetSampleBtnClick 一起哞哞哞") ) fn MirrorVertexBtnClick sender event = ( print("MirrorVertexBtnClick") ) fn GetLocalSampleBtnClick = ( print("GetLocalSampleBtnClick") ) fn MirrorLocalVertexBtnClick = ( print("MirrorLocalVertexBtnClick") ) ------------------------------------------GUI部分------------------------------------------ local mainForm = dotNetObject "System.Windows.Forms.Form" mainForm.text = "Vertex Mirror" mainForm.size = dotNetObject "System.Drawing.Size" 180 320 --local ResetXFormToPolyBtn = (ButtonClass "A" #(160,50,2,2) ResetXFormToPolyBtnClick).Btn local ResetXFormToPolyBtn = (ButtonClass "ResetXFormToPoly" #(160,24,2,2)).Btn local GetSampleBtn = (ButtonClass "GetSample" #(160,48,2,26)).Btn local MirrorVertexBtn = (ButtonClass "MirrorVertex" #(160,48,2,76)).Btn local GetLocalSampleBtn = (ButtonClass "GetLocalSample" #(160,48,2,126)).Btn local MirrorLocalVertexBtn = (ButtonClass "MirrorLocalVertex" #(160,48,2,176)).Btn mainForm.controls.add ResetXFormToPolyBtn mainForm.controls.add GetSampleBtn mainForm.controls.add MirrorVertexBtn mainForm.controls.add GetLocalSampleBtn mainForm.controls.add MirrorLocalVertexBtn dotNet.addEventHandler ResetXFormToPolyBtn "Click" ResetXFormToPolyBtnClick dotNet.addEventHandler GetSampleBtn "MouseUp" GetSampleBtnClick dotNet.addEventHandler MirrorVertexBtn "Click" MirrorVertexBtnClick dotNet.addEventHandler GetLocalSampleBtn "Click" GetLocalSampleBtnClick dotNet.addEventHandler MirrorLocalVertexBtn "Click" MirrorLocalVertexBtnClick dotNet.addEventHandler mainForm "Closed" CloseMainForm dotNet.setLifetimeControl ResetXFormToPolyBtn #dotnet dotNet.setLifetimeControl GetSampleBtn #dotnet dotNet.setLifetimeControl MirrorVertexBtn #dotnet dotNet.setLifetimeControl GetLocalSampleBtn #dotnet dotNet.setLifetimeControl MirrorLocalVertexBtn #dotnet dotNet.setLifetimeControl mainForm #dotnet mainForm.topmost = true ---与下面效果似乎等价 mainForm.show() --感谢蓬荜生辉提供下面的code,(用于将窗体显示在Max之上) -- local MaxHwndPtr = dotNetObject "System.IntPtr" (Windows.GetMaxHwnd()) -- if ((maxVersion())[1]<=1600) then -- mainForm.Show((dotNetObject "MaxCustomControls.Win32HandleWrapper" MaxHwndPtr)) -- else -- mainForm.Show((dotNetObject "System.Windows.Forms.NativeWindow").FromHandle MaxHwndPtr) ok ------------------------------------------GUI部分------------------------------------------ ) gc()

 

 

转载请注明原文地址: https://www.6miu.com/read-5032759.html

最新回复(0)