標準機能にあると思って探したけどどうやらないみたいなので書きました。
インスタンスモデルを普通のモデルに戻すスクリプトです。
マスターモデルを選択して実行。
とりあえず動くけど直したいところは結構あります。
とりあえずメモってことで。
from siutils import si, disp def GetInstances(oMdl): gInsts = oMdl.Groups('InstanceGroup') return gInsts.Members def ResotreInstance(oInst, oMstr=None, bDel=True): if not oMstr: oMstr = oInst.InstanceMaster sInstName = oInst.Name oParent = oInst.Parent oTmp = si.Duplicate("B:"+oMstr.Name, "", 2, 1, 1, 0, 2, 1, 0, 1, "", "", "", "", "", "", "", "", "", "", 0)(0) oTmp.Kinematics.Global.Transform = oInst.Kinematics.Global.Transform oTmp = disp(oTmp) if bDel: si.DeleteObj(oInst) oTmp.Name = sInstName oParent.AddChild(oTmp) return oTmp oMdl = si.Selection(0) if not oMdl.Type == '#model': oMdl = oMdl.Model oInsts = GetInstances(oMdl) for oInst in oInsts: ResotreInstance(oInst, oMdl, False) si.DeleteObj(oInsts)
マスターモデルをデュプリケイトして位置と名前と親を合わせただけですね。
毎回DeleteObjすると効率が悪いので外に出していっぺんにやりましたが、Duplicateも同様なので修正したいです。
ま、時間があるときにまた直すかも。