Autor
|
Thema: Datentyp ermitteln über Selection und AnyObject (633 / mal gelesen)
|
wadim-u Mitglied
Beiträge: 20 Registriert: 11.01.2021 CATIA V5 R20 SP03 HF03
|
erstellt am: 22. Jan. 2021 18:58 <-- editieren / zitieren --> Unities abgeben:
Datentyp ermitteln über Selection und AnyObject Guten Tag zusammen! Bin seit vor kurzem dabei die, mir die Makros-Programmierung im Selbststudium beizubringen. Auf der Suche nach einer Datentyp-Übersicht bin ich auf eine etwas ältere (noch vom 15.04.2010) Diskussion gestossen (https://ww3.cad.de/foren/ubb/Forum137/HTML/004001.shtml). Besonders interessant fand ich den abschliessenden Beitrag von DanielFr.:
Zitat: Original erstellt von DanielFr.: Hallo,der String den du an die SelectElement2 Methode übergibst stimmt nicht. Du musst den Datentyp (HybridBodies) als String übergeben und nicht den Standardnamen (Geometrical Set). Du kannst dir ja ein kleines Hilfskript basteln das dir aus einer Selektion ("AnyObject") den zugehörigen Datentyp (mit der Function TypeName) in einer MsgBox ausgibt
Die Idee fand ich vielversprechend und wollte mir genau so ein Hilfsskript schreiben. Umgesetzt habe ich es folgender Massen: Sub CATMain() Dim UsrSel As Object Dim A As CATBSTR Dim Typ(0) As CATSafeArrayVariant Typ(0) = "AnyObject" Set UsrSel = CATIA.ActiveDocument.Selection UsrSel.Clear A = UsrSel.SelectElement2 (Typ, "Bitte das fragliche Element anklicken", false) MsgBox ("Objekt-Typ ist:" & Chr(13) & Chr(10) & CStr (UsrSel.Item(1).Type) ) UsrSel.Clear End Sub Nur funktionieren tut es leider kaum, jedenfalls nicht so, wie ich es will. Denn, was auch immer ich dabei anklicke, es bringt mir die gleiche Meldung: «Objekt-Typ ist: AnyObject»! Meine bescheidene Frage an der Stelle lautet: was mache ich da falsch und wie kann ich den Fehler beheben? Für Ihre Ideen danke ich Ihnen im Voraus! Freundliche Grüsse Wadim 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: 22. Jan. 2021 19:12 <-- editieren / zitieren --> Unities abgeben: Nur für wadim-u
Servus Wadim Type liefert dir wohl hier nur zu welchem Filter das Element gehört (siehe Hinweis dazu in der Doku). Da du nur einer angeben hast wird dieser (AnyObject) ausgegeben. Probier mal: Code: MsgBox ("Objekt-Typ ist:" & Chr(13) & Chr(10) & TypeName(UsrSel.Item(1).Value) )
(per Value auf das selektierte Objekt zugreifen und per TypeName den Typ auslesen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wadim-u Mitglied
Beiträge: 20 Registriert: 11.01.2021 CATIA V5 R20 SP03 HF03
|
erstellt am: 22. Jan. 2021 20:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd! Besten Dank für deine rasche Rückmeldung! Leider gibt's da folgende Fehlermeldung: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht" Wobei, Value sollte doch, wenn ich's richtig verstehe, direkt das Objekt der Auswahl liefern, oder? Jedenfalls nochmals Besten Dank! Freundliche Grüsse Wadim 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: 22. Jan. 2021 20:14 <-- editieren / zitieren --> Unities abgeben: Nur für wadim-u
Servus Wadim Bei mir läuft der Code. Wo kommt der Fehler? Welche Methode wird nicht unterstützt? (ggf mal Zeile zusammensetzen (Zwischenschritte)) Ja Value liefert dir das selektierte Objekt. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wadim-u Mitglied
Beiträge: 20 Registriert: 11.01.2021 CATIA V5 R20 SP03 HF03
|
erstellt am: 22. Jan. 2021 20:28 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Jan. 2021 20:41 <-- editieren / zitieren --> Unities abgeben: Nur für wadim-u
Servus Value ist das Objekt (Kante, Pad, ...) und kein Name/String. Wenn du den Namen des Objekts haben willst: UsrSel.Item(1).Value.Name Für den Type: TypeName(UsrSel.Item(1).Value) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Techniker / Technischer Produktdesigner (m/w/d) für die Serienbetreuung | "BEREIT, TEIL EINES DYNAMISCHEN TEAMS ZU WERDEN, DAS DIE ZUKUNFT GESTALTET? GESUCHT WIRD EIN TECHNIKER O. TECHNISCHER PRODUKTDESIGNER (M/W/D) FÜR DIE SERIENBETREUUNG Willkommen bei der Verder Gruppe ? einem globalen Innovator in der Welt der Technik und Engineering! Bei uns stehst du im Mittelpunkt unserer wegweisenden Produkte, die in den Bereichen Labor- und Analysetechnik sowie in der industriellen Pumpenherstellung eingesetzt werden.... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
wadim-u Mitglied
Beiträge: 20 Registriert: 11.01.2021 CATIA V5 R20 SP03 HF03
|
erstellt am: 23. Jan. 2021 13:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd! Super! Perfekt! TypeName - das ist es gewesen! Jetzt läuft's! Vielen, vielen Dank! Gruss und ein schönes Wochenende! Wadim [Diese Nachricht wurde von wadim-u am 23. Jan. 2021 editiert.] [Diese Nachricht wurde von wadim-u am 23. Jan. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |