Autor
|
Thema: Mit VB auf ein Part zugreifen (778 mal gelesen)
|
Jan24 Mitglied student
Beiträge: 14 Registriert: 13.10.2006
|
erstellt am: 23. Nov. 2006 11:36 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammmen, ich möchte gerne wissen wie ich im VB auf einen Part zugreifen kann bsp.: es ist ein Part mit dem Namen "Balken" geöffnet ich möchte jetzt nun in VB sagen wenn "Balken" geöffnet ist dann führe folgendes aus. Ich weiss das man im VB wenn man auf ein Parameter zugreifen möchte folgenden Code benutzt: Set part1 = CATIA.ActiveDocument.Part Set Param = part1.Parameters.RootParametersSet.DirectParameters daher denke ich das es für mein Problem ein ähnlicher Code benutzt wird MfG Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 23. Nov. 2006 23:12 <-- editieren / zitieren --> Unities abgeben: Nur für Jan24
Hallo Jan24, versuch es doch mal mit: Code: Set part1 = CATIA.Documents.Item("Balken.CATPart")
oder Code:
If CATIA.Documents.Item("Balken.CATPart").name = "Balken.CATPart" Then Set part1 = CATIA.Documents.Item("Balken.CATPart") End If
mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 24. Nov. 2006 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für Jan24
Hallo Jan24 , Hallo Lusilnie Lusilnie erstes Code-Schnippsel funktioniert sicherlich, aber das zweite verwirrt mich ein wenig: If CATIA.Documents.Item("Balken.CATPart").name = "Balken.CATPart" Then Set part1 = CATIA.Documents.Item("Balken.CATPart") End If Also wenn das Dokument "Balken.CATPart" den Namen "Balken.CATPart" trägt, dann ....??? Desweitern muss man wissen, das wenn auch ein Dokument in der Dokumentauflistung enthalten ist, es nicht zwangsläufig auch visualisiert wird, sprich in einem eigenen Fenster angezeigt wird. Es ist dann einfach nur die Frage was du willst. Ich hatte immer Probleme ein Dokument das nur gelesen aber nicht visualisiert ist, nach dem Modifizieren von Parametern zu speichern. Das war jedenfalls mit R12 so.
------------------ Grüße TStone "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 24. Nov. 2006 21:12 <-- editieren / zitieren --> Unities abgeben: Nur für Jan24
Hallo Tstone, Deine Verwunderung ist zurecht! Es sollte eine Abfrage werden, ob das Part überhaupt vorhanden ist, wird aber so nicht funktionieren! Sorry, es war wohl doch schon etwas spät.... Besser ist es so: Code: For I=1 To CATIA.Documents.Count If CATIA.Documents.Item(I).name = "Balken.CATPart" Then Set part1 = CATIA.Documents.Item("Balken.CATPart") Exit For End If Next
mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan24 Mitglied student
Beiträge: 14 Registriert: 13.10.2006
|
erstellt am: 25. Nov. 2006 13:59 <-- editieren / zitieren --> Unities abgeben:
Hallo noch einmal und danke für die schnellen Antworten. Mein eigentliches Problem ist es das ich im CATIA drei unterschiedliche Bauteile modelliert habe und jeweils zu jedem habe ich mit VB Eingabemasken erzeugt. Danach habe im zum starten diese Masken in Catia eine Symbolleiste erzeugt wo ich über 3 unterschiedliche Buttons (siehe Bild im Anhang) die Masken starten kann, wobei der erste Button die Eingabemasken vom Bauteil 1 starten usw. Aber es kann vorkommen dass der Benutzer Bauteil.1 startet und dann auf einen falschen Button klickt, weil die Button nicht eindeutig sind. Meine Idee ist es nur mit einem Button zu arbeiten der erkennt welcher Bauteil grade geladen ist und dementsprechend die dazugehörenden Eingabemasken gestartet. MfG Jan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 25. Nov. 2006 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für Jan24
Hallo Jan24, für Deine Absicht wäre der Select-Befehl sehr elegent, etwa so: Code: Select Case CATIA.ActiveDocument.Name Case "Balken.CATPart" 'hier was bei "Balken.CATPart" ausgeführt wird Case "BLABLA.CATPart" 'hier was bei "BLABLA.CATPart" ausgeführt wird Case "Suelz.CATPart" 'hier was bei "Suelz.CATPart" ausgeführt wird Case Else Exit Sub End Select
Hier wird geprüft, welchem Part das gerade Geöffnete entspricht. Entspricht es keinem, so wird das Script beendet (Exit Sub)! mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan24 Mitglied student
Beiträge: 14 Registriert: 13.10.2006
|
erstellt am: 26. Nov. 2006 20:02 <-- editieren / zitieren --> Unities abgeben:
|
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 27. Nov. 2006 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für Jan24
Moin Lusilnie Ich will ja nicht kleinlich sein, aber so gefällt mir dein Code am Besten: For I=1 To CATIA.Documents.Count If CATIA.Documents.Item(I).name = "Balken.CATPart" Then Set part1 = CATIA.Documents.Item(I) '<-so Besser, meine ich Exit For End If Next Bis denn! ------------------ Grüße TStone "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Spezialist*in Anlagen- und Rohrleitungsbau | SCHOTT ist ein international führender Technologiekonzern auf den Gebieten Spezialglas und Glaskeramik. Mit der Erfahrung von über 130 Jahren herausragender Entwicklungs-, Material- und Technologiekompetenz bietet das Unternehmen ein breites Portfolio hochwertiger Produkte und intelligenter Lösungen an. Damit ist SCHOTT ein innovativer Partner für viele Branchen, zum Beispiel Hausgeräteindustrie, Pharma, Elektronik, Optik, Life Sciences, Automotive und Aviation.... | Anzeige ansehen | Maschinenbau |
|
Jan24 Mitglied student
Beiträge: 14 Registriert: 13.10.2006
|
erstellt am: 27. Nov. 2006 14:51 <-- editieren / zitieren --> Unities abgeben:
Der Code von Lusilnie ist für mein Vorhaben eigentlich ganz ok und leicht zu verstehen da ich mich mit VB noch nicht so gut auskenne. Nur ich habe für alle drei Fälle unterschiedliche Projekte erzeugt und der Code funktioniert nur innerhalb eines Projektes. Ich würde gern ein weiteres Projekt erzeugen wo ich über die Case-Bedingungen auf die einzelnen Projekte damit auch auf die Masken zugreifen kann. Ist dies Möglich oder muss ich alle Masken in einem Projekt packen????? MfG Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |