Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Index einer Tabelle in Drawing herausfinden

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Index einer Tabelle in Drawing herausfinden (854 mal gelesen)
Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 25. Aug. 2017 07:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Aug. 2017 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 25. Aug. 2017 11:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Aug. 2017 11:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 25. Aug. 2017 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Aug. 2017 13:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 25. Aug. 2017 13:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Aug. 2017 13:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 25. Aug. 2017 13:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Aug. 2017 13:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 25. Aug. 2017 13:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Schwere Geburt 

Es hat funktioniert. Diese Methode kannte ich noch nicht herzlichen Dank!

10 U's für dich.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz