| |
| KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: Index einer Tabelle in Drawing herausfinden (871 / mal gelesen)
|
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 25. Aug. 2017 07:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Community, habe eine weitere Frage in Catia VBA-Programmierung. In der Automation.chm steht für die Tabellendefinition folgender Code: Code: Func Item( long iIndex) As DrawingTable Returns a drawing table using its index from the DrawingTables collection. Parameters: iIndex The index of the drawing table to retrieve from the collection of drawing tables. As a numerics, this index is the rank of the drawing table in the collection. The index of the first drawing table in the collection is 1, and the index of the last drawing table is Count. Returns: The retrieved drawing table Example: This example retrieves in ThisDrawingTable the second drawing table, in the drawing view collection of the active view in the active sheet, in the active document supposed to be a drawing document. Dim MyView As DrawingView Set MyView = MySheet.Views.ActiveView Dim ThisDrawingTable As DrawingTable Set ThisDrawingTable = MyView.Tables.Item(2)
Da bei .Item nur ein Index der Tabelle verwendet warden kann und kein Name, lautet meine Frage: Wie kann ich diesen Index auslesen, wenn ich in einer View z.B. 2 Tabellen habe und ich die 2. Tabelle selektiere, dann soll das Programm mir Index 2 ausgeben. Den Namen der Tabelle kann ich ja mit Code: ThisDrawingTable.Name
auslesen. Aber den Index? Herzlichen Dank für eure Antworten! Gruss Diesaster
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Aug. 2017 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Servus Wenn du bei der Collection nicht per Name auf ein Item zugreifen kannst hast du zB folgende Möglichkeiten: - per Schleife die Collection abarbeiten und den Namen auswerten - GetItem verwenden - über die Selektion per Suche darauf zugreifen In deinem Beispiel: du hast doch schon Tabelle als Object, warum brauchst du dann noch den Index? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 25. Aug. 2017 11:05 <-- editieren / zitieren --> Unities abgeben:
Ich will den Index auslesen für den Fall das 2 oder 3 Tabellen in einer Ansicht drin sind. Wenn dies der Fall ist hat Tabelle 1 Index 1 und Tabelle 3 Index 3. Will ich nun nur Tabelle 2 bearbeiten, dann muss ich in meiner Selection ja den Index 2 definieren können. Das mit dem Namen wird nicht funktionieren, da man den Namen ja ändern kann bzw. wenn eine 2. Tabelle erstellt wurde heißt diese ja Table.2. Wenn diese aber gelöscht wird und nochmal erstellt wird, so heißt diese dann Table.3. Deswegen kann man es nicht über den Namen lösen. Das mit dem GetItem werde ich mal versuchen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Aug. 2017 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Servus GetItem geht auch nur wenn du den Namen kennst. An was kannst du denn deine Tabelle erkennen? Wenn der User die Tabellen löschen kann, geht es wohl nicht über den Index (der änderst sich wenn ein vorheriges "Element" gelöscht wird). Wenn die Tabelle per Makro erstellt wird kannst du dieser doch gleich Umbenennen. Und später wieder mit dem Namen die Tabelle zugreifen. Wenn selbst der Name nicht eindeutig ist geht es wohl nur über andere Eigenschaften der Tabelle (Position, Anzahl Spalten/Zeilen), Inhalt einer Zelle, ...) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 25. Aug. 2017 11:57 <-- editieren / zitieren --> Unities abgeben:
Das mit dem Namen abgreifen funktioniert nur bei Sheets und Views, deswegen steht in der Automation.chm ja folgender Satz drin. Code: The index of the drawing table to retrieve from the collection of drawing tables. As a numerics, this index is the rank of the drawing table in the collection. The index of the first drawing table in the collection is 1, and the index of the last drawing table is Count.
Das heißt man kann nur den Index der Tabelle verwenden. Irgendwo muss ich doch diesen Index herauslesen können. Catia zählt ja schließlich im Hintergrund diese Indezes mit und muss diese somit im Speicher haben und eine Verknüpfung zur Tabelle besitzen, welche ich abrufen kann. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Aug. 2017 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Servus Was nun? Hast du den Namen oder nicht? Wenn ja: entweder GetItem oder Schleife über alle Tabellen und den Namen auswerten. Wenn nein: dann dir was anderes ausdenken (Userselection, bestimmte Zelle auslesen, ...) Gruß Bern
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 25. Aug. 2017 13:10 <-- editieren / zitieren --> Unities abgeben:
Ich kann den Namen der Tabelle schon auslesen, nur was nützt es mir? Erklär mir das bitte. Wenn ich nicht alle Tabellen in der View bearbeiten möchte sondern nur eine bestimmte? Über Catia.ActiveDocument.Selection kann ich eine Tabelle auswählen, aber wie bekomme ich den Index der dahinter steckt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Aug. 2017 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Servus Wir "reden" wohl aneinander vorbei. Erkläre bitte mal was du mit deinem Makro vorhast. Was ist gegeben, was soll dabei raus kommen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 25. Aug. 2017 13:28 <-- editieren / zitieren --> Unities abgeben:
Gegeben ist eine eine Zeichnung mit einer Ansicht, in der sich 3 Tabellen befinden. Gesucht ist der Index der Tabelle Der Benutzer soll per .Selection eine der 3 Tabellen wählen. Diese soll das Programm verwenden und entsprechend der Einstellungen meines Makros bearbeiten. Problem: Tabelle 1 hat Index 1, Tabelle 3 hat Index 3. Bei .Tables.Item(Parameter) kann nur eine feste Zahl eingegeben warden und kein Name. Woher soll das Programm nun wissen welchen Index die entsprechend selektierte Tabelle hat? Im coe-Forum habe ich gelesen, dass es irgendwie mit einer For Each Schleife funktionieren soll, nur leider verstehe ich das nicht so Recht. Da ich nicht weiß ob ich den entsprechenden Link hier posten darf lasse ich ihn vorerst weg. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Aug. 2017 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Servus Das heißt der User hat die Tabelle selektiert, dann hast du deine Tabelle schon und brauchst den Index nicht mehr. zB: Code: Set MyTable = oselection.item2(1).value 'das 1. Objekt deiner Selektion ist das gewählte Element MyTable.AnchorPoint = CatTableBottomLeft'ab hier kannst du alles mit der MyTable anstellen das die API für eine DrawingTable bietet
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 25. Aug. 2017 13:43 <-- editieren / zitieren --> Unities abgeben:
|