Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Funktion CreateArc

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Funktion CreateArc (1760 mal gelesen)
l.pesch
Mitglied



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

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 13. Okt. 2005 13:03    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 alle zusammen,
bräuchte mal wieder nochmal eure Hilfe. Ich versuche einen Kreis zu erzeugen, aber das Programm bringt eine Fehlermeldung und es wird nichts erzeugt.
Könntest ihr es euch mal anschauen. Es ist eigentlich alles angegeben.


Code:

Option Strict Off
Imports System
Imports System.IO
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.Utilities

Module CreateArc
Sub Main()

Dim theSession As Session=Session.GetSession()
Dim center As Point3d

center.X = 0
center.Y = 0
center.Z = 0

Dim radius As Double = 3.0
Dim startAngle As Double = 0
Dim endAngle As Double = 360
Dim matrix As NXOpen.NXMatrix


theSession.Parts.Work.Curves.CreateArc(center, matrix, radius, startAngle, endAngle)

End Sub
End Module


Vielen dank in voraus für die Hilfe

Gruß l.pesch

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

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 19. Okt. 2005 10: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 Nur für l.pesch 10 Unities + Antwort hilfreich

Moin,

Zitat:
Hallo alle zusammen,
[...] aber das Programm bringt eine Fehlermeldung und es wird nichts erzeugt.
Könntest ihr es euch mal anschauen. Es ist eigentlich alles angegeben.

naja, so richtig Programmierer bin ich nicht, aber ich habe das mal mit einer anderen Funktion für mich gelöst. Vielleicht kannst du damit was anfangen.
Ich habe noch ein paar Kommentare eingefügt, da bsplw. die Winkelangeben in Bogenmass umgerechnet werden müssen, bevor sie NX verarbeitet ohne einen Fehler auszuspucken.

Code:

Option Strict Off
Imports NXOpen
Imports NXOpen.UF

Module CreateArc
Sub Main()

Dim theSession As Session=Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession()

Dim arc, wcs As Tag
Dim matrix As UFCurve.Arc = New UFCurve.Arc

Dim startAngle As Double = 0.0 'Startwinkel in Grad
Dim endAngle As Double = 270.0 'Endwinkel in Grad

'Umrechnung auf Bogenmass
Dim pi As Double = 3.1415926535897932
Dim t As Integer = 180
Dim t1 As Double = startAngle * pi
Dim t2 As Double = endAngle * pi
matrix.start_angle = t1 / t 'Startwinkel in Bogenmass
matrix.end_angle = t2 / t 'Endwinkel in Bogenmass


matrix.arc_center = array

matrix.radius = 10.0 'Radius

theUfSession.Csys.AskWcs(wcs)
theUfSession.Csys.AskMatrixOfObject(wcs, matrix.matrix_tag)
theUfSession.Curve.CreateArc(matrix, arc)

End Sub
End Module



Ciao
Mario

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

l.pesch
Mitglied



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

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 19. Okt. 2005 12:42    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

Vilen dank,

werde es heute abend mal testen.

Gruß l.pesch

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

l.pesch
Mitglied



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

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 26. Okt. 2005 12:52    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 Mario,

hab da noch eine kleine Frage an dich, wie vergibst du die Koordinaten von Mittelpunkt an das Programm?
Über den Point-Konstruktor?

Ich wollte es über den Point-Konstruktor machen, jetzt habe ich das Problem, das der Point-Konstruktor erscheint. Kann aber keine Punkte,
linienendpunkte oder Bildschirmposition auswählen. Ich kann nur für X, Y und Z- Werte eingeben.

Hast du auch dieses Problem, wo kann mein Fehler liegen.
Wenn ein anderer auch eine Lösung hat bin für jeden Rat dankbar.

Gruß l.pesch

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

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 26. Okt. 2005 16:25    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 l.pesch 10 Unities + Antwort hilfreich

Hallo l.pesch

Zitat:
Original erstellt von l.pesch:

hab da noch eine kleine Frage an dich, wie vergibst du die Koordinaten von Mittelpunkt an das Programm?



Und ich dachte schon ich könnte wenig programmieren . Prinipiell werden jetzt per "direktem Eintrag" im Quelltext die Koordinaten für den Mittelpunkt übergeben. Also muss man doch einfach "nur" die Variablen aus dem array "matrix.arc_center" entsprechend ändern.
Am besten natürlich, wie du es schon angesprochen hattest mit einem Menügeführtem Auswählen durch den Benutzer, das wäre dann wohl der...

Zitat:
Über den Point-Konstruktor?

Genau! Den würde ich auch nehmen.

Zitat:
Kann aber keine Punkte,
linienendpunkte oder Bildschirmposition auswählen. Ich kann nur für X, Y und Z- Werte eingeben.

Klar, du musst den array aus dem Point-Konstruktor so umbiegen, dass dieser die Variablen aus dem Array zum Mittelpunkt ändert.

Zitat:
Hast du auch dieses Problem, wo kann mein Fehler liegen.

Ja, das Problem hatte ich auch anfangs  . Arrays können einen den letzten Nerv rauben.

Naja, ich habe meine vorheriges Journal entsprechend erweitert:

Code:

Option Strict Off
Imports NXOpen
Imports NXOpen.UF

Module CreateArc
Sub Main()

Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession()
Dim nxopenSession As NXOpen.UF.UFSession
Dim arc, wcs As Tag
Dim matrix As UFCurve.Arc = New UFCurve.Arc

Dim startAngle As Double = 0.0 'Startwinkel in Grad
Dim endAngle As Double = 270.0 'Endwinkel in Grad

'Umrechnung auf Bogenmass
Dim pi As Double = 3.1415926535897932
Dim t As Integer = 180
Dim t1 As Double = startAngle * pi
Dim t2 As Double = endAngle * pi
matrix.start_angle = t1 / t 'umgerechneter Startwinkel in Bogenmass
matrix.end_angle = t2 / t 'umgerechneter Endwinkel in Bogenmass

'Variablen fuer Pointconstructor
Dim point_tag As NXOpen.Tag
Dim array() As Double = {0.0, 0.0, 0.0} 'Mittelpunkt-Koordinate (X,Y,Z)
matrix.arc_center = array

Dim base_pt(2) As Double
Dim response As Integer
Dim cue As String = "Select a point"

nxopenSession = NXOpen.UF.UFSession.GetUFSession()
nxopenSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)

Try
    nxopenSession.Ui.PointConstruct(cue, nxopenSession.Ui.PointBaseMethod.PointCursorPos, point_tag, base_pt, response)
Finally
    nxopenSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
End Try

matrix.arc_center(0) = base_pt(0).ToString() 'Mittelpunkt-Koordinate (X) von Point-Constructor an Mittelpunkt-Matrix uebergeben
matrix.arc_center(1) = base_pt(1).ToString() 'Mittelpunkt-Koordinate (Y) von Point-Constructor an Mittelpunkt-Matrix uebergeben
matrix.arc_center(2) = base_pt(2).ToString() 'Mittelpunkt-Koordinate (Z) von Point-Constructor an Mittelpunkt-Matrix uebergeben

matrix.radius = 10.0 'Radius

theUfSession.Csys.AskWcs(wcs)
theUfSession.Csys.AskMatrixOfObject(wcs, matrix.matrix_tag)
theUfSession.Curve.CreateArc(matrix, arc)

End Sub
End Module



Ciao
Mario

p.s.
Sorry, wegen der holzhackermäßigen Umrechnerei zum Bogenmass.

[Diese Nachricht wurde von SMario am 26. Okt. 2005 editiert.]

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

l.pesch
Mitglied



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

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 27. Okt. 2005 08:16    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 SMario,

vielen dank für deine hilfe echt super.

gruß l.pesch

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

l.pesch
Mitglied



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

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 03. Nov. 2005 11:05    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 SMario,

ich gehe da etwas anders vor als du beim erzeugen des Kreises.
Der Punkt wird nicht als Array sondern als Point3D übergeben.
Mit deinem Code kann ich auch Punkte und Endpunkte auswählen, aber bei mir funktioniert das irgendwie nicht, kannst du mir vielleicht sagen wo der Fehler liegen könnte?

Wenn jemand anders mir auch helfen kann bin für jede hilfe dankbar.

Mein Code:
----------------------------------------------------------------------

Option Strict Off
Imports NXOpen
Imports NXOpen.UF

Module CreateArc

Sub Main()

Dim theSession As Session = Session.GetSession()

        Dim center As Point3d

        If 2 = SelectPoint(center) Then

            Dim radius As Double = 3.0

            Dim startAngle As Double = 0.0
            Dim endAngle As Double = 360.0

   
            Dim pi As Double = 3.1415926535897931
            Dim t As Integer = 180
            Dim t1 As Double = startAngle * pi
            Dim t2 As Double = endAngle * pi
            startAngle = t1 / t
            endAngle = t2 / t

            Dim orientation As Matrix3x3

            orientation.Xx = 1.0
            orientation.Xy = 0.0
            orientation.Xz = 0.0
            orientation.Yx = 0.0
            orientation.Yy = 1.0
            orientation.Yz = 0.0
            orientation.Zx = 0.0
            orientation.Zy = 0.0
            orientation.Zz = 1.0

      Dim matrix As NXOpen.NXMatrix

      matrix = theSession.Parts.Work.NXMatrices.Create(orientation)

            theSession.Parts.Work.Curves.CreateArc(center, matrix, radius, startAngle, endAngle)

        End If
End Sub

Function SelectPoint(ByRef center As Point3d) As Selection.Response

        Dim point_tag As NXOpen.Tag
        Dim base_pt(3) As Double
        Dim response As Integer
        Dim cue As String = "Select a point"

        Dim nxopenSession As NXOpen.UF.UFSession = NXOpen.UF.UFSession.GetUFSession()
        nxopenSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)

        Try
            nxopenSession.Ui.PointConstruct(cue, nxopenSession.Ui.PointBaseMethod.PointCursorPos, point_tag, base_pt, response)
        Finally
            nxopenSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
        End Try

        center.X = base_pt(0)
        center.Y = base_pt(1)
        center.Z = 0.0

        Return response
    End Function
End Module

----------------------------------------------------------------------


Danke für eure hilfe in voraus

gruß l.pesch

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

SMario
Mitglied
Konstrukteur/Designer


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

Beiträge: 114
Registriert: 31.03.2005

FSC Celsius Workstation
CPU: Pentium 4 3.20GHz
Speicher: 2.00GB RAM
Grafik: Quadro FX 1400
Monitor: FSC P20-2
OS: Windows XP SP2
UG: NX4.0.2.2

erstellt am: 08. Nov. 2005 10: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 l.pesch 10 Unities + Antwort hilfreich

Hallo l.pesch,

Zitat:
Original erstellt von l.pesch:
Mit deinem Code kann ich auch Punkte und Endpunkte auswählen[...]

Hmmm, komisch. Mit meinem schon oben geposteten Code kann ich ebenfalls alle angeboten Möglichkeiten einen Punkt abzugreifen auch benutzen. Ich habe mit dem point3d noch nichts gemacht, dazu bin (noch) zu wenig Programmierer um das mit den Winkelfunktionen hinzubekommen  .

Zitat:
[...] aber bei mir funktioniert das irgendwie nicht, kannst du mir vielleicht sagen wo der Fehler liegen könnte?

Du hast scheinbar beim Kopieren vergessen die Größe für den Array des Mittelpunktes vom Pointconstructors anzugeben.

Mach einfach aus "Dim base_pt() As Double" folgendes: "Dim base_pt(2) As Double"
Zumindest funktioniert es jetzt bei mir sehr gut.


Ciao
Mario

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



Entwickler Fluidtechnik (m/w/d)

Mehr als 2700 Mitarbeiter entwickeln, fertigen und vermarkten unsere intelligenten Aktuatoren, die dazu beitragen, die weltweite Elektrifizierung und nachhaltige Energieversorgung voranzutreiben. Wir helfen dabei, die Herausforderungen von morgen zu meistern und die Sicherheit, den Komfort und die Mobilität der Menschen zu verbessern.

Sind Sie bereit, Ihre Visionen und Ideen einzubringen, ...

Anzeige ansehenEntwicklung
l.pesch
Mitglied



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

Beiträge: 312
Registriert: 22.01.2004

erstellt am: 10. Nov. 2005 08:56    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 SMario,
hab da wieder mal ein Problem mit diesem code.
Habe ein form1 mit einem button1 mit dem rufe ich form2 auf
-------------------------------------------
        Dim F2 As New Form2
        Me.Hide()
        F2.Show()
-------------------------------------------

Auf der form2 befindet sich ein button2 mit dem ich dem ich den
Kreis erstellen kann

------------------------------------------
Private Sub kreis_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles kreis.Click

Dim theSession As Session = Session.GetSession()

        Dim center As Point3d
        If 2 = SelectPoint(center) Then
            Dim radius As Double = 3.0
            Dim startAngle As Double = 0.0
            Dim endAngle As Double = 360.0
            Dim pi As Double = 3.1415926535897931
            Dim t As Integer = 180
            Dim t1 As Double = startAngle * pi
            Dim t2 As Double = endAngle * pi
            startAngle = t1 / t
            endAngle = t2 / t

            Dim orientation As Matrix3x3

            orientation.Xx = 1.0
            orientation.Xy = 0.0
            orientation.Xz = 0.0
            orientation.Yx = 0.0
            orientation.Yy = 1.0
            orientation.Yz = 0.0
            orientation.Zx = 0.0
            orientation.Zy = 0.0
            orientation.Zz = 1.0

      Dim matrix As NXOpen.NXMatrix
      matrix = theSession.Parts.Work.NXMatrices.Create(orientation)

            theSession.Parts.Work.Curves.CreateArc(center, matrix, radius, startAngle, endAngle)

        End If
End Sub

Function SelectPoint(ByRef center As Point3d) As Selection.Response

        Dim point_tag As NXOpen.Tag
        Dim base_pt(2) As Double
        Dim response As Integer
        Dim cue As String = "Select a point"

        Dim nxopenSession As NXOpen.UF.UFSession = NXOpen.UF.UFSession.GetUFSession()
        nxopenSession.Ui.LockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)

        Try
            nxopenSession.Ui.PointConstruct(cue, nxopenSession.Ui.PointBaseMethod.PointCursorPos, point_tag, base_pt, response)
        Finally
            nxopenSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
        End Try

        center.X = base_pt(0)
        center.Y = base_pt(1)
        center.Z = 0.0

        Return response
    End Function

------------------------------------------

Das ist also der gleiche code wie für module, denn möchte ich nur als
.exe ausführen.
Der führt das zwar aus ich bekomme den kreis angezeigt, nur hinterher
kommt eine messagebox von unigraphics "Vorgang aktiv" "Mit Stopp beenden Sie diese Operation".
Jetzt beende ich meine .exe datei und möchte weiter in Unigraphics arbeiten, geht aber leider nicht die ganzen funktionen sind grau und wenn ich jetzt unigraphics beenden will, bekomme ich eine info "Modelliererfehler: STAMOD muß erster Aufruf an KI sein".
Kannst du damit was anfangen? Es klappt irgendwie vor und hinten nicht, ich bekomme immer diese Fehlermeldung.

Wenn jemand anders mir auch helfen kann bin für jede hilfe dankbar.

Danke in voraus für eure hilfe

Gruß l.pesch

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)2023 CAD.de | Impressum | Datenschutz