Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Einzelne Parts über hinterlegte Eigenschaften per Makro/Skript abfragen u. markieren

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:  Einzelne Parts über hinterlegte Eigenschaften per Makro/Skript abfragen u. markieren (2221 mal gelesen)
bamigon
Mitglied
TZ

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

Beiträge: 6
Registriert: 09.02.2012

CATIA V5 R19 SP03
WinXP SP2
AMD 3800+ (2,4GHz)
4GB<P>bzw.<P>CATIA V5 R17
Win7 SP1 (64-Bit)
Intel i3 (2,4GHz)
4GB

erstellt am: 09. Feb. 2012 14: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


Struktur.JPG

 
Hallo zusammen,

ich bin neu hier, somit erst Mal "HALLO".
Ich habe aber schon oft sehr hilfreiche Tipps von euch hier bekommen. Nur diesmal konnte ich trotz langem Suchen nichts finden, daher stelle ich diese Frage.

Zu meinem "Problem":
Ich habe eine Baugruppe, in der weitere Unterbaugruppen eingebaut sind. In diesen befinden sich zick weitere Parts. Nun soll ich, wenn umsetzbar, alle Normteile in ein Auswahlset mit der Bezeichnung "Normteile" einfügen bzw. ein Auswahlset mit den ganzen Normteilen erstellen.

Zur Info:
Ich habe in den Parts einen Parameter mit der Bezeichnung "Material", dort steht Material=Normalie
--> siehe Bild im Anhang

Wäre es generell möglich, diesen Parameter abzufragen und zu überprüfen, ob auch Normalie drinsteht?

Ich habe mir das so überlegt:

- Skript/Makro starten
- in allen Parts überprüfen, ob im Parameter "Material" die Bezeichnung "Normalie" steht
- wenn ja, dann markieren
- wenn nein, dann zum nächsten
- erstellen eines Auswahlsets mit der Bezeichnung "Normalie"

Ist das überhaupt möglich? Oder auf eine andere Art und Weise nur die Normalien zu markieren o. ä.?
Ich wäre schon zufrieden, wenn ich nur alle Normteile markiert hätte und dann manuell das Auswahlset erstellen müsste. Damit wäre mir schon sehr geholfen 

Vielen Dank schon Mal im Voraus für eure Bemühungen!!!

Schöne Grüße,
bamigon

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: 09. Feb. 2012 23:46    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 bamigon 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum. Bitte Systeminfo ausfüllen.
Prinzipiell könnte der Ablauf den du dir ausgedacht hast funktionieren.
Allerdings zeigt mir die Forensuche, dann noch keiner geschafft hat ein Auswahlset per Makro zu erzeugen.
Was ggf gehen könnte: ein Makro selektiert die entsprechenden Normteile und der User erstellt dann mit dieser Selektion das Auswahlset (von Hand)
Der grobe Ablauf:
- Schleife über alle Products der Baugruppe
- Typunterscheidung: bei Parts nach dem Parameter "Material" suchen
- wenn Wert der Parameters gleich "Normalie" Part (bzw Insatanz) der Selektion hinzufügen

Anbei ein ungetestetes Beispiel:

Code:
Sub SelectNormteilParts()
Dim oDoc As ProductDocument
Dim doc As Document
Dim osel As Selection
Dim oProduct As Product
Dim i As Integer

Set oDoc = CATIA.ActiveDocument
Set osel = oDoc.Selection

osel.Clear

For i = 1 To oDoc.Product.Products.Count
    Set oProduct = oDoc.Product.Products.Item(i)
    If TypeName(oProduct.ReferenceProduct.Parent) = "PartDocument" Then
        On Error Resume Next
        If oProduct.Parameters.Item("Material").ValueAsString = "Normalie" Then
            osel.Add oProduct
        End If
        Err.Clear
    End If
Next

End Sub


Gruß
Bernd

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

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 09. Feb. 2012 23:46    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 bamigon 10 Unities + Antwort hilfreich

Hallo bamigon,

aus meiner Sicht sollte das funktionieren. Prinzipiell würde ich das so machen:

1.) rekursives Durchsuchen der Struktur bis zum Part
2.) Prüfen auf Parameter "Material" mit Inhalt "Normalie"
3.) wenn gefunden, dann Erweitern der Auswahl (Selektion) mit dem Part
4.) nach Durchsuchen der Struktur Erstellen eines Auswahlsets und einfügen der in der Auswahl befindlichen Parts

