|
不知道大家会不会觉得rename object是一个很烦琐的过程呢?今天在这里就和大家分享一下如何利用maxscript制作一个简单的rename工具,让renaming变得得心应手。
(一)创建界面 - 首先我们必须为rename工具创建一个界面。进入Menu > MAXScript > Visual MAXScript Editor。
- 根据下图的资讯完成相同的界面,并赋予每个button和edittext一个独一无二的名字。(注意:各个element的名字必须是独一无二的,这样我们才能够确保各个element能使用特有的操作,而不会产生冲突。)
- 完成后我们将之Save为Interface.vms,以便日后修改。
- 过后再save as QuickRename.ms(注意.ext为“.ms”)。
注:- 我们的editBox将会使用on enteredevent(即输入完后按Enter就会执行rename),它的特性是当mouse移开editBox的范围后进行click的话会执行指令。所以如果一开始不将这个button设置为enabled:false的话,那么按下去将会直接执行两次rename。
- editBox预设为留空,如果想要一打开dialog变有字句的话可自行设定。
- editBox的height必须小过18pixel,on entered event才有效。所以将之设定为16pixel。
(二)maxscript 1)通过Menu > MAXScript > Maxscript Editor打开之前save好的QuickRename.ms,你便会看到如下图的maxscript。在这里我们会加入自己编写的maxscript来完成这个工具。

2) 接下来我们完成这个script。- rollout quickRename "Quick Rename" width:250 height:120
- (
- editText txt_name "" pos:[24,56] width:200 height:16
- button btn_rename "RENAME!" pos:[48,80] width:75 height:25 enabled:false
- button btn_cancel "CANCEL" pos:[136,80] width:75 height:25
- button btn_head "Head" pos:[8,16] width:75 height:25
- button btn_body "Body" pos:[88,16] width:75 height:25
- button btn_leg "Leg" pos:[168,16] width:75 height:25
-
- -- DEFINE 'RENAME' FUNCTION
- ---------------------------------------------------
- fn renameIt objName = ( -- function "rename"
- global objName
- for i in selection do i.name = uniquename objName
- )-- end
-
-
- -- ACTION
- ---------------------------------------------------
- on btn_head pressed do renameIt "Head_"
- on btn_body pressed do renameIt "Body_"
- on btn_leg pressed do renameIt "Leg_"
- on txt_name entered txt do (renameIt (txt + "_"; btn_rename.enabled=true)
- on btn_cancel pressed do destroyDialog quickRename
- )
- createDialog quickRename
- setFocus quickRename.txt_name
复制代码=============================== 注解 =============================== - fn renameIt objName = ( -- function "rename"
- for i in selection do i.name = uniquename objName
- )-- end
复制代码 将rename的指令定义为renameIt(),赋予一个variable "objName"。for...i是对所有选取的object都进行rename,然后通过uniquename赋予每个object独一无二的suffix(01,02,03...etc)- on btn_head pressed do renameIt
- "Head_"
复制代码 当btn_head被按下去的时候,就会执行renameIt(),并将"Head_"这个stringassigned到objName这个variable中。- on txt_name entered txt do (renameIt
- (txt + "_";
- btn_rename.enabled=true)
复制代码 当在editBox输入了名字过后,按enter就执行renameIt(),并将btn_rename设置为可用。- on btn_cancel pressed do destroyDialog
- quickRename
复制代码 当按下btn_cancel的时候就会摧毁开启中的renamedialogBox,退出这个rename工具。这个是用来创建rename工具所在的dialogBox。名字必须和rollout相同。- setFocus
- quickRename.txt_name
复制代码 当dialog开启时,设定editBox为focus(即直接可输入名字)。
(三)macroscript 1)这个步骤将我们的script转换成macroscript(如下图所示),以载入到Customize User Interface内,方便设置shortcut key或将其变成toolbar item。- macroScript QuickRename category:"Tutorial" tooltip:"Quick Rename" Icon:#("AtmosApp",1)
- (
- -- "rollout" is to be put in here
- )
复制代码- QuickRename = macroscript的名称
- category = 在Customize User Interface下属于的category
- tooltip = mouse停留在该tool时会显示的名字,以及在Customize User Interface内的名字
- Icon = 个性化Icon,见下部分解说
(四)创建Icon - 我们可以为自己编写的工具制作个性化的Icon。具体步骤是在macroscript同一行加入:AtmosApp =icon档案名,使用.bmp为标准格式,档案必须放在3dsmax root\ui\Icons。
- 在这里我们使用ui\Icons\AtmosApp*.bmp作为示范。
- 其它详情請参阅maxscript reference。
(五)运行 - 到这里我们已经接近大功告成了,现在到MAXScript > Run Script... 运行你的QuickRename.ms后,到Customize User Interface > Toolbar > Category > Tutorial下就会看到了。将其拖到自己创建的toolbar上就可以了(或者是到Keyboard下设定成shortcut key也可以)。运行过后它会自动生成一个.mcr档案到3dsmax的usermacro folder内(DRIVE:\Documents and Settings\Username\Local Settings\Application Data\Autodesk\3dsmax\2009 - 32bit\enu\UI\usermacros)。
- 如果不要使用运行载入的方式,我们也可以直接save as .mcr,然后自行放到该目录下。取何方式就看大家的喜好了。
(六)后记 - 除了制作这个简单的rename工具之外,同样的方法也能够用来创建可以记录rendererpreset、material等等的button,种种的可能性有待大家共同去探究。因此呢我希望透过这个简单的教程帮到有兴趣学maxscript的网友,同时也欢迎大家多多交流指教。
- 最后也和大家分享一下我为自己创建的rename tool:
[ 本帖最后由 tecsun 于 17-2-2009 09:34 AM 编辑 ] |