Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  GeoSet auflisten

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:  GeoSet auflisten (2452 mal gelesen)
Joseph.Metzler
Mitglied



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

Beiträge: 53
Registriert: 16.03.2004

V5-6R2014

erstellt am: 25. Aug. 2015 14:26    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,

ein Frage zum Inhalt eines GeoSets.
Ich kann zwar über HybridBody.HybridBodies und HybridBody.HybridShape feststellen was in der ersten Ebene eines GeoSets vorhanden ist, aber wie kann ich die Reihenfolge der Elemente, so wie sie im CATIA-Baum dargestellt wird, feststellen ?

Vielen Dank schon mal
Joseph

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 25. Aug. 2015 14:51    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 Joseph.Metzler 10 Unities + Antwort hilfreich

Hallo Namensvetter,

wie fit bist Du mit der Api?

Denkbare Vorgehensweise in PseudoCode:

- Set aktivieren
- StartCommand 'Reorder Children'
- über Api Kinder aus Liste auslesen

- bei verschachtelten Sets rekursiv

Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Joseph.Metzler
Mitglied



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

Beiträge: 53
Registriert: 16.03.2004

V5-6R2014

erstellt am: 25. Aug. 2015 15:20    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 Joe,

vielen Dank für die schnelle Antwort.
OK, so richtig Ahnung was die API anbelangt habe ich nicht.
Ehrlicherweise wirft dein Pseudocode bei mir mehr Fragen auf als das er klärt.
Soweit ich aber verstanden habe, bekomme ich die Liste der Kinder dadurch das ich das Fenster von "ReorderChildren" auslese, es gibt also keine Methode / Function welche auf HybridBody anzuwenden ist, um die Liste zu erhalten.
Könntest Du mit zu "StartCommand ReoderChildren" und "über API Kinder aus Liste auslesen" noch ein bisschen auf die Sprünge helfen.
Kann ich dazu in der Automation.chm oder sonst wo was finden ?

Thx
Joseph

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. 2015 15:39    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 Joseph.Metzler 10 Unities + Antwort hilfreich

Servus
Leider geht dass was du vor hast nicht über die Catia-API (V5Autiomation.chm), sonder du musst auf die Windows-API ausweichen. Das ist ein komplexer (besonders wenn man damit noch nie gearbeitet hat).

Gruß
Bernd

PS: Ein Beispiel zum Arbeitet mit der Windows-API findest du auf catia.cad.de (Joe kann dir bestimmt genaueres dazu sagen)

------------------
Warum einfach, wenn es auch kompliziert geht.

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 25. Aug. 2015 19:47    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 Joseph.Metzler 10 Unities + Antwort hilfreich

Hallo Joseph,

eigentlich wollt' ich nur kurz ein vorhandenes Beispiel zu einem verwandten Thema umstricken.
Nur: Der Schritt von VB6 zu VBA6 birgt so einige Tücken.

Jedenfalls: Ich hab ein Beispiel abgelegt, wie sich ein GeoSet auslesen lässt.
Was ich da nicht drin habe, ist die Analyse der eingelesenen Elemente, Rekursion, etc.

Zu finden hier:
http://catia2.cad.de/index.php/de/downloads/skripts-applikationen/295-listgeoset-elemente-eines-hybridbody-auslisten

Hope it helps,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 25. Aug. 2015 20:09    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 Joseph.Metzler 10 Unities + Antwort hilfreich

Was ich vorhin vergessen hab:
Das Beispiel ist für VBA6.5.
Falls Du VBA7 hast, müsstest Du die Api-Deklarationen korrigieren.
Die korrekten Deklarationen zu VBA7 findest Du hier:

http://catia2.cad.de/index.php/de/tipps-tricks/programmierung/67-winapi-txt-vba7

Und nicht vergessen: Die Variablen/Rückgabewerte müssen uU auch angepasst werden!

Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Joseph.Metzler
Mitglied



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

Beiträge: 53
Registriert: 16.03.2004

V5-6R2014

erstellt am: 26. Aug. 2015 07:34    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 Joe, Bernd,
erst mal vielen Dank für die Links und Hinweise.
Hilft mir sicher weiter, da hab ich was zum rumprobieren.
Rekursion etc. bekomme ich selber gebacken.
Ansonsten weiß ich jetzt ja wenn ich fragen kann

Nochmals vielen Dank
Joseph

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 26. Aug. 2015 15:18    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 Joseph.Metzler 10 Unities + Antwort hilfreich

Hallo Leut',

offenbar war ich gestern doch sehr in Eile.
Ich hab noch ein paar Leichen aus dem Quell-Code entfernt
und die Kommentare vervollständigt.
Ausserdem hab ich den Ausschnitt von Spy angehängt.

Enjoy,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Joseph.Metzler
Mitglied



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

Beiträge: 53
Registriert: 16.03.2004

V5-6R2014

erstellt am: 31. Aug. 2015 16: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


GeoSet-Example.jpg

 
Hallo,

Dank der Beispielcodes, bekomme ich jetzt eine Namensliste der Elemente eines GeoSets. Über HybridBody.Hybridbodies, bzw. HybridBody.HybridShapes, bekomme ich auch eine Objektliste des GeoSets. Mittels GetItem("ModelElement") kriege ich auch die eindeutigen Namen der Objekte.
In meinem Beispiel-GeoSet A (siehe Anhang), befinden sich 4 Elemente, jeweils mit dem Namen B.
Was ich mit den bisher gesammelten Informationen nicht hinbekomme, ist eine eindeutige Zuordnung. z.B. erstes Element aus der Namensliste "B" ist ein HybridBody mit ModelElement-Name "Open_Body.12", oder drittes Element aus der Namensliste "B" ist ein HybridShape mit ModelElement-Name "Point.3"
Sehe ich gerade den Wald vor lauter Bäumen nicht ?

Gruß
Joseph

BTW: Das das Beispiel wenig bis gar nichts mit der Praxis zu tun ist mir schon klar. 

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: 31. Aug. 2015 17:29    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 Joseph.Metzler 10 Unities + Antwort hilfreich

Servus
Ich hab da noch eine Idee.
Du könntest das GeoSet selektieren und darin alle Elemente suchen. Zur Unterscheidung ob Elemente direkt zum GeoSet gehören (und nicht tiefer liegen) könntest du die Strings aus "GetNameToUseInRelation" auswerten. (Auswertung des Pfads fehlt im Code)
Code:
Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Search "Type=*,sel"

dim part1 as Part
Set part1 = partDocument1.Part

dim parameters1 as parameters
Set parameters1 = part1.Parameters

dim Element as variant
for i = 1 to selection1.count
    set Element = selection1.item(i).value
    msgbox Element.name & " : " & TypeName(Element) & " : " & Parameters1.GetNameToUseInRelation(Element)
next

End Sub


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 31. Aug. 2015 19: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 Nur für Joseph.Metzler 10 Unities + Antwort hilfreich

Hallo Joseph,

wer allen GeoSets den gleichen Namen gibt, hat auch nicht verdient,
dass er sie anschliessend unterscheiden kann. :-)

Zitat:

Das das Beispiel wenig bis gar nichts mit der Praxis zu tun ist mir schon klar.


Das ist unsauber formuliert. Richtig: Das Thema hat nix mit der Praxis zu tun.

Du schuldest uns noch eine Erklärung, zu was das ganze gut sein soll.

Ausserdem:
- die Elemente die Du per WinApi ausliest kommen in der richtigen Reihenfolge
- wenn Du jetzt ein UDT anlegst, etwa:

Code:

Type HYBRIDBODY_TYPE
   iPos as integer          'laufende Nummer
   strName as string        'Name
   iLevel as integer        'Level
   strPath as string        'Pfad, zusammengesetzt aus den Level-Pfaden
   strParent as string      'Elternelement
   bHasChildren as boolean  'Flag, ob Kinderelemente existieren
   vType as Variant         'Elementtyp
   ...                      '...
End Type


kannst Du beim auslesen die jeweiligen Felder ausfüllen,
ähnlich wie bei einem TreeView-Control.
Oder Du baust die Baumstruktur gleich mit einer Treeview nach.

Nur so als Idee.

Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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

Joseph.Metzler
Mitglied



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

Beiträge: 53
Registriert: 16.03.2004

V5-6R2014

erstellt am: 01. Sep. 2015 09:11    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,

stimmt wenn die Liste per WinAPI ausgelesen wird, kommen die Namen in der richtigen Reihenfolge. So weit ich verstanden habe aber nur die Namen des Elements, nicht die Elemente selber. Daher weiß ich momentan nicht wie ich, bei einem nicht eindeutigen Namen, das richtige Element in einem einstufigen GeoSet identifizieren kann.
Ich wollte eigentlich in der Lage sein ein GeoSet umzusortieren, u.a. abhängig vom Elementtyp und Position innerhalb des GeoSets

Mein Beispiel-GeoSet ist sicher in der Praxis sträflicher Unsinn, aber shit happens.

Gruß
Joseph

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 01. Sep. 2015 13: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 Nur für Joseph.Metzler 10 Unities + Antwort hilfreich

Hallo Joseph,

Zitat:
Ich wollte eigentlich in der Lage sein ein GeoSet umzusortieren, u.a. abhängig vom Elementtyp und Position innerhalb des GeoSets


Warum sollte das nicht gehen?
Lass eine Suche mit dem Namen laufen. Anschliessend frägst für jedes gefundene Element den Typ ab. Wenn der passt, sortieren.
Um Deinem nächsten Einwand vorzubeugen:
Falls innerhalb desselben Sets zwei Elemente gleichen Typs denselben Namen besitzen, so war das dem Anwender offenbar egal. Dann kann's Dir auch egal sein.

Zitat:
shit happens

No, it doesn't.
Das System - die Catia - vergibt Namen für Drahtgeometrie innerhalb eines Sets nicht doppelt.
Das macht der vor dem Rechner. Dazu braucht's eine hoffentlich intelligente absichtliche Handlung des Anwenders.
Bei den Sets kann's zu vom System vergebenen doppelten Namen kommen. Dazu siehe oben.

Ich kann mir zwei Fälle vorstellen bei denen ich ein Set nachträglich sortieren würde.

- Skelett-Modell, Set=Planes: Ich hab die Angewohnheit Planes nach ihrem Wert umzubenennen. Nachdem die Ebenen gewöhlich nicht in alphabetischer Reihenfolge auftreten, muss ich nachträglich sortieren.

- Sets innerhalb von Sets: Bei grösseren Flächenbauteilen mit vielen Sets. Aber gewöhnlich ist die entstehungsgeschichtliche Reihenfolge für's Verständnis besser. Die Reihenfolge der Drahtelemente innerhalb der Sets ist gewöhnlich egal. Das letzte Element (oft: Join=Ergebnis des Sets) ist gewöhnlich das mit dem weiter gearbeitet wird. Das benenn' ich dann auch um.

Deshalb nochmal die Frage: Wozu das ganze?

Tschau,
Joe

------------------
The problem with the world is that the intelligent people are full of doubts, while the stupid ones are full of confidence.
~Charles Bukowski

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