プロダクト内の要素の親パート名を表示するマクロ

選択した要素(面や線)が入っているPartのPart名を表示させるマクロ

Option Explicit
‘プロダクトを起動中
‘選択要素の親パートを探す
‘参考:http://catiauser.net/phpBB/about574.html

Sub CATMain()

Dim oProductDocument1 As ProductDocument
Dim oSelection1 As Variant
Dim faceselect As Variant
Dim oPart1 As Variant
Dim InputDocType(0)
InputDocType(0) = “AnyObject”

Set oProductDocument1 = CATIA.ActiveDocument
Set oSelection1 = oProductDocument1.Selection
‘—ここから、事前に要素を選択している場合不要—————————–
‘SelectElement2を使いユーザーに要素を選択してもらう
oSelection1.Clear

MsgBox (“select AnyObject”)
‘要素を選択し取得
faceselect = oSelection1.SelectElement2(InputDocType, “Select Object”, True)

If (faceselect = “Cancel”) Then
Exit Sub

End If
’—-ここまで不要————————————————————————-
‘要素の親のPartを検索し入力
Set oPart1 = oSelection1.FindObject(“CATIAPart”)
oSelection1.Clear

oPart1.Update

MsgBox “PartNumber is ” & oPart1.Name

End Sub

プロダクト内の要素の親パート名を表示するマクロ」への4件のフィードバック

  1. 山根

    初めまして。いつも参考にさせていただいてます。質問なのですが、例えば接合や、抽出実行後に、その親の名前を知る方法はありますか?もしよろしければご教示下さい。

    返信
    1. tomo 投稿作成者

      >山根さん

      その親という要素はツリー上で要素(接合、抽出等)の上にある形状セットの事で宜しいでしょうか?
      その場合以下の方法で取得が出来ます。


      Dim oHBody As HybridBody
      Set oHBody = oHShape.Parent

      oHShapeに要素(接合、抽出等)を入れると
      oHBodyに親の形状セットが入るので
      oHBody.Nameから名前の取得が出来ます。

      返信
      1. 山根

        すみません、説明が不足していました。
        親というのは形状セットではなく、抽出や接合で選択した要素の事を指しています。

        例えば、ある面を選択して抽出を行った時に、選択した面が仮に《サーフェス.4》であればサーフェス.4と返すようにしたいです。

        よろしくお願いします。

        返信
        1. tomo 投稿作成者

          >山根さん
          接合の場合であれば、
          HybridShapeAssemble.GetElement([Index] as Long)
          を用いて元となる要素を取得でき、DisplayNameが要素名と
          なりますので、以下の方法で元となる要素名の表示が出来ます。

          oHJoinには結合の要素が入ります。

          lElemSize = oHJoin.GetElementsSize
          Dim i As Long
          sElemNames = ""
          For i = 1 To lElemSize
            sElemNames = sElemNames & oHJoin.GetElement(i).DisplayName & vbCrLf
          Next i
          MsgBox sElemNames

          返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*