こんにちは、
Inventorユーザ会の掲示板に、作業オブジェクトがUCSに含まれているか否かを知るにはどうしたらよいか?という記事がありました。
https://ssl.inventor-ug.jp/imgbbs/index.php
作業オブジェクトのプロパティで、IsCoordinateSystemElement を使うとUCSに含まれているかどうかを知ることはできますが、どのUCSに含まれているかも知りたいですね。ちょっと興味を覚えたので調べてサンプルマクロを作ってみました。
以下はVBAのサンプルコードです。
オブジェクトをブラウザ内で検索して、その親のノードを調べる方法を使ってみました。この方法は、ブラウザのノードの情報が使えるので、意外とほかにも使い道がありそうです。
Sub 作業軸の種類を区別するサンプル()
Dim oDoc As Inventor.PartDocument
Set oDoc = ThisApplication.ActiveDocument
Dim oWx As Inventor.WorkAxis
Set oWx = ThisApplication.CommandManager.Pick(kWorkAxisFilter, "作業軸を選択:")
If oWx.IsCoordinateSystemElement Then
'作業軸はUCSに含まれるか基準作業軸
Dim oWxNodeDef As Inventor.NativeBrowserNodeDefinition
Dim oWxNode As Inventor.BrowserNode
'ブラウザ内を検索
Set oWxNodeDef = oDoc.BrowserPanes.GetNativeBrowserNodeDefinition(oWx)
Set oWxNode = oDoc.BrowserPanes.ActivePane.TopNode.AllReferencedNodes(oWxNodeDef).Item(1)
'親のノードを調べる
Dim oUCS As Inventor.UserCoordinateSystem
Set oUCS = oWxNode.Parent.NativeObject
If oUCS Is Nothing Then
MsgBox oWx.Name + " は、基準作業軸"
Else
MsgBox oWx.Name + " は、UCS " + oUCS.Name + " に含まれる"
End If
Else
MsgBox oWx.Name + " は、ユーザ定義作業軸"
End If
End Sub
※このVBAのコードはInventor2011で作成しました。
-YO
こんな事ができるのですね。
勉強になりました。
まだまだ知らない事ばかりです。
ユーザ会の掲示板でも紹介しておきました。
投稿情報: 丹羽@Inventor-UG | 2010年11 月 8日 (月) 16:41