Hallo Massimo,
für eine direkte Eingabe der Befehle sehe ich keine Chance.
Allerdings habe ich hier eine Funktion, mit der ich einen Punkt-Dialog aufrufe und dort die Möglichkeit habe, einen neuen Ursprung auf verschiedene Weise zu selektieren oder auch neue Koordinaten einzugeben.
Wenn die Verschiebung immer gleich sein soll, könnte man auch direkt aus den alten Ursprungskoordinaten den enuen Ursprung errechnen ohne den Punktdialog aufzurufen.
Private Sub BtnStlMove_Click(sender As Object, e As EventArgs) Handles BtnStlMove.Click
Dim markId1 As NXOpen.Session.UndoMarkId
markId1 = sess.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Zeichnungstabelle verschieben")
Dim plist(-1), plsect As Tag
Dim npl, nsect As Integer
Dim tab As Annotations.Table
Dim tabsect As Annotations.TableSection = Nothing
Dim oman As NXObjectManager = sess.GetObjectManager()
ufs.Plist.AskTags(plist, npl)
If plist.Length > 0 Then
tab = CType(oman.GetTaggedObject(plist(0)), Annotations.Table)
' Sections aus Table ermitteln
ufs.Tabnot.AskNmSections(plist(0), nsect)
For j As Integer = 0 To nsect - 1
ufs.Tabnot.AskNthSection(plist(0), j, plsect)
tabsect = CType(oman.GetTaggedObject(plsect), Annotations.TableSection)
Next
If tab IsNot Nothing Then
Dim origin_old As NXOpen.Point3d = tabsect.AnnotationOrigin
Dim loc1(2) As Double
loc1(0) = 200
loc1(1) = 25
Dim Punkt As New Point3d
Punkt = BildschirmpunktSelektieren("Selectiere den neuen Ursprung der Tabelle (rechte untere Ecke)", loc1)
If Punkt.X = 0.0 And Punkt.Y = 0.0 And Punkt.Z = 0.0 Then
Punkt = origin_old
End If
Dim origin1 As NXOpen.Point3d = New NXOpen.Point3d(300, 0, 0.0)
tabsect.AnnotationOrigin = Punkt
sess.UpdateManager.DoInterpartUpdate(markId1)
sess.UpdateManager.DoAssemblyConstraintsUpdate(markId1)
End If
End If
End Sub
Public Function BildschirmpunktSelektieren(ByVal mess As String, ByRef loc() As Double) As Point3d
Dim res As PointConstructResult
Dim Punkt As Point3d
res = PointConstruct(mess, loc)
If res = PointConstructResult.OK Then
Punkt = New Point3d(loc(0), loc(1), loc(2))
Return Punkt
End If
End Function
Private Function PointConstruct(ByVal mess As String, ByVal loc() As Double) As PointConstructResult
Dim method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointInferred
Dim pnt_tag As NXOpen.Tag
Dim pc_res As Integer
'NX Userinterface sperren
ufs.Ui.LockUgAccess(UFConstants.UF_UI_FROM_CUSTOM)
ufs.Ui.PointConstruct(mess, method, pnt_tag, loc, pc_res)
'NX Userinterface entsperren
ufs.Ui.UnlockUgAccess(UFConstants.UF_UI_FROM_CUSTOM)
Return CType(pc_res, PointConstructResult)
End Function
Private Enum PointConstructResult
OK = 2
Back = 4
Cancel = 3
End Enum
Herzliche Grüße
Tolo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP