Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Selektion Achsensystemen Catia V5 R18 mit catvba

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 CATIA & Co.
  
Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
Autor Thema:  Selektion Achsensystemen Catia V5 R18 mit catvba (2854 mal gelesen)
Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 26. Sep. 2013 08: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

Hallo Zusammen,
ich habe eine Frage zu den Achsensystemen in Catia V5 R18.
Es gibt 4 Arten (Typen) von Achsensystemen:

a) Standard
b) Achsendrehung
c) Eulersche Winkel
d) Explizit

Sie werden in meinem Skript mit

Für (a) oAxissystem.type = 0
Für (b) oAxissystem.type = 1
Für (c) oAxissystem.type = 2
Für (d) oAxissystem.type = 3

In meinem Skript gibt es viele Operationen, die in catia konstruiert werden.
Am Anfang von dem Skript sollen die Anwender ein Achsensystem selektieren (1.Selektion), dann sollen sie eine
Kante selektieren, um später ein Kreismuster um diese kante zu erzeugen.

Ich möchte, wenn die Anwender die Z-Achse selektiert haben, muss eine Fehlermeldung geben

MsgBox "Das Kreismuster kann nicht um die Z-Achse erzeugt werden. bitte nur die X- oder Y-Achse selektieren. Das Makro wird beendet"

Exit Sub

Wie kann ich in meinem Skript festlegen, welche Achse die Anwender selektiert haben?

Das sollte für alle Achsensystemen gelten.

Code:

Option Explicit
Public oAxissystem As Object
Public Const MacroID = "3D-DATA 1.0"

Sub CATMain()

Dim oSel
Dim sFilter(0)
Dim oSelection

' Selektion einer Achse
    Set oSel = CATIA.ActiveDocument.Selection
    sFilter(0) = "AxisSystem"
    oSelection = oSel.SelectElement2(sFilter, "Bitte selektiere ein Achsensystem", True)
    If oSel.Count2 = 0 Then
        MsgBox "kein Achsensystem wurde selektiert" & Chr(13) & "Das makro wird beendet!", vbOKOnly + vbCritical, MacroID
        Exit Sub
    End If
   
    If oSelection = "Normal" Then
        Set oAxissystem = oSel.Item2(1).Value
       
    End If   
   
    oSel.Clear
   
' Selektion einer Kante
    sFilter(0) = "TriDimFeatEdge"
   
    oSelection = oSel.SelectElement2(sFilter, "Bitte selektiere eine Kante, um das Kreismuster zu erzeugen", True)
    If oSel.Count2 = 0 Then
        MsgBox "keine Kante wurde selektiert" & Chr(13) & "Das makro wird beendet!", vbOKOnly + vbCritical, MacroID
        Exit Sub
    End If

        Set Achse = oSel.Item2(1).Value
    oSel.Clear
   
' Hier sollte das Ausschliessen von Z-Achse sein

'MsgBox "Das Kreismuster kann nicht um die Z-Achse erzeugt werden. bitte nur die X- oder Y-Achse selektieren. Das Makro wird beendet"
'Exit Sub

End Sub

Vielen Dank im Voraus

mit freundlichen Grüßen

Estafanos

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

LuNo
Mitglied
Konstrukteur


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

Beiträge: 16
Registriert: 04.12.2007

CATIA V5R19 SP9 HF78

erstellt am: 26. Sep. 2013 09:33    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 Estafanos 10 Unities + Antwort hilfreich

Eine Möglichkeit wäre

oAchse.Name ergibt den BRep der Achse

z.B.

Code:
"Selection_REdge:(Edge:(Face:(Brp:(AxisSystem.58;3);None:();Cf11:());Face:(Brp:(AxisSystem.58;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());AxisSystem.58;Z0;G3491 )"


   kurz zu BRep
   die Achse ergibt sich aus der Schnittmenge von zwei Planes

Code:

    Face:(Brp:(AxisSystem.58;3);
    Face:(Brp:(AxisSystem.58;2);


    Plane wird bescheiben durch: Face : (Brp : (achsenname;planenummer)

    wenn PlaneNr. 2 und 3 geschnitten werde ergibt sich die z-Achse

Du kannst den String oAchse.Name nun aufsplitten und testen ob Plane2 und Plane3 verwendet werden

Viel Spaß dabei
Gruß Lutz

[Diese Nachricht wurde von LuNo am 26. Sep. 2013 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Sep. 2013 10:49    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 Estafanos 10 Unities + Antwort hilfreich

Servus
Du könntest die Richtung der Z-Achse (Methode GetZAxis des Achsensystems) mit der Richtung der Linie/Kante vergleichen (zB GetDirection des Measureable-Objekts) und dann entsprechend eine Msgbox ausgeben

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 26. Sep. 2013 14: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

Hallo Bernd,
vielen vielen Dank für die sehr gute Idee. Ich habe es umgesetzt und es hat sehr gut funktioniert.

@ Lutz: Herzlichen Dank für den Vorschlag. leider steht bei uns den nächsten Realse von Catia in Diskustion. Bei den neuen Realse vielleicht heissen die Achsen anderes.


Super herzlichen Dank für euch.

Gruß Estafanos

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Sep. 2013 14:53    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 Estafanos 10 Unities + Antwort hilfreich

Servus Estafanos
ggf musst du beim Vergleich der Richtungen noch den Fall beachten wenn diese genau entgegengesetzt sind (also zB die Beträge der einzelnen Vektorkomponenten vergleichen)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Estafanos
Mitglied



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

Beiträge: 27
Registriert: 17.07.2012

Catia V5 R22, Windows 7

erstellt am: 26. Sep. 2013 15: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 Bernd,
das habe ich auch berücksichtigt. Die einzelen Richtungen in einem Array, dann die einzelen Werte als Variable reingeschieben.
Ich habe eine Linie mit der gleichen Richtung wie meine Achse (die selektiert ist) erzeugt und die beiden Richtungen miteinander verglichen.

Hier ist meine code nach der selektion:
------------------------------------------------------------------------------------
    oAxissystem.GetOrigin aCoord2
    xa = aCoord2(0)
    ya = aCoord2(1)
    za = aCoord2(2)

'Add of HybridBody in the part
    Set oHB = oPart.HybridBodies.Add
    oHB.Name = "Geometrical Set." & strFileName
    Set oHSF = oPart.HybridShapeFactory ' creation of hybrid shapes in the part
    Set oPT = oHSF.AddNewPointCoord(xa, ya, za)
    oHB.AppendHybridShape oPT
    Set refoPT = oPart.CreateReferenceFromObject(oPT)

'Drehachse fuer Kreismuster
    Set hybridShapeDirection2 = oHSF.AddNewDirection(Achse)
    Set hybridShapeLinePtDir1 = oHSF.AddNewLinePtDir(refoPT, hybridShapeDirection2, 0, 20, True)
 
    oHB.AppendHybridShape hybridShapeLinePtDir1

    oAxissystem.GetXAxis XAxisCoord
    oAxissystem.GetYAxis YAxisCoord
    oAxissystem.GetZAxis ZAxisCoord
    directionX = hybridShapeLinePtDir1.dir.GetXVal
    directionY = hybridShapeLinePtDir1.dir.GetYVal
    directionZ = hybridShapeLinePtDir1.dir.GetZVal

'Ausschliessen von Verzahnung um Z-Achse
    If directionZ = ZAxisCoord(2) Or directionZ = (-1 * ZAxisCoord(2)) Then
        MsgBox "Z Axis is wrong" & Chr(13) & "Macro will be finshed!", vbOKOnly + vbCritical, MacroID
        Exit Sub
    End If
----------------------------------------------------------------------------------------
Ich habe das Code hier geladen, damit die Skripter eine andere Idee im Hinterkopf haben.

Vielen Dank.
Gruß Estafanos

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 26. Sep. 2013 16: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 Estafanos 10 Unities + Antwort hilfreich

Das ist, glaube ich, nicht ganz richtig.

Für mich sieht es so aus, als würdest Du nur den Z-Wert von zwei Vektoren miteinander vergleichen, Du müsstest aber den kompletten Vektor miteinander vergleichen.

Also je die X,Y,Z Werte der beiden Vektoren, wobei es recht unwahrscheinlich ist, dass beimselben Achsensystem 2 Achsen denselben Z-Wert haben.

Mich würde aber prinziell mal interessieren wozu der Anwender überhaupt noch die Achse selektieren muss? Du hast doch bereits alle 3 Achsen des Achsensystems.

Edit: Den Vektorvergleich würde ich eine separate Funktion auslagern, welcher man 2 Arrays übergibt.

------------------
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

[Diese Nachricht wurde von HoBLila am 26. Sep. 2013 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)2025 CAD.de | Impressum | Datenschutz