Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Eigenpunktkurven mit VB (engl KeyPointCurve)

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 SolidEdge
Autor Thema:  Eigenpunktkurven mit VB (engl KeyPointCurve) (404 mal gelesen)
Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 08. Jul. 2004 12:12    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,

ich möchte einen optischen Strahlengang mittels Eigenpunktkurven (Befehl Eigenpunktkurve auf der Symbolleiste Flächenmodellierung) in einem Part per Visual Basic erzeugen. Der folgende Code (VB.NET) soll von einem Startpunkt (X/Y/Z) zu einem Endpunkt (X/Y/Z) eine Eigenpunktkurve generieren. Ab V15 sollte das ja möglich sein. Von Hand geht das auch problemlos. Ich erhalte aber bei dem Befehl zum generieren der KeyPointCurve immer einen Typkonflikt. Wie muss das Array (edgeset) aufgebaut sein, wenn ich nur die Koordinaten von einem Startpunkt und einem Endpunkt setzen will?

Die Dokumentation der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) braucht dringend eine Verbesserung, auch im englischen Forum wird dies immer wieder bemängelt!

Dieses Problem wurde von meinem Reseller an UGS weitergeleitet.

Danke für eure Mithilfe!

Matthias

Code (VB.NET):

  Dim objApp As SolidEdgeFramework.Application

        Dim objDoc As SolidEdgePart.PartDocument

        Dim objModels As SolidEdgePart.Models

        Dim objModel As SolidEdgePart.Model

        Dim objBody As SolidEdgeGeometry.Body

        Dim objedges As SolidEdgeGeometry.Edges

        Dim objedgeArc As SolidEdgeGeometry.Edge

        Dim objedgeCordinate As SolidEdgeGeometry.Edge

        Dim objedgeLine As SolidEdgeGeometry.Edge

        Dim objconstructions As SolidEdgePart.Constructions

        Dim objKeyPointCurves As SolidEdgePart.KeyPointCurves 'Eigenpunktkurven

        Dim objKeyPointCurve As SolidEdgePart.KeyPointCurve

        Dim arrKeyPointtype(1) As Object

        Dim edgeset(1, 2) As Object ' array mit 2 Punkten (x,Y,Z-Koordinate)

'Werte übergeben

        edgeset(0, 0) = 5.0 'CDbl(TextBox2.Text) 'Xstart

        edgeset(0, 1) = 15.5 'CDbl(TextBox3.Text) 'Ystart

        edgeset(0, 2) = 0.0' CDbl(TextBox4.Text) 'Zstart

        edgeset(1, 0) = 36.3 'CDbl(TextBox5.Text) 'Xend

        edgeset(1, 1) = 69.5 'CDbl(TextBox6.Text) 'Yend

        edgeset(1, 2) = 64.3 'CDbl(TextBox7.Text) 'Zend

        arrKeyPointtype(0) = SolidEdgeFramework.KeyPointType.igKeyPointStart

        arrKeyPointtype(1) = SolidEdgeFramework.KeyPointType.igKeyPointStart

        objApp = GetObject(, "SolidEdge.Application")

        objApp.Visible = True

        objDoc = objApp.ActiveDocument

        objconstructions = objDoc.Constructions

        objKeyPointCurves = objconstructions.KeyPointCurves

        Try

            'Object.Add(NumEdges, edgeset, KeypointTypeConstants, StartpointEndType, EndpointEndType) so steht es in der Hilfe!!

            objKeyPointCurve = objKeyPointCurves.Add(2, edgeset, arrKeyPointtype, SolidEdgePart.KeypointEndConditionConstants.seKeypointEndConditionTangent, )

            'da gibt es immer einen Typkonflikt

        Catch ex As Exception

            MessageBox.Show(ex.ToString)

        End Try

        objApp = Nothing

        objDoc = Nothing

        objconstructions = Nothing

        objKeyPointCurves = Nothing

        objKeyPointCurve = Nothing


------------------
SE V15 SP4

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

modeng
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 7061
Registriert: 10.12.2003

erstellt am: 08. Jul. 2004 13:22    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 Matthias Leemann 10 Unities + Antwort hilfreich

... was sagt der ObjectBrowser zu dem edgeset
'Object.Add(NumEdges, edgeset, KeypointTypeConstants, StartpointEndType, EndpointEndType)

die Hilfe kannst meist knicken, Der O-Browser sagt dir schon was es
sein soll (meist jedenfalls) auuserdem erscheinen die Argumente nebst
Typ auch beim Eintippen.

Aber

          objKeyPointCurve = objKeyPointCurves.Add(2, _
          edgeset, _
          arrKeyPointtype, _
          SolidEdgePart.KeypointEndConditionConstants.seKeypointEndConditionTangent, )

da fehlt wohl der letzte Parameter 'EndpointEndType' den nach dem
Wort Tangent kommt nur ein Komma resp. das Komma sitzt falsch denn vor
Tangent ist kein Komma.


Klaus

[Diese Nachricht wurde von modeng am 08. Jul. 2004 editiert.]

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

Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 08. Jul. 2004 14:28    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


Parameterliste.gif


APIdoku.gif

 
Hallo Klaus,

der Objectbrowser sagt nur, dass edgeset ein Array sein muss. Aber wie muss dieses Array aufgebaut sein? In der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Beschreibung steht dazu leider auch nichts.
Der letzte Parameter ist optional, darum habe ich das leer gelassen.

2 Bilder sind angehängt

Gruss Matthias


------------------
SE V15 SP4

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

modeng
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 7061
Registriert: 10.12.2003

erstellt am: 08. Jul. 2004 15: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 Nur für Matthias Leemann 10 Unities + Antwort hilfreich

Moin,

wenn ein Parameter optional ist und er ist der letzte Parameter
sollte das Komma nicht gesetzt sein. Ansonsten koennte VB das
als vbnullstring interpretieren und einen Nullpointer uebergeben.
was hier falsch waere, da ein Object verlangt ist.

Ein meoglicher Fehler waere noch der, welcher mir mal in einem anderen
Zusammenhang untergekommen ist: der Array musste als (1,2) definiert
werden nicht als (1) dann ist er zero-based. Aber da haette ich
hier eigentlich eine andere Meldung als die von VB erwartet.

Da ich weder .NET habe und auch V15 nicht ???

Uebrigens: schau mal den letzten Parameter in der Online Hilfe und
im APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) an: wat den nu Object oder Constant?

Klaus


[Diese Nachricht wurde von modeng am 08. Jul. 2004 editiert.]

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

modeng
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 7061
Registriert: 10.12.2003

erstellt am: 08. Jul. 2004 15: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 Matthias Leemann 10 Unities + Antwort hilfreich

Moin,

also ich hab's nochmal durchgelesen: verlangt wird ein Array von
Edge Objects. Was Du ihm aber anbietest ist ein 2D Array von Objekten,
die auf Doubles zeigen (X/Y/Z) dies und und die Angabe von X/Y/Z
Werten steht aber nicht in der Doku.
Der Array muesste demnach 1D sein und Pointer auf Edge Objekte
(Arc, Line) etc. enthalten.

Klaus

[Diese Nachricht wurde von modeng am 08. Jul. 2004 editiert.]

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

Matthias Leemann
Mitglied
Masch. Ing HTL


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

Beiträge: 393
Registriert: 03.10.2003

Windows 11 Pro
Solid Edge 2022

erstellt am: 12. Jul. 2004 09: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 Zusammen,

Ich habe von UGS einen funktionierenden Code (VB6) erhalten. Funktioniert genau so wie gewünscht.
Das Array edgeset muss 1-dimensional sein:

Dim edgeset(1 to 6) as Double
edgeset(1)=15 'X-Koordinate Startpunkt
edgeset(2)=5 Y-Koordinate Startpunkt
...

und das Array mit den Punkttypen:

Dim keypttype(1 To 2) As KeyPointType
pttype(1) = igSpacePoint
pttype(2) = igSpacePoint
...

ganzer Code für die Erstellung einer Eigenpunktkurve in einem leeren Part-Dokument in VB6 (funktioniert nur mit V15, bei früheren Versionen muss eine Ausprägung vorhanden sein):

Option Explicit

Dim objApp As SolidEdgeFramework.Application
Dim objDoc As SolidEdgePart.PartDocument
Dim edgeset(1 To 2) As Object
Dim pttype(1 To 2) As PointTypeConstants
Dim keypttype(1 To 2) As KeyPointType
Dim startendtype As Long
Dim SpacePts(1 To 6) As Double

Private Sub Form_Load()

Set objApp = GetObject(, "SolidEdge.Application")
objApp.Visible = True
Set objDoc = objApp.ActiveDocument

pttype(1) = igSpacePoint
pttype(2) = igSpacePoint

SpacePts(1) = 0#
SpacePts(2) = 0#
SpacePts(3) = 0#

SpacePts(4) = 0.2
SpacePts(5) = 0.3
SpacePts(6) = 0.4

Call objDoc.Constructions.KeyPointCurves.AddEx(2, pttype, edgeset, keypttype, SpacePts, seKeypointEndConditionNatural, seKeypointEndConditionNatural)

End Sub

Gruss Matthias

------------------
SE V15 SP4

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

modeng
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 7061
Registriert: 10.12.2003

erstellt am: 12. Jul. 2004 09: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 Nur für Matthias Leemann 10 Unities + Antwort hilfreich

... da war ich fast richtig auch das der Array mit 1 beginnen muss.
Ausserdem wird die Methode KeyPointCurves.AddEx() verwandt statt add(). Nur die Doku ist dazu ist absoluter Schrott und misleading ...
Und UGS hat nicht erklaert warum die Methode add() so wie codiert
*nicht* funktioniert und ob sie ueberhaupt 'as advertised' funktioniert

Klaus

[Diese Nachricht wurde von modeng am 12. Jul. 2004 editiert.]

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