CGJOY

标题: 遍历模型的脚本问题--新手问题 [打印本页]

作者: GYGYGGY    时间: 2016-9-19 16:43
标题: 遍历模型的脚本问题--新手问题
先上脚本:   
max select all
    ungroup $selection


--如果名字是Geometry 就改成父节点的名字
for obj in selection do
(
if  obj.name=="Geometry"  do

    obj.name= obj.parent.name+"Geometry"

   )
两个问题
1-- 匿名 codeblock; 文件名: ; 位置: 153; line: 9 中发生错误
-- 语法错误: 位于 if,需要 <因子>
--  所在行: if o


2
obj.name= obj.parent.name+"Geometry"
取父节点的名字该怎么取?

谢谢各位了。入门级的错误帮忙解决下。

作者: 马头    时间: 2016-9-19 18:36
本帖最后由 zxy8784 于 2016-9-19 19:00 编辑

{:1_330:}

作者: 马头    时间: 2016-9-19 18:40
本帖最后由 zxy8784 于 2016-9-19 19:01 编辑

{:1_330:}

作者: GYGYGGY    时间: 2016-9-19 18:49
zxy8784 发表于 2016-9-19 18:40
if  obj.name=="Geometry"  do
可以改成 if classof obj == Geometry
obj可以替换成变量名,比如 a,b,c,d ...

可能理解错我的意思了。 看看这个图

作者: GYGYGGY    时间: 2016-9-19 19:07
大神 帮我看看这张图 里面描述的很详细


作者: 马头    时间: 2016-9-19 19:20
max select all
    ungroup $selection


--如果名字是Geometry 就改成父节点的名字
for obj in selection do
(
if  obj.name =="Geometry" then
        (
        try  obj.name = (obj.parent.name + "Geometry" ) catch ()
        )
)

1.if 后面接then而不是do
2.报错是因为你选择到的对象可能没有父节点,所以获取父节点的名字会报错。
3.获取父节点名称的方式的对的,这里没有问题

作者: 铁豌豆站长@CGJOY    时间: 2016-9-20 00:01
zxy8784 发表于 2016-9-19 19:20
max select all
    ungroup $selection

我看了半天,试图回答楼主的问题,但没看明白。
看了你的回答,才恍然大悟,你说的是对的。
父节点有没有也要判断一下的。有父节点的时候才可以运算。


作者: GYGYGGY    时间: 2016-9-20 09:41
zxy8784 发表于 2016-9-19 19:20
max select all
    ungroup $selection

首先谢谢你不厌其烦的解答我的问题。
我研究了下代码,好像和我理想的有点差距,因为我对3DMAX的脚本对象不太了解可能描述错了。 麻烦你再看下我截图中的需求,怎么改前面你的代码。
代码运行效果

下载


我的业务需求是这样的。

下载





作者: 马头    时间: 2016-9-20 10:52
GYGYGGY 发表于 2016-9-20 09:41
首先谢谢你不厌其烦的解答我的问题。
我研究了下代码,好像和我理想的有点差距,因为我对3DMAX的脚本对 ...

你这图上的2和1之间有什么关系没?如果两者之间完全没关系,可能不太好做判断筛选


作者: yiliu2009    时间: 2016-11-25 20:43
脚本没错。要全选物体才可以运行脚本





欢迎光临 CGJOY (https://www.cgjoy.com/) Powered by Discuz! X3.4