<CATIA V5 BBS TIPS & USAGE TOP_PAGE > 記事閲覧
VBAを使用して、選択エレメント名を取得する。
日時: 2005/07/26 17:09
名前: mmy

 関連記事[No.2089] CATIA始めて3ヶ月さんの投稿より

現在マウスクリックして選択されている(バックがオレンジ色で反転している)エレメントの名前を取得する。

'_/_/_/ ここから _/_/_/
Option Explicit

Sub CATMain()

On Error Resume Next

Dim objSelection As Selection
Dim FoundObject As AnyObject

Set objSelection = CATIA.ActiveDocument.Selection

Dim strObjName As String
Dim strObjType(50) As String
Dim iLpCnt As Integer
Dim a As SelectedElement

'// Paturn1
strObjType(0) = "CATIABody"
strObjType(1) = "CATIAHybridBody"
'// Paturn2
' strObjType(0) = "CATIAPad"
' strObjType(1) = "CATIASketchBasedShape"
' strObjType(2) = "CATIAPocket"
' strObjType(3) = "CATIAShaft"
' strObjType(4) = "CATIAGroove"
' strObjType(5) = "CATIAHole"
' strObjType(6) = "CATIARib"
' strObjType(7) = "CATIASlot"
' strObjType(8) = "CATIAAssemble"
' strObjType(9) = "CATIAAdd"
' strObjType(10) = "CATIARemove"
' strObjType(11) = "CATIAIntersect"
' strObjType(12) = "CATIATrim"
' strObjType(13) = "CATIADraft"
' strObjType(14) = "CATIAFillet"

For iLpCnt = 0 To 50
Set FoundObject = objSelection.FindObject(strObjType(iLpCnt))
If (Err.Number = 0) Then
strObjName = FoundObject.Name
Exit For
Else
Err.Clear
End If
Next iLpCnt

If (strObjName = "") Then
Call MsgBox("選択されたオブジェクト名が取得できません", vbExclamation & vbOKOnly, "処理終了")
Else
Call MsgBox("選択されたオブジェクト名は => " + strObjName, vbInformation & vbOKOnly, "処理終了")
End If

End Sub
'_/_/_/ ここまで _/_/_/

とりあえずBodyかHybridかが知りたいだけならばPaturn1の方法で、要素が属しているBodyの名称が取得できます。
さらに細かく要素一つ一つまで知りたい場合はPaturn2の方を使用してください。
ちなみに全ての要素を判別できるようにするためにはこの配列に一つずつ全て記載していく必要があります。

メンテ(修正・削除)

Page: 1 |

Re: VBAを使用して、選択エレメント名を取得する。 ( No.1 )
日時: 2005/07/27 15:40
名前: mmy

マクロ実行後にマウスでオブジェクトを選択する場合

 関連記事[No.2098] emilyさんの投稿より

' 以下マクロ

Sub CATMain()

' 以下2行はマクロ実行後にマウスでオブジェクトを選択する場合に必要です。
Dim InputDocType(0) ' (事前にオブジェクトをマウスで選択していた場合は不要です。)
InputDocType(0) = "AnyObject" ' (事前にオブジェクトをマウスで選択していた場合は不要です。)

Set part1 = CATIA.ActiveDocument.Part

Set ActDocSel = CATIA.ActiveDocument.Selection

' オブジェクトをマウスで選択するのを待ちます。
Result = ActDocSel.SelectElement2(InputDocType, "Select Object", True) ' (事前にオブジェクトをマウスで選択していた場合は不要です。)

Set obj = ActDocSel.Item(1).Value

strObjName = obj.Name 'オブジェクト名 obj.Name のままで良いのですが代入しました。

If (strObjName = "") Then
Call MsgBox("選択されたオブジェクト名を取得できませんでした。 ", vbExclamation & vbOKOnly, "オブジェクト名取得失敗")
Else
Call MsgBox(strObjName + " を" & vbLf & "作業オブジェクトに設定します。 ", vbInformation & vbOKOnly, "オブジェクト名取得成功")
End If

part1.InWorkObject = obj '選択されたオブジェクトを「作業オブジェクトに設定」

End Sub

' 以上マクロ

メンテ(修正・削除)
Re: VBAを使用して、選択エレメント名を取得する。 ( No.2 )
日時: 2005/07/28 14:32
名前: emily

No.1の中で、オブジェクト名 obj.Nameが「Reference」という文字になることがあり得ます。(InputDocType(0) = "AnyObject"のときだったか。確認は簡単ですから自分で表示してやってみるに限ります)
確か、obj.DisplayNameを使ってみれば出来るかと。以上、蛇足でした。

メンテ(修正・削除)

Page: 1 |

題名 スレッドをトップへソート
名前  
E-Mail   ※URLとの併記不可
URL   ※Eメールとの併記不可
パスワード 記事メンテ時に使用(英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
コメント
添付データ 添付可能ファイル GIF, JPEG, PNG, LHA, ZIP 最大投稿データ量 1000 KB (1.0 MB)
データ1
データ2

   クッキー保存