猿问

3dsmax maxscript:如何按照我选择的顺序获取顶点数组/列表?

我正在为 3dsmax 编写一个工具,该工具要求用户按照在数组中被选中的顺序获取选中的顶点,但到目前为止,通过它会按创建的顺序返回顶点:


sel = getCurrentSeletion()

selvets = vsel[1].selectedVerts

如何使用maxscript按照我在3ds max中选择它们的顺序获取选定的顶点?


如果maxscript没有办法,有没有办法在python中做到这一点?


德玛西亚99
浏览 404回答 1
1回答

慕妹3146593

如果你只关心顶点的位置,你可以使用pickPoint函数来代替。否则进行回调以更新选择更改并记录差异。一个例子是(如果您当前的节点是可编辑多边形):try destroyDialog selectVerts catch()rollout selectVerts ""(    local verts, currentSel    fn collectVerts event nodes =    (        local sel = polyop.getVertSelection $        local newVerts = sel - currentSel        local removedVerts = currentSel - sel        for v in removedVerts do if (local index = findItem verts v) > 0 do deleteItem verts index        for v in newVerts do append verts v        currentSel = sel    )    local callback = nodeEventCallback mouseUp:on enabled:off subobjectSelectionChanged:collectVerts    checkButton chbSwitchCallback "Select verts"    on chbSwitchCallback changed state do    (        if state and isKindOf $ Editable_Poly then        (            verts = #()            currentSel = polyop.getVertSelection $            callback.enabled = on        )        else        (            callback.enabled = off            print verts #noMap        )    ))createDialog selectVerts
随时随地看视频慕课网APP

相关分类

Python
我要回答