Autor
|
Thema: Kinematik (1796 mal gelesen)
|
Manrok Mitglied
Beiträge: 23 Registriert: 13.11.2008
|
erstellt am: 19. Jan. 2009 11:00 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle. Ich habe folgendes Problem: Ich habe ein Product.1 und ich möchte hier einen neuen Mechanismus erzeugen, der Line.1 im Part.1 und Line.1 im Part.2 als Join verbindet. Leider scheitert es bereits an der Erstellung des Mechanismus. Die Hilfe brachte mich leider auch nicht weiter. Dim NewMechanism As Mechanism Set NewMechanism = TheMechanisms.Add() Dieser 2Zeiler erzeugt in Visual Basic leider einen Fehler. Grüße Manrok 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: 19. Jan. 2009 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Servus Du musst den Mechanismus richtig deklarieren. Ich vermute: Code: dim product1 as product set product1 = catia.activedocumet dim mechanismus as mechanism set machanismus = product1.mechanisms.add()
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 19. Jan. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manrok Mitglied
Beiträge: 23 Registriert: 13.11.2008
|
erstellt am: 19. Jan. 2009 12:39 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 19. Jan. 2009 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Servus Wie lautet die Fehlermeldung? Schreib das ganze mal im VB-Editor (Alt + F11) (ein VBA Projekt muss erstellt und als Bibliothek eingebunden werden). Dann werden die verfügbaren Befehle/Deklarationen angezeigt. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manrok Mitglied
Beiträge: 23 Registriert: 13.11.2008
|
erstellt am: 19. Jan. 2009 13:11 <-- editieren / zitieren --> Unities abgeben:
|
mutzi Mitglied Student
Beiträge: 27 Registriert: 24.02.2005
|
erstellt am: 19. Jan. 2009 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
|
Manrok Mitglied
Beiträge: 23 Registriert: 13.11.2008
|
erstellt am: 19. Jan. 2009 13:57 <-- editieren / zitieren --> Unities abgeben:
|
denyo_1 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: 19. Jan. 2009 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Zitat: Original erstellt von mutzi: Du musst den Mechansimus als Object dimensionieren, dann sollte es klappendim mechanismus as Object oder die Zeile auskommentieren Gruß Joachim
Hallo, dann gehts IMHO auch nicht. Schau dir mal folgenden Code an. Erstens musst du beim Produktobjekt (hier oProd) auch das Produkt ansprechen und nicht nur das ActiveDocument. Zweitens musst du dir dann vom Produktobjekt die Mechanisms-Collection holen (mit den GetTechnologicalObject). In die Collection kannst du dann ein neues Objekt einfügen. Das ist dein neuer Mechanismus. Hier der Code: Code:
Sub CATMain() Dim oProd As Product Dim onewMech As Mechanism Set oProd = CATIA.ActiveDocument.Product Set oMech = oProd.GetTechnologicalObject("Mechanisms") Set onewMech = oMech.Add() End Sub
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manrok Mitglied
Beiträge: 23 Registriert: 13.11.2008
|
erstellt am: 19. Jan. 2009 14:07 <-- editieren / zitieren --> Unities abgeben:
|
Manrok Mitglied
Beiträge: 23 Registriert: 13.11.2008
|
erstellt am: 19. Jan. 2009 15:37 <-- editieren / zitieren --> Unities abgeben:
|
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 19. Jan. 2009 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Hallo, in dem Beispiel ist auch Part definiert, und zwar "Item(1)", das erste Part Dim oProductToFix As Product Set oProductToFix = oRootProduct.Products.Item(1) da kannst du je nach dem , dein gewünschten Part eingeben 1 oder 2. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 19. Jan. 2009 19:21 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Hallo Manrok, 1: von welchen Beispielskript redet ihr? Hab nichts in den Beiträgen gelesen. Es wäre schön wenn ihr zu Vollständigkeit noch angebt wo sich das Skript befindet (bzw. welchen Namen es trägt) damit andere Nutzer auch dein Problem nachvollziehen können 2: @Manrok: Lass dich nicht von den Namen der Variablen bzw. Objekte täuschen. Nur weil das Teil "ProductToFix" heißt muss es kein Produkt sein. Innerhalb einer Produktstruktur sind in einem Skript alle Teile eines CATPrudkts zunächst einmal PRODUKTE. 3: ogard1 hat recht. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 19. Jan. 2009 19:48 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
|
stationplayer2 Mitglied Vorentwicklungs-Ingenieur
Beiträge: 31 Registriert: 22.11.2009
|
erstellt am: 23. Nov. 2010 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Hey, ich befasse mich auch gerade mit der Kinematik in VBA. Ich habe mal versucht die von denjo1 geschriebenen zeilen zu übernehmen, allerdings bekomme ich dann in der Zeile "omech = oProd.GetTechnologicalObject("Mechanisms")" immer folgende Fehlermeldung: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "KinTypeLib.Mechanism" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{D194AC30-475C-11D4-8539-00008634168F}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)). Ist jemandem diese Fehlermeldung bekannt oder weiß Abhilfe? Die KinTypeLib habe ich ordnungsgemäß hinzugefügt, daran dürfte es nicht liegen. Vielen Dank. stpl2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stationplayer2 Mitglied Vorentwicklungs-Ingenieur
Beiträge: 31 Registriert: 22.11.2009 Catia V5 R19 SP9 Windows XP Pro Intel Core 2 Duo 3,16GHz 3GB RAM NVIDIA Quadro FX 1700
|
erstellt am: 23. Nov. 2010 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Hey, habe das Problem gelöst, es hing mit der Deklaration von omech zusammen. Allerdings habe ich noch eine Frage: Wie kann ich in einem Produkt mit mehreren Mechanismen einen bestimmten auswählen? Vielen Dank. MfG stpl2 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: 23. Nov. 2010 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Servus Gemäß Dok sollte es so gehen (wie fast überall in CATIA): Dim ThisMechanism As Mechanism Set ThisMechanism = TheMechanisms.Item(3) Dim ThatMechanism As Mechanism Set ThatMechanism = CATIA.Mechanisms.Item("MyMechanism")
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tobiley Mitglied Masterstudent
Beiträge: 59 Registriert: 15.02.2010 Win XP CatiaV5 R17, R18, R19 HD2-Lizenz VB2008
|
erstellt am: 23. Nov. 2010 21:51 <-- editieren / zitieren --> Unities abgeben: Nur für Manrok
Um an die Collection "Mechanisms" zukommen kann folgendermaßen Vorgegangen werden: Dim TheKinWorkbench As Workbench Set TheKinWorkbench = CATIA.ActiveDocument.GetWorkbench ( "KinematicsWorkbench" ) Dim TheMechanisms As Mechanisms Set TheMechanisms = TheKinWorkbench.Mechanisms Gruß Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |