Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Linie in Skizze erstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Linie in Skizze erstellen (235 mal gelesen)
met
Mitglied
CAD-Admin / Konstrukteur


Sehen Sie sich das Profil von met an!   Senden Sie eine Private Message an met  Schreiben Sie einen Gästebucheintrag für met

Beiträge: 126
Registriert: 23.07.2004

TCE 9.1.3
NX 5
Ideas 12
3ds max 8
CorelDraw 12

erstellt am: 24. Apr. 2017 15:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo, ich habe eine Skizze (verdreht im Raum) und möchte nun auf diese per 2D-Koordinaten eine Kontur erstellen.

Wie muss ich das machen?

[Diese Nachricht wurde von met am 24. Apr. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Walter Hogger
Moderator
Maschinenbauingenieur


Sehen Sie sich das Profil von Walter Hogger an!   Senden Sie eine Private Message an Walter Hogger  Schreiben Sie einen Gästebucheintrag für Walter Hogger

Beiträge: 3018
Registriert: 06.10.2000

UG V2 bis V18
NX1 bis NX11
Windows, UNIX, Linux

erstellt am: 24. Apr. 2017 15:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für met 10 Unities + Antwort hilfreich

Hallo met,

Skizzen sind stets planar. Vermutlich liegt deine Skizze auf einer räumlichen Ebene oder einem räumlichen Koordinatensystem. Wenn du die Skizzenebene selektierst und <F8> drückst, dann solltest du normal auf die Skizze blicken (keine Verzerrung mehr dabei). Dann könntest du dein WCS so platzieren, dass X-Y ebenfalls in dieser Ebene liegt und dann kannst du 2D-Koordinaten abfragen oder Punkte erstellen.

So deutlich ist dein Ziel nicht formuliert.

Gruß

------------------
Walter Hogger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

met
Mitglied
CAD-Admin / Konstrukteur


Sehen Sie sich das Profil von met an!   Senden Sie eine Private Message an met  Schreiben Sie einen Gästebucheintrag für met

Beiträge: 126
Registriert: 23.07.2004

TCE 9.1.3
NX 5
Ideas 12
3ds max 8
CorelDraw 12

erstellt am: 24. Apr. 2017 16:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo und Danke für die schnelle Antwort.

Ich habe das WCS auf die Skizze ausgerichtet, muss ich die curves vielleicht anders erstellen als mit

Code:
myPart.Curves.CreateLine(stpt, endpt)

Hier mein Beispiel:
Erstellt einen Text auf der Skizze mit dem Namen "Skizze_Text"

Code:
' NX 5.0.6.3
' Journal created by met on Tue Apr 11 10:42:12 2017 Mitteleuropäische Sommerzeit
'
Option Strict Off
Imports System
Imports NXOpen


Module NXJournal000
    Sub Main()

        Dim theSession As Session = Session.GetSession()
        Dim workPart As Part = theSession.Parts.Work

        Dim displayPart As Part = theSession.Parts.Display

        NX_CreateText("Test", New Drawing.Font("Arial", 10), "Skizze_Text", workPart)
    End Sub

    Function NX_CreateText(text As String, font As Drawing.Font, mySketchName As String, myPart As Part, Optional mySession As Session = Nothing, Optional myUfSession As UF.UFSession = Nothing) As Boolean
        If mySession Is Nothing Then mySession = NXOpen.Session.GetSession()
        If myUfSession Is Nothing Then myUfSession = NXOpen.UF.UFSession.GetUFSession()
        Dim path As New Drawing.Drawing2D.GraphicsPath(System.Drawing.Drawing2D.FillMode.Alternate)
        Dim curves As New Collections.ArrayList
        Dim zero As New Drawing.Point(0, 0)
        Dim format As Drawing.StringFormat = Drawing.StringFormat.GenericDefault
        path.AddString(text, font.FontFamily, font.Style, font.SizeInPoints, zero, format)

        Dim bounds As Drawing.RectangleF = path.GetBounds()
        Dim gdi As New Drawing.Drawing2D.GraphicsPathIterator(path)
        gdi.Rewind()

        Dim origin() As Double = {bounds.Left, bounds.Bottom}

        Dim mySketch As Sketch = Nothing

        Try
            For Each tmpFeature As Features.Feature In myPart.Features
                If tmpFeature.Name = mySketchName Then
                    mySketch = CType(tmpFeature, Features.SketchFeature).Sketch
                End If
            Next
        Catch ex As Exception
        End Try

        If Not IsNothing(mySketch) Then

            myPart.WCS.SetCoordinateSystem(myPart.CoordinateSystems.CreateCoordinateSystem(mySketch.Origin, mySketch.Orientation, True))

            For iSubPath As Integer = 0 To gdi.SubpathCount - 1
                Dim mySubPaths As Integer
                Dim IsClosed As Boolean
                Dim subPathStartIndex, subPathEndIndex As Integer
                Dim stpt As New Point3d
                Dim endpt As New Point3d

                mySubPaths = gdi.NextSubpath(subPathStartIndex, subPathEndIndex, IsClosed)
                Dim pointTypeStartIndex, pointTypeEndIndex As Integer
                Do
                    Dim subPathPointType As Byte
                    Dim numPointsFound As Integer = gdi.NextPathType(subPathPointType, pointTypeStartIndex, pointTypeEndIndex)
                    Dim type As Drawing.Drawing2D.PathPointType = CType(subPathPointType, Drawing.Drawing2D.PathPointType)
                    If type = Drawing.Drawing2D.PathPointType.Line Then
                        NX_CreateLinearPath(pointTypeStartIndex, pointTypeEndIndex, path, origin, curves, myPart)
                    ElseIf type = Drawing.Drawing2D.PathPointType.Bezier3 Then
                        NX_CreateSplinePath(pointTypeStartIndex, pointTypeEndIndex, path, origin, curves, myUfSession)
                    End If
                Loop While subPathEndIndex <> pointTypeEndIndex
                If IsClosed Then
                    stpt.X = path.PathPoints(subPathStartIndex).X + origin(0)
                    stpt.Y = -path.PathPoints(subPathStartIndex).Y + origin(1)
                    stpt.Z = 0
                    endpt.X = path.PathPoints(subPathEndIndex).X + origin(0)
                    endpt.Y = -path.PathPoints(subPathEndIndex).Y + origin(1)
                    endpt.Z = 0
                    If Math.Abs(stpt.X - endpt.X) > 0.000001 Or Math.Abs(stpt.Y - endpt.Y) > 0.000001 Then
                        curves.Add(myPart.Curves.CreateLine(stpt, endpt))
                    End If
                End If
            Next
            mySketch.Activate(Sketch.ViewReorient.True)

            mySketch.DeleteObjects(mySketch.GetAllGeometry)
            For Each Curve As DisplayableObject In curves
                Try
                    mySketch.AddGeometry(Curve)
                Catch ex As Exception
                End Try
            Next
            mySketch.Deactivate(Sketch.ViewReorient.True, Sketch.UpdateLevel.Model)
        End If

        Return Nothing
    End Function

    Sub NX_CreateLinearPath(ByVal startIndex As Integer, ByVal endIndex As Integer, _
                        ByRef path As Drawing.Drawing2D.GraphicsPath, ByRef origin() As Double, _
                        ByRef curves As Collections.ArrayList, myPart As Part)
        Dim j As Integer
        For j = startIndex To endIndex - 1
            Dim stpt As New Point3d
            Dim endpt As New Point3d
            stpt.X = path.PathPoints(j).X + origin(0)
            stpt.Y = -path.PathPoints(j).Y + origin(1)
            stpt.Z = 0
            endpt.X = path.PathPoints(j + 1).X + origin(0)
            endpt.Y = -path.PathPoints(j + 1).Y + origin(1)
            endpt.Z = 0
            curves.Add(myPart.Curves.CreateLine(stpt, endpt))
        Next
    End Sub
    Sub NX_CreateSplinePath(ByVal startIndex As Integer, ByVal endIndex As Integer, _
                        ByRef path As Drawing.Drawing2D.GraphicsPath, ByRef origin() As Double, _
                        ByRef curves As Collections.ArrayList, ByRef myUfSession As UF.UFSession)
        Dim j As Integer
        For j = startIndex To endIndex - 1 Step 3
            Dim poles(3, 3) As Double
            Dim k As Integer
            For k = 0 To 3
                poles(k, 0) = path.PathPoints(j + k).X + origin(0)
                poles(k, 1) = -path.PathPoints(j + k).Y + origin(1)
                poles(k, 2) = 0
                poles(k, 3) = 1
            Next
            Dim knots() As Double = {0, 0, 0, 0, 1, 1, 1, 1}
            Dim spl As UF.UFCurve.Spline
            Dim spline As Tag
            Dim num_states As Integer
            Dim states() As UF.UFCurve.State = Nothing
            spl.start_param = 0
            spl.end_param = 1
            spl.is_rational = 0
            spl.num_poles = 4
            spl.order = 4
            spl.knots = knots
            spl.poles = poles
            myUfSession.Curve.CreateSpline(spl, spline, num_states, states)
            curves.Add(Utilities.NXObjectManager.Get(spline))
        Next
    End Sub

End Module



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Walter Hogger
Moderator
Maschinenbauingenieur


Sehen Sie sich das Profil von Walter Hogger an!   Senden Sie eine Private Message an Walter Hogger  Schreiben Sie einen Gästebucheintrag für Walter Hogger

Beiträge: 3018
Registriert: 06.10.2000

UG V2 bis V18
NX1 bis NX11
Windows, UNIX, Linux

erstellt am: 24. Apr. 2017 16:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für met 10 Unities + Antwort hilfreich

Au weia,

bei mir kommen alle Beiträge von den unterschiedlichen Foren-Bereichen rein. Ich hatte übersehen, das deiner aus der Programmierer-Ecke stammt. SORRY!
Meine Antwort war für die interaktive Vorgehensweise gedacht. Mit NXOpen kenn' ich mich leider nicht aus, das machen meine Kollegen.
Vielleicht liest das der Michael? ;-)

