CATIAです。
マクロで普通に点を作成した場合は、絶対座標の位置に点が作成されますが、
特定の座標系に依存する位置での点の作成を行うサンプルです。
Option Explicit Sub CATMain() ' 座標系の選択 Dim msg As String msg = "使用する座標系を選択 : ESCキー 終了" Dim filter As Variant filter = Array("AxisSystem") Dim selElementy As SelectedElement Set selElementy = selectElement(msg, filter) If selElementy Is Nothing Then Exit Sub End If Dim axis As AxisSystem Set axis = selElementy.Value ' 座標値を入力 msg = "座標値を入力してください(例:10,20,30)" Dim pos As Variant pos = getCoordinate(msg) If IsEmpty(pos) Then Exit Sub End If ' 点の作成 Call initPoint(pos, axis) End Sub ' 点の作成 Private Function initPoint( _ ByVal ary As Variant, _ ByVal axis As AxisSystem) _ As HybridShapePointCoord Dim part As part Set part = CATIA.ActiveDocument.part Dim fact As HybridShapeFactory Set fact = part.HybridShapeFactory ' 裏側で点作成 Dim pntCoord As HybridShapePointCoord Set pntCoord = fact.AddNewPointCoord( _ ary(0), _ ary(1), _ ary(2) _ ) Dim axisRef As Reference Set axisRef = part.CreateReferenceFromObject(axis) pntCoord.RefAxisSystem = axisRef '<-ここで点が参照する座標系を設定 ' 形状セット新作 Dim hBody As HybridBody Set hBody = part.HybridBodies.Add() hBody.Name = "Macro Point" ' 形状セットに点代入 hBody.AppendHybridShape pntCoord part.UpdateObject pntCoord Set initPoint = pntCoord End Function ' 座標値入力 Private Function getCoordinate( _ ByVal msg As String) _ As Variant Dim res res = InputBox(msg, "座標値", "10,20,30") Dim ary As Variant ary = Split(res, ",") If UBound(ary) < 2 Then Exit Function End If On Error Resume Next getCoordinate = Array( _ CDbl(ary(0)), _ CDbl(ary(1)), _ CDbl(ary(2)) _ ) End Function ' 要素選択 Private Function selectElement( _ ByVal msg As String, _ ByVal filter As Variant) _ As SelectedElement Dim sel As Variant Set sel = CATIA.ActiveDocument.Selection sel.Clear Select Case sel.SelectElement2(filter, msg, False) Case "Cancel", "Undo", "Redo" Set selectElement = Nothing Exit Function End Select Set selectElement = sel.Item(1) End Function
initPoint関数内に記載しましたが、RefAxisSystemプロパティに
座標系のリファレンスを設定する事で、座標系に依存した点に
なるようです。
GUIでの表示のここですね。
自作ライブラリ使わないと面倒です・・・。
あちらはどうしたのかな? CATIAのマクロは全てお任せしたいのに・・・。