Home Website Youtube GitHub

Pythonでchain_springガイド作成について

初めまして。
ガイドの作成からビルドまでの一連の作業をPythonで行おうとしています。

chain_spring_01を含むいくつかのガイドは、drawNewComponent()を実行するとChain Initializer UIがポップアップされ、手動入力を求められるのでスクリプトが停止してしまいます。
そこで質問ですが
・このUIを開かずにガイドの作成する事はできますか?
・また、Chain Initializerの値をPythonで操作する事はできますか?
img

テストしたコマンドです。

import pymel.core as pm
from mgear.shifter import guide

g = guide.Rig()
g.drawNewComponent(None, “chain_spring_01”,showUI=False)

よろしくお願いします。

Hello @AZU
現在は不可能です。 しかし、実装するのは難しいことではありません。

right now is not possible. But should not be difficult to implement.

回答ありがとうございます。
今後のバージョンアップで実装される事を願っています!

1 Like

ガイドのインスタンス内属性を指定すると出来なくは無いですが。
PythonやmGearのguide作成について一定な知識が必要ですね ~
自分は最近同じことを試したので、共有します。
(これはあくまで一発でguide drawまで実行できる例です、実際の用途に合わせて色々調整が必要と思われます)
また、以下のコードを実行するにはguideノードが必要です。

import mgear.shifter_classic_components.chain_01.guide as c
from mgear.core import string,transform
from pymel.core import datatypes


g = c.Guide()
g.sections_number = 4
g.dir_axis = 0
g.spacing = 1
comp_name = "test"
index = 0
for name in g.save_transform:

    offVec = datatypes.Vector(g.spacing, 0, 0)

    newPosition = datatypes.Vector(0, 0, 0)
    for i in range(g.sections_number):
        newPosition = offVec + newPosition
        localName = string.replaceSharpWithPadding(name, i)
        g.tra[localName] = transform.getTransformFromPos(
            newPosition)
g.setParamDefValue("comp_name", comp_name)
# g.setParamDefValue("comp_index", comp_index)
g.parent = pm.PyNode("guide")
g.draw(g.parent)
pm.select(g.root)
3 Likes