Gruß

------------------
Walter Hogger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2186
Registriert: 18.10.2005

HP Z420
WIN XP32 / WIN7 64
UG NX6-11
SUN Ultra 60
Solaris 7
CADDS5

erstellt am: 24. Apr. 2017 17:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für met 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Walter Hogger:
Vielleicht liest das der Michael? ;-)

Er hat's gelesen :-)

Aber das "Au weia" bleibt auch hier nicht aus:

    Warum gehst Du erst über GDI bzw. System.Drawing ? Das hat mit NX erstmal nichts zu tun.
    > 100 Zeilen Code so mal schnell zu überblicken und ggfs. zu korrigieren ist nicht drin, sorry.

Die Empfehlung lautet, den gewünschten Ablauf aufzuzeichnen, möglichst nur das Notwendige. Beim Sketch ist jedenfalls einiges mehr zu machen als bei einer einfachen Linie. Steht aber alles in einer Aufzeichnung drin.

Gruß, Michael

------------------
Ein Mensch wird laut, wenn er was will;
wenn er's erst hat, dann wird er still;
Das "Danke" ist, nach alter Sitte,
Weit seltner als das "Bitte, Bitte".

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

met
Mitglied
CAD-Admin / Konstrukteur


Sehen Sie sich das Profil von met an!   Senden Sie eine Private Message an met  Schreiben Sie einen Gästebucheintrag für met

Beiträge: 126
Registriert: 23.07.2004

TCE 9.1.3
NX 5
Ideas 12
3ds max 8
CorelDraw 12

erstellt am: 25. Apr. 2017 07:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Michael,

sorry... hier mal etwas kompakter :-)

Ich möchte in einer ausgewählten Skizze, einzelne Linien hinzufügen.
- die Skizze kann irgendwo im Raum sein (deshalb habe ich das WCS auf die Skizze ausgerichtet)
- ich möchte nun Linien mit 2D-Koordinaten auf der Skizze erzeugen (nicht mit Welt-Koordinaten)

Hier mein Versuch:

Code:
Option Strict Off
Imports System
Imports NXOpen


Module NXJournal300
    Sub Main()
        Dim theSession As Session = Session.GetSession()
        Dim workPart As Part = theSession.Parts.Work
        Dim displayPart As Part = theSession.Parts.Display
        Dim mySketch As Sketch = Nothing

        Try
            For Each tmpFeature As Features.Feature In workPart.Features
                If tmpFeature.Name = "Skizze_Text" Then
                    mySketch = CType(tmpFeature, Features.SketchFeature).Sketch
                End If
            Next
        Catch ex As Exception
        End Try

        If Not IsNothing(mySketch) Then
            workPart.WCS.SetCoordinateSystem(workPart.CoordinateSystems.CreateCoordinateSystem(mySketch.Origin, mySketch.Orientation, True))

            Dim curves As New Collections.ArrayList
            curves.Add(workPart.Curves.CreateLine(New Point3d(0, 0, 0), New Point3d(100, 0, 0)))
            curves.Add(workPart.Curves.CreateLine(New Point3d(100, 0, 0), New Point3d(100, 50, 0)))
            curves.Add(workPart.Curves.CreateLine(New Point3d(100, 50, 0), New Point3d(0, 0, 0)))

            mySketch.Activate(Sketch.ViewReorient.True)

            mySketch.DeleteObjects(mySketch.GetAllGeometry)
            For Each Curve As DisplayableObject In curves
                Try
                    mySketch.AddGeometry(Curve)
                Catch ex As Exception
                End Try
            Next
            mySketch.Deactivate(Sketch.ViewReorient.True, Sketch.UpdateLevel.Model)
        End If
    End Sub
End Module


Erstellt werden die Linien aber auf absolute Koordinaten und nicht auf der Ebene der Skizze 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2186
Registriert: 18.10.2005

HP Z420
WIN XP32 / WIN7 64
UG NX6-11
SUN Ultra 60
Solaris 7
CADDS5

erstellt am: 25. Apr. 2017 09:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für met 10 Unities + Antwort hilfreich

Hallo met,

das sieht zwar schon besser aus, aber

Code:
workPart.Curves.CreateLine
wird in einem Sketch m.W. nicht funktionieren. Es braucht in jedem Fall einen Sketch*Builder, die Methode, um darin eine Linie zu erzeugen hab' ich jetzt nicht auswendig parat. Daher nochmal: Journal Aufzeichnen !

Gruß, Michael

So kommt's, wenn man glaubt, etwas aus dem Gedächtnis heraus beantworten zu können 

Code:
workPart.Curves.CreateLine
ist die richtige Methode, zuvor fehlt aber ein BeginTaskEnvironment. Auch den Sketch*Builder braucht man nicht bei einem existierenden Sketch.

Was aber nach wie vor gilt: NX weiss besser, wie es tickt und daher führt eine Aufzeichnung zur Lösung.
------------------
Ein Mensch wird laut, wenn er was will;
wenn er's erst hat, dann wird er still;
Das "Danke" ist, nach alter Sitte,
Weit seltner als das "Bitte, Bitte".

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

met
Mitglied
CAD-Admin / Konstrukteur


Sehen Sie sich das Profil von met an!   Senden Sie eine Private Message an met  Schreiben Sie einen Gästebucheintrag für met

Beiträge: 126
Registriert: 23.07.2004

TCE 9.1.3
NX 5
Ideas 12
3ds max 8
CorelDraw 12

erstellt am: 25. Apr. 2017 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

