Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bedingungen im Strukturbaum entsprechend Komponenten automatisch in Sets verschieben

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:  Bedingungen im Strukturbaum entsprechend Komponenten automatisch in Sets verschieben (2953 mal gelesen)
ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 13. Mrz. 2013 16:14    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 zusammen,

derzeit versuche ich, ein Makro zu erstellen, welches mir innerhalb der ersten Ebene einer Struktur die Bedingungen entsprechend der Komponenten in benannte Sets sortiert.

Im Detail soll das Ganze wie folgt ablaufen:

1. Unterscheidung, ob das aktuell aktive Dokument eine Struktur oder ein Einzelteil ist.

- Wenn es ein Einzelteil ist: Abbruch des Makros mit Ausgabe einer Fehlermeldung.
- Wenn es eine Struktur ist: Start des Makros

2. Ausführen eines externen Makros (exe-file)

3. "[Part Number] + [Revision] + [Description]" der Komponenten auslesen und in ein Array schreiben. Ist diese Komponente mehr als einmal in der Struktur soll die Komponete nur einmal aufgenommen werden.

4. Erstellen jeweils eines Sets mit der Benennung "[Part Number] + [Revision] + [Description]", sofern eines der Sets schon vorhanden ist, soll es logischerweise nicht nocheinmal erstellt werden.

5. Alle Bedingungen der Komponeten und ihrer Instanzen sollen entsprechend der bei der Bedingungserstellung zuerst ausgewählten Komponete/Instanz in das entsprechende Set verschoben werden.


Punkt 1 und Punkt 2 habe ich erfolgreich hinbekommen.

Ab Punkt 3 bin ich jedoch mit meinem Latein (oder besser meinen CATScript Kenntnissen) am Ende.
Bereits meine Versuche, mit Hilfe des Makro Rekorders auf einen vernünftigen Ansatz zu kommen scheiterten alle.

Kann mir einer von Euch bitte ein paar Tipps geben, wie ich zu meinem gewünschten Ergebnis komme?

Vielen Dank

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 14. Mrz. 2013 10:53    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 ashneel 10 Unities + Antwort hilfreich

Hallo ashneel,

ich empfehle Dir meinen Artikel http://ww3.cad.de/foren/ubb/Forum137/HTML/005045.shtml als Grundlage für meinen Vorschlag.
Nun gehst Du die Produktsturktur im CATIA durch, also Product.Products, etc. sollte nicht die Hürde sein.

Für jedes Produkt und Part fragst Du dann nach den Eigenschaften .Name, Instancename, etc.. Einige Eigenschaften verstecken sich auch in den .Properties eines Produrkts oder Parts.

Hast Du ein Element, so nimmst Du die Dictionary-Klasse oder eine Collection. Der fügst Du über .Add das Element hinzu. Als Key vergibst Du den Namen. Da jeder Key nur einmal existieren kann / darf, wird das Dictionary oder die Collection das erneute Hinzufügen eines Elements ablehnen. Am Ende hast Du ein Objekt, welches ein Array Deiner gesuchten Daten enthält. ich empfehle Dir eine eigene Klasse für Deine zu sammelnden Daten zu schreiben, so sind sie einfacher zu handeln. Die Objekte der Klasse dann einfach dem Dictionary hinzufügen und später darauf zurückgreifen.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 14. Mrz. 2013 11: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

Hallo Lila,

vielen Dank für Deinen Denkanstoß. Ich werde versuchen, das Ganze nachzuvollziehen. Allerdings habe ich nach dem ersten groben Überfliegen des Grundlagenartikels meine Zweifel, ob ich das auf diese Weise hinbekomme, denn meine Programmierkenntnisse beschränken sich auf ein Semester C/C++ und das ist schon ein Weilchen her 

Schönen Gruß

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 14. Mrz. 2013 12:04    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 ashneel 10 Unities + Antwort hilfreich

Moin moin,

bin noch ein wenig durcheinander vom Zahnarztbetäubung, was meinst du mit Sets? Meinst du das erstellen von Gruppen?

