Autor
|
Thema: Catia Visual Basic Left (2205 mal gelesen)
|
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 08. Sep. 2014 09:41 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich greife mit Visual Basic 2010 auf Catia zu. Dort sollen alle bei allen Parts die Properties überprüft und gegebenfalls ergänzt werden. Hier ist bis jetzt meine Code: Dim i As Integer Dim test As String CATIA = GetObject(, "CATIA.Application") test = InputBox("Trage hier etwas ein") For i = 1 To CATIA.ActiveDocument.Product.Products.Count CATIA.ActiveDocument.Product.Products.item(i).DescriptionRef = test Next documents1 = CATIA.Documents productDocument1 = CATIA.ActiveDocument.product productDocument1.DescriptionRef = test Das Funkioniert auch soweit ganz gut. Jetzt möchte ich nach der schleife eine überprüfungen ansetzen, ob der Partname mit "1111" beginnt. Nur leider funkioniert das nicht so ganz wie ich möchte """Left(CATIA.ActiveDocument.product.name, 4)""""
Meine zweite frage wäre. Meine Schleife durchläuft alle Parts in einer Baugruppe. Beim Öffnen einer Vorrichtung durchläuft die Schleife nur die Baugruppen. Ich müsste dementsprechend noch eine Ebene tiefer gelangen. Wie wäre das umzusetzen? Vielen Dank Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 08. Sep. 2014 10:50 <-- editieren / zitieren --> Unities abgeben:
Das Problem mit Left habe ich nun doch geschafft zu lösen. Dim i As Integer Dim test As String CATIA = GetObject(, "CATIA.Application") test = InputBox("Trage hier was ein") CATIA.ActiveDocument.product.applyworkmode(DESIGN_MODE) For i = 1 To CATIA.ActiveDocument.Product.Products.Count If Strings.Left(CATIA.ActiveDocument.Product.Products.item(i).name, 6) = "111111" Then CATIA.ActiveDocument.Product.Products.item(i).DescriptionRef = test End if Next documents1 = CATIA.Documents productDocument1 = CATIA.ActiveDocument.product productDocument1.DescriptionRef = test Jetzt besteht nur noch die Frage wie ich diese eine Ebene tiefer gelange. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 09. Sep. 2014 12:59 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe einen hier in dem Forum einen Code gefunden der anscheinend meinen Wünschen entspricht. Leider müsste ich diesen etwas an Visual Basic anpassen
Code: sub ProAuslesen() Dim ProduktDoc As ProductDocument Dim Produkt As Product Set ProduktDoc = CATIA.ActiveDocument Set Produkt = ProduktDoc.Product CATAusProdukt Produkt end subFunction CATAusProdukt(ByVal Produkt As Product) Dim produkte As Object Set produkte = Produkt.Products For i = 1 To produkte.count CATAusProdukt (produkte.Item(i)) 'rekursive Aufruf 'hiermit hat man die jeweilige Produktname msgbox produkte.Item(i).name Next i End Function
In catvba funkioniert er einwandfrei, jedoch bekomme ich ihn in Visual Basic nicht zum Laufen. Ich wäre dankbar für eure Hilfe.
[Diese Nachricht wurde von Azazel1 am 09. Sep. 2014 editiert.] 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: 09. Sep. 2014 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
|
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 09. Sep. 2014 13:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, mein code sieht wie folgt aus
Code: Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click CATIA = GetObject(, "CATIA.Application") Dim ProduktDoc As ProductDocument Dim Produkt As Product ProduktDoc = CATIA.ActiveDocument Produkt = ProduktDoc.Product <------ an dieser Stelle erscheint die Fehlermeldung "InvalidCastException" wurde nicht behandelt. CATAusProdukt(Produkt) End Sub Private Sub CATAusProdukt(ByVal Produkt As Product) CATIA = GetObject(, "CATIA.Application") Dim produkte As Object produkte = Produkt.Products For i = 1 To produkte.count CATAusProdukt(produkte.Item(i)) 'rekursive Aufruf 'hiermit hat man die jeweilige Produktname MsgBox(produkte.Item(i).name) Next i End Sub
[Diese Nachricht wurde von Azazel1 am 09. Sep. 2014 editiert.] 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: 09. Sep. 2014 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Azazel1
Ist denn ein Produkt offen oder nur ein Part? Versuch mal Produkt als Variant oder mit LateBinding zu initialisieren. ------------------ 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 |
Azazel1 Mitglied
Beiträge: 32 Registriert: 08.09.2014 X5450; 16GB Win 7 SP1 CATIA V5R19 SP9
|
erstellt am: 10. Sep. 2014 07:18 <-- editieren / zitieren --> Unities abgeben:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click CATIA = GetObject(, "CATIA.Application") Dim ProduktDoc As Object Dim Produkt As Object ProduktDoc = CATIA.ActiveDocument Produkt = ProduktDoc.Product CATAusProdukt(Produkt) End Sub Private Sub CATAusProdukt(ByVal Produkt As Object) CATIA = GetObject(, "CATIA.Application") Dim produkte As Object produkte = Produkt.Products For i = 1 To produkte.count CATAusProdukt(produkte.Item(i)) 'rekursive Aufruf 'hiermit hat man die jeweilige Produktname MsgBox(produkte.Item(i).name) Next i End Sub Damit habe ich mein Problem gelöst. Ich habe alle variablen die als product definiert sind durch object ersetzt und siehe das es funktioniert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |