Autor
|
Thema: Selection-Class als LateBinding aus Visual Basic (1637 mal gelesen)
|
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010
|
erstellt am: 04. Feb. 2011 15:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Spezies^^ Ich kriege es beim besten Willen nicht hin im Visual Studio per LateBinding auf die Selection Klasse von CATIA zuzugreifen. Derzeit behelfe ich mir mit Early Binding - das möchte ich aber eigentlich vermeiden... Wie definiere ich denn eine Variable nach folgendem Muster: Dim Liste As Object Liste = CATIA.Selection ??????? ein Set Liste = ... wird von Visual Studio 08 erst gar nicht akzeptiert... Danke vorab ------------------ lg Christian 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: 04. Feb. 2011 16:55 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Servus AFAIK ist die Selection immer dem Dokument zu geordnet. Versuch es mal mit: Liste = CATIA.ActiveDocument.SelectionGruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 04. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 05. Feb. 2011 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Hallo Christian, ich habe das mit der selektion im Late Binding so gemacht:
Code: Dim CATIA as Object, Dokument, Selektion CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") Dokument = CATIA.ActiveDocument Selektion = Dokument.Selection
Das funktioniert bei mir so auch Einwand freimfg Lars [Diese Nachricht wurde von INLU am 05. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010 Catia v5 R21 OS: Win7pro SP1 64Bit CPU:i5-2500 Ram:16Gb Grafik: AMD Radeon HD 6700
|
erstellt am: 06. Feb. 2011 21:01 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für eure Antworten. Ich habe beide Varianten ausprobiert - jedoch ohne Erfolg. Jedes mal eine "ComException was unhandled - Mitglied nicht gefunden" sobald ich versuche irgend etwas zu meiner Selection zu "adden": z.B. Liste.Add(CATIA.Documents.Item("Test.CATPart").Part) ------------------ lg Christian 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: 06. Feb. 2011 21:15 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Servus Zu welcher Selektion willst du das Part hinzufügen? Das zu selektierende Element muss ja im Dokument der Selektion vorhanden sein. Was hast du vor? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010
|
erstellt am: 06. Feb. 2011 22:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, da ich mich mit den genauen Bezeichnungen im VB.net-Jargon noch nicht gut auskenne muss ich kurz ausholen Ich habe ein Assembly aus einigen Parts, die teilweise aus Übersichtsgründen in Produkten sortiert sind. Aus einer externen VB.net Application möchte ich gezielt einzelne Parts ein- /ausblenden. CATIA läuft zu diesem Zeitpunkt bereits und das entsprechende Dokument ist geladen. Die Early-Binding-Variante funktioniert tadellos! Die Liste wird vor Gebrauch geleert, anschließend gefüllt und alle Mitglieder der Liste auf sichtbar gesetzt.
Hier mal ein beispielhafter Ausschnitt aus der entsprechenden Prozedur zum Einblenden: Imports INTITF ... Sub Einblenden() CATIA = GetObject(, "CATIA.Application") Dim Liste As Selection 'hier die Early Binding Variante Liste = CATIA.ActiveDocument.Selection Liste.Clear() 'Selektieren der Parts Liste.Add(CATIA.Documents.Item("Part1.CATPart").Part) Liste.Add(CATIA.Documents.Item("Part2.CATPart").Part) ... 'Einblenden der selektierten Parts Liste.Visproperties.SetShow(0) Liste.Clear () End Sub
------------------ lg Christian 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: 07. Feb. 2011 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Servus Ich vermute dass es so nicht geht wie du vorhast. Entweder muss du in deinem Assembly über die Products-Collections deine Teile Selektieren. Oder ggf geht auch mit der Suche diese Parts zu selektieren (einfach mal mit der Suche probieren und ggf dies mit der Makroaufzeichnung aufzeichnen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010
|
erstellt am: 07. Feb. 2011 13:44 <-- editieren / zitieren --> Unities abgeben:
|
INLU Mitglied Konstrukteur Automotive
Beiträge: 71 Registriert: 01.03.2008
|
erstellt am: 10. Feb. 2011 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
|
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010 Catia v5 R21 OS: Win7pro SP1 64Bit CPU:i5-2500 Ram:16Gb Grafik: AMD Radeon HD 6700
|
erstellt am: 12. Feb. 2011 12:59 <-- editieren / zitieren --> Unities abgeben:
Ist das nicht eine Voraussetzung zur Benutzung des Early-Bindings?! Normalerweise (ich mache eigentlich alles mit Late-Binding) habe ich diesen Eintrag nicht drin - ohne kann ich jedoch nicht auf die Section Klasse zugreifen - und einen funktionierenden Weg "eine Art von Selection" per Late-Binding umzusetzen habe ich trotz der Vorschläge hier noch nicht gefunden. Allerdings sind mir ähnliche Probleme auch schon in anderem Zusammenhang untergekommen. Die Standardsyntax zum Aufruf einer Isoperspektive funktioniert bei mir erstaunlicher Weise ebenfalls nicht. Evtl. gibt es ein paar Besonderheiten innerhalb Visual Studio. Ich bin aber auch nur Programmier-Laie, auch wenn ich Dank der tatkräftigen Unterstützung hier im Forum wirkliche Fortschritte bei der Umsetzung meines Programmes erzielen konnte...
[Diese Nachricht wurde von cl10b am 12. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 23. Feb. 2011 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Hey Ich stehe immernoch vor dem Problem, in Visual Studio eine Aufforderung zur Selektion zu programmieren. Bei mir ist es der Fall, dass beim Klicken auf einen Button, der Benutzer aufgefordert werden soll einen Namen einzugeben. Danach sollen zwei Geometrische Sets selektiert und kopiert werden und das ganze im Part Design. Finde einfach keinen Ansatz, die Selektion durchzuführen. Es wäre sehr nett wenn der Threadersteller den Code zum Early Binding noch einmal kompl. posten könnte :-) Mit freundlichen Grüßen schnix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010 Catia v5 R21 OS: Win7pro SP1 64Bit CPU:i5-2500 Ram:16Gb Grafik: AMD Radeon HD 6700
|
erstellt am: 23. Feb. 2011 09:44 <-- editieren / zitieren --> Unities abgeben:
Hi Schnix, Early Binding für Selections löse ich in VB2008 wie folgt: 1) Projekt/Verweis hinzufügen/COM/CATIA V5 InfInterfaces Object Library 2) Im entsprechenden Form "ganz oben" Imports INFITF einfügen 3) In der entsprechenden SUB: 3.1) CATIA = GetObject(, "CATIA.Application") 3.2)DIM Liste As Selection (durch das Early Binding kennt er nun diese Klasse) 3.3)Liste = CATIA.ActiveDocument.Selection (EDIT:hatte ich vergessen und jetzt noch nachgetragen) jetzt beliebig die Liste bearbeiten, z.B.: Liste leeren: Liste.CLear() Part hinzufügen: Liste.Add(CATIA.Documents.Item("Test.CATPart").Part) alle Parts der Liste einblenden: Liste.Visproperties.SetShow(0) alle Parts der Liste ausblenden: Liste.Visproperties.SetShow(1) Es bleibt beim Early Binding das Problem, dass man sich an die exakte Version der benutzten Library bindet. Sollte dein Arbeitgeber also auf ein anderes Release wechseln wird dieses Verfahren versagen. Wie bereits weiter oben geschrieben, habe ich trotz der Tipps hier im Thread es bisher nicht mit Late Binding hinbekommen. Irgendwas scheint Visual Basic hier in die Quere zu kommen. Meine Erfahrung damit ist aber auch noch zu begrenzt um hier wirklich der Sache auf den Grund zu gehen. Ich hoffe nach wie vor auf einen funktionierenden Ansatz der erfahrenden User hier im Forum [Diese Nachricht wurde von cl10b am 23. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 23. Feb. 2011 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Ooooh und ich bin am verzweifeln hier. Hatte lediglich den Verweis zu der InfInterface Library vergessen. Diese Variante reicht erst einmal aus für mein Vorhaben! Ein großes Dankeschön an dich 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: 23. Feb. 2011 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für cl10b
Hallo, Zitat: Es bleibt beim Early Binding das Problem, dass man sich an die exakte Version der benutzten Library bindet. Sollte dein Arbeitgeber also auf ein anderes Release wechseln wird dieses Verfahren versagen.
Das ist nicht zwangsläufig so. Ich arbeite mit INTEROP-Assemblys die ich mal mit R16 erstellt habe. Inzwischen sind wir auf R19 und die Programme arbeiten immer noch fehlerfrei (ohne Anpassung oder Neuerstellung der Interop-DLL's) ------------------ 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 |
cl10b Mitglied Student
Beiträge: 93 Registriert: 07.08.2010
|
erstellt am: 23. Feb. 2011 10:08 <-- editieren / zitieren --> Unities abgeben:
Ja du hast recht. Ich habe den entsprechenden Absatz in Jens Hansens Buch gerade nochmal gelesen (S.307) und es ist exakt wie du es beschreibst. Entschuldigung für die Verwirrung! ------------------ lg Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |