| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation: Schnelligkeit und Präzision in dem neuen JT-Importer, eine Pressemitteilung
|
Autor
|
Thema: Auslesen eines Achsensystems (2468 mal gelesen)
|
JonasXY Mitglied

 Beiträge: 10 Registriert: 19.04.2011
|
erstellt am: 18. Jan. 2012 14:54 <-- editieren / zitieren --> Unities abgeben:         
Servus Zusammen  , ich habe ein Problem mit dem Auslesen eines Achsensystems. Trotz der Suchfunktion und einiger Beiträge mit ähnlichen Problemen, konnte ich für mein Problem leider noch keine Lösung finden. Mein Problem besteht darin, dass ich von einem Achsensystem (nicht am Ursprung), die X-Achse bzw. YZ-Plane als Richtung für eine Linie brauch. Allerdings habe ich keine Ahnung wie mich auf die Elemente eines Achsensystems beziehe. Bin für jeden Tipp oder Link zu diesem Thema dankbar. Mfg Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 18. Jan. 2012 17:47 <-- editieren / zitieren --> Unities abgeben:          Nur für JonasXY
Servus Du kannst über die Methode "XAxisDirection" direkt die Referenz der X-Richtung deines Achsensystems auslesen bzw. setzen: Code:
Dim reference2 As Reference Set reference2 = axisSystem1.XAxisDirection Dim hybridShapeDirection1 As HybridShapeDirection Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference2) Dim hybridShapeLinePtDir1 As HybridShapeLinePtDir Set hybridShapeLinePtDir1 = hybridShapeFactory1.AddNewLinePtDir(reference1, hybridShapeDirection1, 0.000000, 20.000000, False)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JonasXY Mitglied

 Beiträge: 10 Registriert: 19.04.2011
|
erstellt am: 19. Jan. 2012 08:36 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen, Danke erstmal für die schnelle Antwort. Da es mir der Editor vorgeschlagen hat, hab ich das bereits vorher schon ausprobiert. Ich habs eben nochmal probiert und dann kam bei Zeile 2 Dim reference2 As Reference Set reference2 = axisSystem1.XAxisDirection Dim hybridShapeDirection1 As HybridShapeDirection Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference2) folgende Fehlermeldung: Run-Time error '5': Invalid procedure call or argument Ich kann leider mit der Fehlermeldung nichts anfangen!  Eine weitere Frage wäre, ob es eine ähnliche Funktion für die Ebenen eines Achsensystems gibt? Denn hier schlägt mir der VBA-Editor nichts vor. Mfg Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Jan. 2012 10:06 <-- editieren / zitieren --> Unities abgeben:          Nur für JonasXY
Servus Ich gehe davon aus dass du deine Achsensystem der Objekt "Axissystem.1" zugewiesen hast. Schau mal in der V5Automation nach, ob diese Methode nur bei bestimmten Achsensystemen funktioniert. IMHO  kommst du an die Ebenen eines Achsensystems nur über BRep-Zugriffe (ich persönlich würde die Finger davon lassen, ist eher komplex) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JonasXY Mitglied

 Beiträge: 10 Registriert: 19.04.2011
|
erstellt am: 19. Jan. 2012 13:45 <-- editieren / zitieren --> Unities abgeben:         
Servus Bernd, was meinst du mit "bestimmten Achsensystemen"? Mein Code sieht so aus: *Achsensystem "AS_Ursprung" wurde ein paar Schritte vorher erzeugt und passt auch soweit!* Dim X_Ausrichtung As Reference Set X_Ausrichtung = AS_Ursprung.XAxisDirection Dürfte eigentlich soweit auch mit deinem Tipp übereinstimmen. Konnte leider nix weiter rausfinden. Das Thema mit den Planes ist somit vom Tisch. Da kann ich mir auch anders helfen
Mfg Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JonasXY Mitglied

 Beiträge: 10 Registriert: 19.04.2011
|
erstellt am: 23. Jan. 2012 12:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen  , stehe leider immer noch bei diesem Problem: Dim reference1 As Reference Set reference1 = AxisSystem1.XAxisDirection Fehlermeldung: "invalid procedure call or argument" Hat niemand einen Tipp?  Mfg Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JonasXY Mitglied

 Beiträge: 10 Registriert: 19.04.2011
|
erstellt am: 25. Jan. 2012 12:43 <-- editieren / zitieren --> Unities abgeben:         
Servus, das Problem liegt darin, dass das Achsensystem mit Geometrieelementen (z. B. einer Linie) erzeugt werden muss. Gibt man beim Erstellen des Achsensystems einfach nur den Ursprung ohne Richtungsangaben an, kann man diese auch nicht abrufen. Dasselbe gilt natürlich bei toten Achsensystemen. In diesem Fall kommt man nur über eine B-Rep-Referenz oder evtl. sonstigen Umwegen an die Achsen. Mfg Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
   
 Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 25. Jan. 2012 13:06 <-- editieren / zitieren --> Unities abgeben:          Nur für JonasXY
Man könnte die Problematik noch rein mathematisch lösen, so würde ich es z.B. machen. Hier mal meine Methode, die die Werte eines Achsensystems zurück gibt: Code:
Private Sub getAxisFormSystem(ByRef i_axisSysWork As MECMOD.AxisSystem _ , ByRef o_dAxisX() As Double _ , ByRef o_dAxisY() As Double _ , ByRef o_dAxisZ() As Double _ , ByRef o_dAxisOrign() As Double) Dim arrBuffer(2) As Variant Dim iIterator As Integer Dim objBuffer As Object Set objBuffer = i_axisSysWork objBuffer.GetXAxis arrBuffer For iIterator = 0 To 2 o_dAxisX(iIterator + 1) = arrBuffer(iIterator) Next iIterator objBuffer.GetYAxis arrBuffer For iIterator = 0 To 2 o_dAxisY(iIterator + 1) = arrBuffer(iIterator) Next iIterator objBuffer.GetZAxis arrBuffer For iIterator = 0 To 2 o_dAxisZ(iIterator + 1) = arrBuffer(iIterator) Next iIterator objBuffer.GetOrigin arrBuffer For iIterator = 0 To 2 o_dAxisOrign(iIterator + 1) = arrBuffer(iIterator) Next iIterator End Sub
Dann haste alle wichtigen Koordinaten, der Rest ist nur errechnen, wo Deine Linie hin soll, Punkte erzeugen und Linie zwischen die Punkte setzen. Um das Ganze dann assoziativ zu haben, musste noch etwas grübeln, dafür ist die Aufgabenstellung zu ungenau, aber da kann man auch einiges Machen, wie das Achsensystem aktiv setzen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |