Autor
|
Thema: Grundlegende Fragen zu Catia CAA (6774 mal gelesen)
|
SvenJack Mitglied
Beiträge: 7 Registriert: 10.09.2010
|
erstellt am: 10. Sep. 2010 01:20 <-- editieren / zitieren --> Unities abgeben:
moin all Ich habe einige grundlegende Fragen zu der Catia API. Bislang habe ich mit der NX Open API für UG NX ein paar Erfahrungen gesammelt. Nun habe ich mich um eine Arbeit über Catia beworben. Ist das Catia CAA Bestandteil der Studentenversion? Gibt es gesondert eine? Wie gut erhält man Tutorials und Einleitungen dazu? Wie gut ist die Dokumentation? Bei NX Open war das alles nicht so der Hit. Ich habe mit der CAA keine riesigen Dinge vor wie Autos zu konstruieren. Vor allem geht es um Bauteile, Baumstrukturen etc auslesen, einfache Baugruppen aus Grundkörpern wie Würfel etc anzulegen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 10. Sep. 2010 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
|
SvenJack Mitglied
Beiträge: 7 Registriert: 10.09.2010
|
erstellt am: 10. Sep. 2010 10:52 <-- editieren / zitieren --> Unities abgeben:
Danke für die Infos. Im Dassault System Forum funktioniert zur Zeit die Registrierung nicht. Ich muss aus CATIA nur Daten auslesen, keine Veränderungen durchführen: Geometrie, Position, Hierarchie, Ausrichtung etc.. Wahrscheinlich wird das durch ein externes Programm realisiert werden müssen, weil die Daten weitergegeben werden. Wie gut ist die Dokumentation für die ganzen Makrogeschichten? Gibt ja glaub ich sogar ein Dt. Buch dazu. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Sep. 2010 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
|
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 10. Sep. 2010 12:40 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
|
SvenJack Mitglied
Beiträge: 7 Registriert: 10.09.2010
|
erstellt am: 12. Sep. 2010 21:37 <-- editieren / zitieren --> Unities abgeben:
Ich hol etwas weiter aus. Wäre wichtig zu wissen ob es mit dem einfacheren VBA/Makros funktioniert oder ob ich auf CAA angewissen bin. Das wäre der zeitliche Overkill. Ackere gerade die V5Automation durch. Aus einem bestehende Baugruppe den Strukturbaum herauslesen und extern weiterverarbeiten, z.b. in ein XML schreiben. Strukturbaum und die Hierarchie. Welche Geoemtrien, Position etc... Besonderheit das ganze sollte etwas dynamisch sein also nicht an genau eine bestimmte Baugruppe gebunden sein. Als Bonusaufgabe kommen dann vielleicht noch Kinematiksachen hinzu, wie Gelenke auslesen oder so. Es bezieht sich nur auf Daten auslesen und weitergeben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 13. Sep. 2010 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
Hallo , also die Namen und den Datentyp jedes nativen Features in deinem Baum kannst du IMHO auch auslesen (bearbeiten ist eine andere Sache aber das willst du ja nicht). Dazu brauchst du eine rekursive Funktion (solltest dich also auch in der VBA Programmierung zurechtfinden). Das Ganze ist durch die rekursive Funktion auf jeden x beliebigen Strukturbaum anwendbar. Da du rekursive deinen Bau durchläufst, kannst du die Hierarchie natürlich auch ohne Probleme abbilden. Die bekommst über die Parents raus in welchen Body bzw. GeoSet welche Featues eingebaut wurden, welches Feature welchen Sketch hat, etc. Die Position (im Raum) kannst du auch über VBA ermitteln. Die Position im Strukturbaum ist ja auch die Hierarchie und kann somit ohne Probleme dargestellt werden. An die Kinematik kommst du auch mitteln VBA. Die Gelenke und Verbindungen können mitsamt Typ und Wert ermittelt und weitergegeben werden. Die Darstellung und Weiterverarbeitung ist reines VBA. Das sollte eigentlich kein Problem darstellen. Die Frage ist folgende: Musst du das machen oder KANNST du das machen? Wenn du es musst würde ich es auf jeden Fall erst einmal mit VBA versuchen. Wenn du dann nicht weiterkommst hättest du anhand deinen expliziten Problemstellungen (welche dann mitteln VBA nicht zu lösen wären) eine Diskussionsgrundlage zur Anschaffung einer CAA Lizenz. Diese ist nicht billig und eine Schulung würde ich auch noch dazubuchen. Das wird kein Chef einfach mal aufgrund einer Vermutung kaufen und einmal nutzen. Hier ist einfach der betriebswirtschaftliche Aspekt zu sehen Anbei mal ein ganz kleines Beispiel Script zur Kinematik. Hier werden ein paar Werte zur Verdeutlichung ausgelesen. ACHTUNG bitte nur an kleinen Kinemtikprodukten ausprobieren. Sonst hängst du ewig in einer Schleife Code:
Sub CATMain() Dim intDocObj As ProductDocument Dim intProdObj As Product Dim intKinWBObj As Workbench Dim intMechanismsObj As Mechanisms Dim intMsgBoxStr As String Dim intMechObj As Mechanism Dim intJointObj As Joint
Set intDocObj = CATIA.ActiveDocument Set intProdObj = intDocObj.Product Set intKinWBObj = intDocObj.GetWorkbench("KinematicsWorkbench") Set intMechanismsObj = intKinWBObj.Mechanisms For Each intMechObj In intMechanismsObj intMsgBoxStr = "Informationen zum Mechnanismus " & intMechObj.Name + Chr(10) + Chr(10) If intMechObj.FixedPart.Name <> "" Then intMsgBoxStr = intMsgBoxStr + "FixedPart Name:" + vbTab + intMechObj.FixedPart.Name + Chr(10) Else intMsgBoxStr = intMsgBoxStr + "FixedPart Name:" + vbTab + "No Fixed Part" + Chr(10) End If intMsgBoxStr = intMsgBoxStr + "Anzahl Joints:" + vbTab + CStr(intMechObj.Joints.Count) + Chr(10) intMsgBoxStr = intMsgBoxStr + "Anzahl Commands:" + vbTab + CStr(intMechObj.Commands.Count) + Chr(10) + Chr(10) If intMechObj.Joints.Count > 0 Then Set intJointObj = intMechObj.Joints.Item(1) intMsgBoxStr = intMsgBoxStr + "Joint Name:" + vbTab + intJointObj.Name + Chr(10) intMsgBoxStr = intMsgBoxStr + "Joint Type:" + vbTab + intJointObj.Type + Chr(10) End If MsgBox intMsgBoxStr, vbInformation, "Mechanismus Info" Next End Sub
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SvenJack Mitglied
Beiträge: 7 Registriert: 10.09.2010
|
erstellt am: 13. Sep. 2010 09:43 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die ausführliche Hilfe. Ich habe sowas ähnliches schon mal in Java programmiert. Rekursive Durchläufe ob der aktuelle Knoten Bauteile enthält, etc. Kinderknoten aufrufen etc... Habe jetzt entdeckt das ja Catia in ein XML Format exportieren kann: 3DXML. Vielleicht wäre hier auch eine Möglichkeit der externen weiterverarbeitung. Werde da heute mal die Dokumentation durchsuchen.
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: 14. Sep. 2010 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
Zum CAA: Sein tut es die Programmiersprache C++ mit zusätzlichen von Dassault eingebauten Hindernissen und einem Haufen Zusatzobjekte, die jedoch veraltet sind, aber benutzt werden müssen. Somit sehe ich es durchaus als eigenständige Programmiersprache an, da sich fast nur die Syntax gleicht. Gefallen tut die bessere String-Verarbeitung. CATIA V5 ist selbst in der Sprache (CAA) verfasst, daher hat man eben auch ähnliche Möglichkeiten wie Dassault, sofern man raten kann wie's geht. Vorteil der Sprache ist, dass der selbe Code sowohl unter Windows, als auch unter Unix funktionieren kann. Benutzt wird die Sprache ganz normal über das Visual Studio von Microsoft, dieses benötigt den Aufsatz RADE, der glaube ich 40 bis 50k€ an Lizenz kostet. Das RADE ist ein Plug-In und hängt Zusatzfunktionen in das Visual Studio (einige davon sind sogar wirklich gut), die dann ausschließlich zu verwenden sind. Problem hierbei ist vor allem, dass das Visual Studio die CATIA-Objekte nicht kennt und es daher weder Syntax-Highlighting gibt noch eine Autovervollständigung oder Fehlerausgaben. Abhilfe würde hier das Tool Visual Assist X schaffen, welches das Visual Studio auf den Komfort eines Eclipse hebt und daher etwa 30% Arbeitszeit spart, aber das Tool kostet 100€/Jahr. Theoretisch, und manchmal mache ich das auch, kann man daher CAA auch mit dem Notepad++ schreiben, das liefert mehr Unterstützung, beim Compilieren führt jedoch kein Weg am VS vorbei. Achja: Der Programmieraufwand eines CAA's zu einem CATVBA mit selben Funktionsumfang ist, nach meinem Befinden etwa 10mal höher + 2 Wochen um den Workspace aufzubauen und der DialogBuilder ist ein schlechter Witz. Studentenlizenz gibt es natürlich nicht, wozu auch? - Die Applikationen die entwickelt werden funzen schließlich überall. Als Faustregel sagt man um CAA zu lernen: Dassault Workshop (2Wochen) besuchen, sich druckbetanken lassen, dann 1Jahr üben und dann kann's los gehen. Die Meinung teile ich jedoch nicht so ganz. Es ist nicht einfach, aber ich hab's auch mit Learning by Doing gemacht und es geht! Allerdings hat mir geholfen, dass ich CATVBA und daher CATIA intern schon relativ gut kenne. Die Doku kann man getrost vergessen und die funktioniert auch nicht mehr, wenn du Seperat mit QuickTest arbeitest. Mir selbst kommt es jedoch so vor, als hätte 3DS kein Interesse daran, dass das jemand kapiert, damit die ihre eigenen Tools verkaufen können. Für mehr Infos stehe ich gern zur Verfügung. Für Deine Ansprüche wird vorraussichtlich CATVBA reichen, allerdings mit Performance-Einschränkungen, die Du aber mit Tipps aus diesem Forum sicher optimieren kannst. Als Einstieg empfehle ich immer zu erst das Buch vom Zhieten und dann erst, wenn man's schon etwas kann, als Erweiterung, das Kochbuch vom Herrn Hansen. ------------------ 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 |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 14. Sep. 2010 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
|
derKandidat Mitglied Ingenieur
Beiträge: 2 Registriert: 06.09.2010
|
erstellt am: 15. Sep. 2010 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
Hallo, Ich hätte da mal ein Frage bezüglich CAA. Ich habe im Moment das Problem das ich in CATIA Kinematics Sachen auslesen möchte, die es standardmäßig nicht gibt. D.h. es gibt keine Attribute bzw. Methoden in VBS um diese Dinge auszulesen. Ist es mit CAA möglich die CATIA Objekte um Attribute/ Methoden selbst zu erweitern? 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: 15. Sep. 2010 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
Ja, man kann über Vererbung jedes Objekt erweitern, muss das neue Objekt aber dem CATIA bekannt machen. Dies bedeutet, dass der Zielrechner auch das CAA und den dazugehörigen CATfct benötigt. Bei der Erweiterung treibe ich es sogar so weit, dass ich mir zu CATIA-Objekten Schnittstellen auf Eigenschaften schreibe, auf die man garkein Zugriff haben soll (als Private deklariert und nicht dokumentiert). ------------------ 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 |
MSCHD Mitglied Maschinenbauingenieur
Beiträge: 1 Registriert: 21.12.2010
|
erstellt am: 21. Dez. 2010 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
Hallo, ich stöbere jetzt schon seit Stunden durch das Internet und Ihr Beitrag von 2 Jahren passt irgendwie am besten zu mienem Problem. Ich würde gerne mit einem VBA Programm Kinematiken erstellen. Als Grundlage sollen Tags dienen, die schon an den richtigen Positionen liegen. Álso über Axis-based Joint. Ich vermute jedoch dass ich die Tags nicht als Referenz deklarieren kann und so den Joint auch nicht definieren kann. Die Tags lasse ich bisher noch von Hand auswählen. Allerdings wäre ein Automatismus gut, die konstruktive Ausführung ist wie folgt gegeben. Baugruppe0 Baugruppe1.1 (Festanteil) --> Frame of Interest --> Tag "tag1" --> Tag "tag2" --> cgr Baugruppe1.2 --> Frame of Interest --> Tag "tag1" --> cgr Baugruppe1.3 --> Frame of Interest --> Tag "tag2" --> cgr mit den Tags, die jeweils den gleichen Namen haben sollen Joints erzeugt werden. Mein Ansatz war dieser:
Sub CATMain() Dim intDocObj As ProductDocument Dim intProdObj As Product Dim intKinWBObj As Workbench Dim intMechanismsObj As Mechanisms Dim intMsgBoxStr As String Dim intMechObj 'As Mechanism Dim intJointsObj 'As Joints Dim intJointObj 'As Joint Dim oRefTag(1) Set intDocObj = CATIA.ActiveDocument Set intProdObj = intDocObj.Product Set intKinWBObj = intDocObj.GetWorkbench("KinematicsWorkbench") Dim Tag2Sel(0) Tag2Sel(0) = "Tag" ' Selection of reference tag '-------------------------------- Set oActiveDoc = CATIA.ActiveDocument Set oSelection = oActiveDoc.Selection Status = oSelection.SelectElement2(Tag2Sel, "Select start tag", True) If (Status = "Cancel") Then Exit Sub Set ParentObject = oSelection.FindObject("CATIAProduct") Set oRefTag0 = ParentObject.GetTechnologicalObject("Tag") oSelection.Clear Status = oSelection.SelectElement2(Tag2Sel, "Select start tag", True) If (Status = "Cancel") Then Exit Sub Set oRefTag1 = oSelection.Item(1) Set ParentObject = oSelection.FindObject("CATIAProduct") Set oRefTag1 = ParentObject.GetTechnologicalObject("Tag") 'Dim oReferenceLine0 As Reference 'Set oReferenceLine0 = oActiveDoc.CreateReferenceFromObject(oRefTag0) 'Dim oReferenceLine1 As Reference 'Set oReferenceLine1 = oActiveDoc.CreateReferenceFromObject(oRefTag1) Set oRefTag(0) = oRefTag0 Set oRefTag(1) = oRefTag1
Set intMechanismsObj = intKinWBObj.Mechanisms Set intMechObj = intMechanismsObj.Item(1) Set Testrrr = intMechObj.AddJoint("CATKinRevoluteJoint", oRefTag) End Sub Wäre echt super wenn Sie mir weiterhelfen könnten.
Vielen Dank!
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: 12. Jan. 2011 14:48 <-- editieren / zitieren --> Unities abgeben: Nur für SvenJack
Können wir uns vielleicht zunächst ersteinmal darüber verständigen, was ein Tag ist? Ich kenne es leider nur in einem völlig anderem Kontext. ------------------ 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|