Unter C:\...\catia\v5r18\win_b64\code\bin\ findest du die V5Automation.chm Datei. Hier sind viele Funktionen und wie man sie per Makro steuert beschrieben. Das hilft am anfang ungemein.

Den Inhalt eines products bekommst du mit oProd.Products zusehen.
Ich würde für 3. So etwas vorschlagen.

Code:

for each oChild in oProduct.Products
  if oDict.Exists(oChild.Partnumber) = False Then
      oDict.Add oChild.Partnumber, oChild.Revision & ";" & oChild.DescriptionRef
  end if
next

damit bekommst du alle unterschiedlichen parts in einem Dictionary

nun muss du nur noch für jedes oDict Ojekt ein "SET" erzeugen. 

noch mal

Code:
for each oChild in oProduct.Products
und alle gefundenen kinder in den entsprechenden SET verschieben.

Probier mal. Wenn du nicht weiterkommst poste dein vorhadenen code und dir wird bestimmt weitergeholfen.

Gruß,
DasDon

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 14. Mrz. 2013 14:31    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


Clipboard01.jpg

 
Mahlzeit,

also mit sets meine ich die "Unterordner", welche sich innerhalb des Strukturbaums hierachrisch unter den Bedingungen erzeugen lassen. Habe einen Screenshot angehängt.

Noch eine grundlegende Frage vorneweg. Ich habe das Makro in CATScript begonnen. Macht es in diesem Anwendungsfall Sinn, eher MS VBScript zu verwenden? Deine Codezeilen scheinen mir in VB geschrieben zu sein.

Momentan sieht derzeit so aus:

Sub CATMain()

'Unterscheidung Product Part -------------------------
DName = CATIA.ActiveDocument.FullName

'Product ---------------------------------------------
If InStr(DName, "CATProduct") Then

MsgBox ("Document is handled as Product")

'Run Converter  ------------------------


Dim sMessage

exepath = "D:\macro\"
rollingpath = exepath + "converter"
   
s = rollingpath
set sh = CreateObject("WScript.Shell")
sh.run s, 1, true


Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument


Set ListeAS2 = productDocument1.Selection

'Update All ------------------------------------------


Dim product1 As Product
Set product1 = productDocument1.Product

product1.ApplyWorkMode DESIGN_MODE

'product1.Update

'[Part Number] + [Revision] + [Description] -> "Name" auslesen und in Liste speichern

'Sets "Name" hinzufügen, wenn vorhanden nicht neu erstellen

'Bedingungen in entsprechende Sets sortieren


'PART ------------------------------------------------

Else

MsgBox ("Document is not a Product. Process aborted.")

end if

End Sub

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 14. Mrz. 2013 14: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 ashneel 10 Unities + Antwort hilfreich

Hallo ashneel,

VBScript macht keinen Sinn, da Du so die CATIA-Funktionalität verlieren würdest. Sofern es aber nicht unter UNIX laufen muss, macht es immer sinn das Ganze in CATVBA abzubilden, da der Editor um Welten komfortabler ist und vor allem Debugger und Syntax-Highlighting hat.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 14. Mrz. 2013 14: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 ashneel 10 Unities + Antwort hilfreich

Moin moin,
in der Tat sind meine Zeilen als CATScript geschrieben. Ich arbeite in eine Firma wo die macros auf unix maschinen auch laufen müssen und habe es deshalb mir so angewöhnt.
CATVBA würde ich dir eigentlich auch empfehlen aus den gleichen Gründen wie HoBLila.

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 04. Apr. 2013 11: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

Mahlzeit,

nach langer Zeit habe ich mal wieder Zeit gefunden, mich um das Thema zu kümmern.
Etwas bin ich weiter gekommen, allerdings bin ich – wie zu erwarten war – auf ein paar Fragen gestoßen:

1. Die Definition von oChild
Ich verwende momentan dim oChild As Part und set oChild = partDocument.part
Das scheint nicht zu stimmen, denn es funktioniert nicht.

2. Ich konnte in der  V5automation.chm keinen Hinweis finden, wie man ein Set für Constraints erzeugt, nur wie man ein geometrisches Set erzeugt. Der Makrorecorder half mir in diesem Fall auch nicht weiter, denn er zeichnet nichts auf, wenn ich so ein Set manuell erzeuge.

3. Zudem bin ich mir nicht ganz sicher, ob ich oDict und seine Objekte richtig definiert habe.

Anbei der abgespeckte Code, ohne den Teil, der bereits funktioniert.
Meinungen? Hinweise?

Code:
Sub CATMain()

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim oProduct As Product
Set oProduct = productDocument1.Product

oProduct.ApplyWorkMode DESIGN_MODE

'[Part Number] + [Revision] + [Description] -> "Name" auslesen und in Liste speichern

dim oChild As Part
set oChild = partDocument.Part

dim oDict As dictionary
dim itemPN, itemREV, itemDES
set itemPN = oChild.Partnumber
set itemREV = oChild.Revision
set itemDES = oChild.DescriptionRef


for each oChild in oProduct.Products
  if oDict.Exists(oChild.Partnumber) = False Then
      oDict.Add oChild.Partnumber, oChild.Revision & ";" & oChild.DescriptionRef
  end if
next

'Sets "Name" hinzufügen, wenn vorhanden nicht neu erstellen

for each itemPN in oDict
'erstelle Constraint Set (oChild.Partnumber&_&oChild.Revision&_&oChild.DescriptionRef)
next


'Bedingungen in entsprechende Sets sortieren
End Sub


Vielen Dank!

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: 04. Apr. 2013 11: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 ashneel 10 Unities + Antwort hilfreich

Servus
Wo ist die Variable "partDocument" definiert und zugewiesen?
Ich befürchte du kannst ein Bedingungset nicht per Makro erzeugen (Objektauflösung sowie Selektion liefern nichts brauchbaren zurück)

Gruß
Bernd

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

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 04. Apr. 2013 12: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

Servus,

zu partDocument: zugebenermaßen, gar nicht. Hab ich glatt vergessen 
Aber selbst wenn ich diese Variable definiere, bekomme ich die Fehlermeldung "Das Objekt unterstützt die Eigenschaft oder Methode nicht" drum scheint mir die Definition von oChild As Part als falsch.

Hm... wenn es wirklich nicht möglich ist, solche Sets per Makro zu erzeugen, wäre das äußerst schlecht, würde aber die Geschichte mit dem Makrorecorder erklären...

Schönen Gruß

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: 04. Apr. 2013 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 ashneel 10 Unities + Antwort hilfreich

Servus
Was hast du denn dem PartDocument zugewiesen? Was "sagt" das Watchfenster (in VBA) zu diesem Objekt? Was passiert wenn in der Baugruppe eine Unterbaugruppe verbaut ist? ...

Gruß
Bernd

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

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

ashneel
Mitglied



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

Beiträge: 21
Registriert: 08.10.2012

HP Z420
Intel Xeon E5-1620
Quadro K2000
16GB RAM
Win7 x64
CATIA V5 R19

erstellt am: 05. Apr. 2013 07:21    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


sort_constraints.zip


error.JPG

 
Guten Morgen,

der code:

Code:
Sub CATMain()

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim oProduct As Product
Set oProduct = productDocument1.Product

oProduct.ApplyWorkMode DESIGN_MODE

'[Part Number] + [Revision] + [Description] -> "Name" auslesen und in Liste speichern

dim oChild As Part
set oChild = oProduct.Part

dim oDict As dictionary
dim itemPN, itemREV, itemDES
set itemPN = oChild.Partnumber
set itemREV = oChild.Revision
set itemDES = oChild.DescriptionRef


for each oChild in oProduct.Products
  if oDict.Exists(oChild.Partnumber) = False Then
      oDict.Add oChild.Partnumber, oChild.Revision & ";" & oChild.DescriptionRef
  end if
next

'Sets "Name" hinzufügen, wenn vorhanden nicht neu erstellen

for each itemPN in oDict
'erstelle Constraint Set (oChild.Partnumber&_&oChild.Revision&_&oChild.DescriptionRef)
next


'Bedingungen in entsprechende Sets sortieren
End Sub


Testbaugruppe und Fehlermeldung sind im Anhang

Aber wie gesagt, wenn es nicht möglich ist die sets für Bedinungen per Makro zu erstellen, bringt mir das ganze leider herzlich wenig.

Schönen Gruß

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 05. Apr. 2013 08:53    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 ashneel 10 Unities + Antwort hilfreich

moin moin,

das kann auch so nicht gehen. oProduct deklarierst du als CATIA.ActiveDocument.Product dann versuchst du oChild als oProduct.Part zu deklarieren. Leider hat aber oProduct nicht die Methoded oder die eigenschaft Part!
Das ist es auch was dir die Fehlermeldung sagt.


Schaue dir lieber mal die V5Automation.chm an um zu sehen was du mit einen Product mnachen kannst.

Gruß,
DasDon

PS: nach genauem hinschauen sieht alles etwas merkwürdig aus! Ich schaue mir es mal genau an und poste bald was dazu.

[Diese Nachricht wurde von DasDon am 05. Apr. 2013 editiert.]

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 05. Apr. 2013 12: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 Nur für ashneel 10 Unities + Antwort hilfreich

Sub CATMain()

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim oProduct As Product
Set oProduct = productDocument1.Product

oProduct.ApplyWorkMode DESIGN_MODE

'[Part Number] + [Revision] + [Description] -> "Name" auslesen und in Liste speichern

'dim oChild As Part
'set oChild = oProduct.Part
'###wie gesagt. geht nicht. Parts die in einem Produkt aufgehängt sind, werden trotzdem als Product deklariert.
'###CATIA.ActiveDocument.Product.Products (die Gruppe Kinder des Produkts.)
'###Returns the collection of products contained in the current product.
'-->
Dim oChild As Product


'im oDict As dictionary
'###ein Dictionary Object muss erstellt werden denn als Object exestiert es nicht in der CATIA Biliothek
'###(ich glaube das war die erklärung  korrigiere mich wenn es müll ist, bin auch anfänger)
'### diese Methode funktioniert nicht auf UNIX OS!
Set oDict = CreateObject("Scripting.Dictionary")

'dim itemPN, itemREV, itemDES
'###setzte die variablen als Strings
'-->
Dim itemPN As String
Dim itemREV As String
Dim itemDES As String

'###kann nicht funktionieren. oChild ist noch nichts! ausserdem wäre hier nur die information von einem Kind enthalten.
'du möchstest jedoch die information von allen kinder. das tut die for each schleife weiter unten.
'set itemPN = oChild.Partnumber
'set itemREV = oChild.Revision
'set itemDES = oChild.DescriptionRef


For Each oChild In oProduct.Products
  If oDict.Exists(oChild.PartNumber) = False Then
      oDict.Add oChild.PartNumber, oChild.Revision & ";" & oChild.DescriptionRef
  End If
Next


'Sets "Name" hinzufügen, wenn vorhanden nicht neu erstellen
'###bei einer for each schleife muss das "empfangsobjekt" von type OBJECKT oder VARIANT sein, nicht vom type string!
'###wir nehmen hier Variant
Dim otmp As Variant
Dim oCol 'As Collection
'For Each itemPN In oDict
For Each otmp In oDict
    'erstelle Constraint Set (oChild.Partnumber&_&oChild.Revision&_&oChild.DescriptionRef)
    Set oCol = oProduct.Connections("CATIAConstraints")
    '### hier finde ich einfach keine weg SETS zu erzeugenNext
    '###im WATCH-Fenster wird für oCol die Constraints angezeigt, jedoch werden die, die im Set sind,
    '###genau so dargestellt wie die ohne set. PARENT ist auch identisch.
Next
'Bedingungen in entsprechende Sets sortieren
End Sub

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