Da ich ähnliches schon gemacht habe, sehe ich prinzipiell keine Probleme. Du solltest nur beachten, dass das Auswahlset, soweit ich mich erinnere, "absolut" ist, d.h. Du keine untergeordneten Auswahlsets (Auswahlsets in untergeordneten Produkten bzw. Parts) siehst. Das bedeutet, wenn Du Dein Produkt in ein anderes Produkt einbaust, siehst Du das Auswahlset nicht mehr.


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

bamigon
Mitglied
TZ

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

Beiträge: 6
Registriert: 09.02.2012

CATIA V5 R19 SP03
WinXP SP2
AMD 3800+ (2,4GHz)
4GB<P>bzw.<P>CATIA V5 R17
Win7 SP1 (64-Bit)
Intel i3 (2,4GHz)
4GB

erstellt am: 10. Feb. 2012 08: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


Struktur_02.JPG

 
Guten Morgen,

erstmal Danke für die schnellen Antworten!

@bgrittmann: Systeminformationen sind ausgefüllt. Ich habe den Code getestet, aber es tut sich nichts. Die Normteile werden nicht selektiert  Von Ablauf her stimme ich dir Voll und Ganz zu. Das Erstellen der Auswahlsets per Hand, wäre vollkommen in Ordnung. Sind ja nur paar Klicks. Es sollte eben nur die nervige Auswahl der Normteile wegfallen.

@Lusilnie: Jope, so sollte das alles funktionieren  Hättest du mir dafür vielleicht auch den passenden Code? Wäre dir sehr verbunden 

Ich habe noch Mal ein Bild des Strukturbaums angefügt. So sieht die Struktur generell aus. Vielleicht hilft das weiter?!

Schöne Grüße,
bamigon

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: 10. Feb. 2012 09:38    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 bamigon 10 Unities + Antwort hilfreich

Servus
Sind die Namen der Paramter und der Wert korrekt? Hast du in deinem RootProduct direkt Normalien verbaut? Bei meinem Script fehlt die Rekursion, mein Script durchsucht nur die erste Ebene.

Gruß
Bernd

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

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

bamigon
Mitglied
TZ

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

Beiträge: 6
Registriert: 09.02.2012

CATIA V5 R19 SP03
WinXP SP2
AMD 3800+ (2,4GHz)
4GB<P>bzw.<P>CATIA V5 R17
Win7 SP1 (64-Bit)
Intel i3 (2,4GHz)
4GB

erstellt am: 10. Feb. 2012 10:06    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,

also in meinem RootProduct sind keine Normteile verbaut. Dort befinden sich nur die Products "Referenz", "Unterteil", "Oberteil"! Im Unter- und Oberteil werden dann jeweils die Parts, auch die Normalien, verbaut. Z. T. sind auch in dem Product "Unterteil" weitere Product verbaut, wie z.B. "Abheber". In diesem werden dann auch Normteile verbaut.
Das bedeutet, dass wenn nur die erste Ebene durchsucht wird, es so für diesen Fall nichts bringt.

Welche Parameternamen und welche Werte?

Zur Info, ich stehe erst am "Anfang meiner Karriere" was das Programmieren betrifft, daher bitte ich Fragen, die vielleicht läppisch erscheinen, Ernst zu nehmen  Danke!!!

Wäre es möglich, dass du mir diese Rekursion noch in deinen Code einbaust? Wäre dir echt dankbar 

Schöne Grüße,
bastian

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 14. Feb. 2012 01: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 bamigon 10 Unities + Antwort hilfreich

Hallo bamigon,

natürlich könnte ich Dir das Script schreiben, doch dass ist weder im Interesse dieses Forums, noch in Deinen! Du willst ja an der Aufgabe wachsen und das Forum dient der Hilfestellung!

Um zu sehen, wie die rekursive Abarbeitung erfolgt, kannst Du Dir die Sub-Routine "GetAbsPosition" von Script "DMUpspastekeepabsoluteposition.CATScript" aus der "V5Automation.chm" im Installations-Verzeichnis von CATIA ansehen. Wenn Du mit diesem Beispiel das Script von "bgrittmann" "erweiterst", solltest Du Deinem Ziel näher kommen!

Und falls Du dann doch spezielle Fragen hast: Du weißt ja, wo Du uns findest...


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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