Autor
|
Thema: Zugriff auf Parameter von (Multi-)Branchables (1368 mal gelesen)
|
LayKris Mitglied Student
Beiträge: 12 Registriert: 28.03.2012 @home: i5-750 @ 4x2,66GHz 4GB DDR3 Radeon HD5770 @mobile: Amd A8-3520 @ 4x2.5GHz 4GB DDR3 Radeon HD6740G2
|
erstellt am: 05. Apr. 2012 14:31 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, quasi als Fortführung meines anderen Threads bin ich an ein weiteres Problem geraten. Da das Thema aber inhaltlich kaum etwas mit dem vorherigen Problem zu tun hat, mache ich hier mal ein neues Thema auf. Ich habe also aus dem Aufruf einer .exe meinen Rückgabewert und möchte den jetzt gerne in CATIA als Durchmesser für ein Kabelbündel übernehmen. Dafür habe ich mir ein kleines Makro zusammengebastelt, das in einer Unterfunktion den Wert zuweisen soll. Leider habe ich keine Ahnung, wie genau ich jetzt auf die Parameter zugreifen kann. Hier mal ein Auszug aus dem Code: Code: Function Benutzen(Wert1) 'Variablendefinitionen Result = MsgBox("Wollen Sie den Wert übernehmen?", vbYesNo, "Wert übernehmen?") If Result = 6 Then MsgBox ("Bitte Multi-Branchable auswählen!") 'Auswahl auf Multi-Branchables (Parts?) begrenzen Dim Was(0) Was(0) = "Part" Dim e As String e = objBuffer.SelectElement2(Was, "Multi-Branchable wählen.", False) If e = "Normal" Then Set partDocument1 = documents1.Item(UserSel) '<<<<an dieser Stelle bricht das Makro ab! Set part1 = partDocument1.Part Else MsgBox ("Abbruch") End If MsgBox ("Bitte Bündelsegment auswählen!") 'Auswahl auf Bündelsegmente (Products?) begrenzen Was(0) = "Product" e = objBuffer.SelectElement2(Was, "Bündelsegment wählen.", False) If e = "Normal" Then Set partDocument2 = documents2.Item(UserSel) Set part2 = partDocument2.Part Dim Pfad As String Pfad = (part1 + "\Bedingungen\" + part2 + "\Durchmesser") Set dimension1 = parameters1.Item(Pfad) dimension1.Value = Wert1 Set parameters1 = part1.Parameters Else MsgBox ("Abbruch") End If End If End Function
An der markierten Stelle wirft er mir die Fehlermeldung "Verfahren Item fehlgeschlagen" aus. Anscheinend stimmen hier die Objektklassen nicht so ganz. Hat jemand eine Ahnung, wie das Ganze in diesem Fall funktioniert? Bin gerade recht ratlos, da ich via Google keinerlei Informationen zu den Objektklassen von elektrischen Komponenten gefunden habe. Schon mal herzlichen Dank im Voraus für jeden Input! 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: 05. Apr. 2012 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für LayKris
Servus Wo ist die Variable "UserSel" definiert? Wenn du auf ein selektiertes Element zugreifen willst musst du zB UserSel.item2(1).Value verwenden. ggf musst du von deinem selektierten Part noch auf das Dokument "hochwechseln" (zB UserSel.item2(1).document oder UserSel.item2(1).Value.Parent). Bitte mit Watchfenster prüfen was von der Selektion zurückgeliefert wurde. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LayKris Mitglied Student
Beiträge: 12 Registriert: 28.03.2012 @home: i5-750 @ 4x2,66GHz 4GB DDR3 Radeon HD5770 @mobile: Amd A8-3520 @ 4x2.5GHz 4GB DDR3 Radeon HD6740G2
|
erstellt am: 05. Apr. 2012 18:27 <-- editieren / zitieren --> Unities abgeben:
Servus! UserSel ist innerhalb der Function folgendermaßen definiert: Code: Dim UserSel As Selection Set UserSel = CATIA.ActiveDocument.Selection Set objBuffer = UserSel UserSel.Clear
Danke auf jeden Fall schon mal für den Vorschlag, werde das spätestens kommende Woche mal ausprobieren. Jetzt wünsche ich aber erstmal schöne Feiertage! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LayKris Mitglied Student
Beiträge: 12 Registriert: 28.03.2012 @home: i5-750 @ 4x2,66GHz 4GB DDR3 Radeon HD5770 @mobile: Amd A8-3520 @ 4x2.5GHz 4GB DDR3 Radeon HD6740G2
|
erstellt am: 19. Apr. 2012 11:12 <-- editieren / zitieren --> Unities abgeben:
So, habe das jetzt auch endlich mal ausprobiert, und im ersten Fall funktioniert es tatsächlich: Code: Set partDocument1 = UserSel.Item2(1).Value.Parent
Allerdings wirft er mir bei der zweiten Auswahl trotz gleicher Bedingungen auf einmal einen Type Mismatch aus. Ich schätze, ich muss da auf jeden Fall noch eine Funktion einfügen, die bei falscher Auswahl durch den Benutzer eine entsprechende Fehlermeldung ausgibt. Das Problem ist, dass ich nicht genau weiß welchen Ausdruck ich "watchen" muss, um zu sehen was er zurückgibt. Kann mir da jemand auf die Sprünge helfen? Oder hat jemand eine Ahnung, wie die Automatisierungs-Objekte im Electrical-Bereich heißen? Speziell suche ich Multi Branchable und Bundle Segment. [Diese Nachricht wurde von LayKris am 19. Apr. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|