zeichnet mir leider nur das auf :-(
Zur Info: Ich arbeite mit NX5, da wir noch auf TCE9.1.3 hängen...

Code:
' NX 5.0.6.3
' Journal created by met on Tue Apr 25 14:28:19 2017 Mitteleuropäische Sommerzeit
'
Option Strict Off
Imports System
Imports NXOpen

Module NXJournal2222
    Sub Main()

        Dim theSession As Session = Session.GetSession()
        Dim workPart As Part = theSession.Parts.Work

        Dim displayPart As Part = theSession.Parts.Display

        Dim markId1 As Session.UndoMarkId
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Redefine Feature")

        Dim markId2 As Session.UndoMarkId
        markId2 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Redefine Feature")

        Dim sketchFeature1 As Features.SketchFeature = CType(workPart.Features.FindObject("SKETCH(26)"), Features.SketchFeature)

        sketchFeature1.MakeCurrentFeature()

        theSession.BeginTaskEnvironment()

        Dim markId3 As Session.UndoMarkId
        markId3 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Sketcher")

        theSession.DeleteUndoMarksUpToMark(markId3, Nothing, False)

        Dim markId4 As Session.UndoMarkId
        markId4 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Sketcher")

        Dim sketch1 As Sketch = CType(workPart.Sketches.FindObject("SKETCH_001"), Sketch)

        sketch1.Activate(Sketch.ViewReorient.True)

        theSession.DeleteUndoMarksUpToMark(markId4, Nothing, True)

        theSession.DeleteUndoMarksUpToMark(markId4, Nothing, False)

        Dim markId5 As Session.UndoMarkId
        markId5 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Open Sketch")

        theSession.DeleteUndoMarksUpToMark(markId5, Nothing, False)

        Dim markId6 As Session.UndoMarkId
        markId6 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Sketcher")

        Dim markId7 As Session.UndoMarkId
        markId7 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Profile short list")

        Dim markId8 As Session.UndoMarkId
        markId8 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Curve")

        theSession.SetUndoMarkVisibility(markId8, "Curve", Session.MarkVisibility.Visible)

        Dim startPoint1 As Point3d = New Point3d(20.15, 48.441154273188, 87.5025403784439)
        Dim endPoint1 As Point3d = New Point3d(14.15, 48.441154273188, 87.5025403784439)
        Dim line1 As Line
        line1 = workPart.Curves.CreateLine(startPoint1, endPoint1)

        theSession.ActiveSketch.AddGeometry(line1, Sketch.InferConstraintsOption.InferNoConstraints)

        Dim geom1 As Sketch.ConstraintGeometry
        geom1.Geometry = line1
        geom1.PointType = Sketch.ConstraintPointType.None
        geom1.SplineDefiningPointIndex = 0
        Dim sketchGeometricConstraint1 As SketchGeometricConstraint
        sketchGeometricConstraint1 = theSession.ActiveSketch.CreateHorizontalConstraint(geom1)

        theSession.ActiveSketch.Deactivate(Sketch.ViewReorient.True, Sketch.UpdateLevel.SketchOnly)

        theSession.DeleteUndoMarksSetInTaskEnvironment()

        theSession.EndTaskEnvironment()

        Dim nErrs1 As Integer
        nErrs1 = theSession.UpdateManager.DoUpdate(markId2)

        sketchFeature1.MakeCurrentFeature()

        theSession.DeleteUndoMark(markId2, Nothing)


    End Sub
End Module


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2186
Registriert: 18.10.2005

HP Z420
WIN XP32 / WIN7 64
UG NX6-11
SUN Ultra 60
Solaris 7
CADDS5

erstellt am: 25. Apr. 2017 16:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für met 10 Unities + Antwort hilfreich

Meine "Älteste" ist die NX6, da sieht die Aufzeichnung aber sehr ähnlich aus. Nur das Constraint hab' ich weggelassen. Tut sich was, wenn Du es wieder ablaufen lässt ? Sollte m.E. funktionieren. Vorher sollte die schon erzeugte Linie gelöscht oder durch ein UNDO entfernt werden.

------------------
Ein Mensch wird laut, wenn er was will;
wenn er's erst hat, dann wird er still;
Das "Danke" ist, nach alter Sitte,
Weit seltner als das "Bitte, Bitte".

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

met
Mitglied
CAD-Admin / Konstrukteur


Sehen Sie sich das Profil von met an!   Senden Sie eine Private Message an met  Schreiben Sie einen Gästebucheintrag für met

Beiträge: 126
Registriert: 23.07.2004

TCE 9.1.3
NX 5
Ideas 12
3ds max 8
CorelDraw 12

erstellt am: 27. Apr. 2017 10:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

hier die Lösung:
UFSession.Csys.MapPoint

Code:
Option Strict Off
Imports System
Imports NXOpen


Module NXJournal300
    Sub Main()
        Dim theSession As Session = Session.GetSession()
        Dim workPart As Part = theSession.Parts.Work
        Dim displayPart As Part = theSession.Parts.Display
        Dim mySketch As Sketch = Nothing

        Try
            For Each tmpFeature As Features.Feature In workPart.Features
                If tmpFeature.Name = "Skizze_Text" Then
                    mySketch = CType(tmpFeature, Features.SketchFeature).Sketch
                End If
            Next
        Catch ex As Exception
        End Try

        If Not IsNothing(mySketch) Then
            workPart.WCS.SetCoordinateSystem(workPart.CoordinateSystems.CreateCoordinateSystem(mySketch.Origin, mySketch.Orientation, True))

            Dim p1 As New Point3d(0, 0, 0)
            Dim p2 As New Point3d(50, 0, 0)
            Dim p3 As New Point3d(100, 50, 0)


            Dim curves As New Collections.ArrayList
            curves.Add(workPart.Curves.CreateLine(NX_WCS2Abs(p1), NX_WCS2Abs(p2)))
            curves.Add(workPart.Curves.CreateLine(NX_WCS2Abs(p2), NX_WCS2Abs(p3)))
            curves.Add(workPart.Curves.CreateLine(NX_WCS2Abs(p3), NX_WCS2Abs(p1)))

            mySketch.Activate(Sketch.ViewReorient.True)

            mySketch.DeleteObjects(mySketch.GetAllGeometry)
            For Each Curve As DisplayableObject In curves
                Try
                    mySketch.AddGeometry(Curve)
                Catch ex As Exception
                End Try
            Next
            mySketch.Deactivate(Sketch.ViewReorient.True, Sketch.UpdateLevel.Model)
        End If
    End Sub

    Function NX_WCS2Abs(myPoint As Point3d, Optional myUfSession As UF.UFSession = Nothing) As Point3d
        If myUfSession Is Nothing Then myUfSession = NXOpen.UF.UFSession.GetUFSession()
        Dim result As New Point3d()
        Dim p1(2), p2(2) As Double
        p1(0) = myPoint.X
        p1(1) = myPoint.Y
        p1(2) = myPoint.Z

        myUfSession.Csys.MapPoint(UF.UFConstants.UF_CSYS_ROOT_WCS_COORDS, p1, UF.UFConstants.UF_CSYS_ROOT_COORDS, p2)
        result.X = p2(0)
        result.Y = p2(1)
        result.Z = p2(2)

        Return result
    End Function
End Module


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2186
Registriert: 18.10.2005

HP Z420
WIN XP32 / WIN7 64
UG NX6-11
SUN Ultra 60
Solaris 7
CADDS5

erstellt am: 27. Apr. 2017 17:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für met 10 Unities + Antwort hilfreich

Hallo met,

Ostern ist zwar vorbei ... aber das ist jetzt schon ein Überraschungsei. Es ging Dir um's Mapping ? Die Linie war da, nur an einer falschen Position ? Das hättest Du auch gleich sagen können ... kostet min. 5 U's extra 

Michael

------------------
Ein Mensch wird laut, wenn er was will;
wenn er's erst hat, dann wird er still;
Das "Danke" ist, nach alter Sitte,
Weit seltner als das "Bitte, Bitte".

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2017 CAD.de