依存関係にあるオブジェクトの強引なを削除

2013年6月2日

はじめに

Salome で、たとえば Box を作り、それをコピーで Translation したあと、もとのオブジェクトがいらなくなった場合、移動したオブジェクトがもとのオブジェクトを参照しているため、ものとオブジェクトを Delete で消すことができない。

このような場合に Python スクリプトでもとのオブジェクトを削除する方法を以下に示す。

注意: この方法を試みてなにか問題が起こっても保障はしません。自己責任で。

バージョン

Salome-Meca 2013.1 (Salome 6.6.0)

オブジェクトの強引なを削除

たとえば Box を作り、それをコピーで Translation する。"Box_1" を削除するには、Python Console でつぎのように入力する。

obj = salome.myStudy.FindObject('Box_1')
import salome.kernel.studyedit as studyedit
se = studyedit.StudyEditor()
se.removeItem(obj, True)

Object Browser で F5 を押す。コピーしたオブジェクトに "<Invalid Reference>" という項目がぶら下がっているので、右クリックで "Delete Invalid Reference" を選ぶ。

オブジェクトの依存関係の強引なを削除

もとのオブジェクトを残しつつ、もとのオブジェクトとの依存関係を削除したければ、いったんもとのオブジェクトをその場にコピーしてから削除すればよい。

スクリプトにすると以下のような感じ。

import geompy

def getObject(name):
    return salome.myStudy.FindObject(name).GetObject()

def deleteDependency(shape):
    shape2 = geompy.MakeTranslation(shape, 0, 0, 0)
    id = geompy.addToStudy(shape2, '')
    obj = salome.myStudy.FindObjectID(id)
    obj.SetAttrString('AttributeName', shape.GetName())
    deleteShape(shape)

    gg = salome.ImportComponentGUI('GEOM')
    gg.createAndDisplayGO(id)

使い方

>>> shape = getObject('Box_1')
>>> deleteDependency(shape)

新しく "Box_1" が作られ、もとのオブジェクトが削除される。