Autor
|
Thema: Sehr langsamer Paste Vorgang (1417 mal gelesen)
|
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 10. Sep. 2012 09:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe ein kleineres Problem mit dem selection.paste Vorgang. Zur Beschreibung des Codes: Fenster 1: Gesamtes Assembly mit vielen enthalten Parts Fenster 2: Leere Struktur - in diese werden die gewählten Parts aus Fenster 1 eingefügt - Ausgeblendete Parts werden im Fenster 1 gesucht - Falls welche vorhanden sind werden diese kopiert - Es wird ins Fenster 2 gewechselt - Es wird nach einem Parameter namens Nomenclature_DE mittels einer Schleife gesucht (werden sehr viele Parameter, da die kopierten Parts nacheinander eingefügt werden und die Anzahl erheblich steigt) - Wenn dieser gleichzeitig die Bezeichnung XYZ hat, wird das Parent davon ausgelesen - in meinem Fall eine Sachnummer - Die Sachnummer wird wiederum gesucht und angewählt - Die kopierten Parts werden eingefügt Der Einfügevorgang benötigt in meinem Fall sehr viel Zeit, hat jemand Ideen woran das liegen kann? Händisch benötigt das Einfügen nur ein paar Sekunden. Hoffe die Erklärung ist einigermaßen Verständlich.
Danke für alle Tipps, Ideen. __CODE AUSZUG_________________________________ Set liste1 = CATIA.ActiveDocument.Selection liste1.Clear liste1.Search "'Assembly Design'.Part.Visibility=Invisible;from" 'Suche nach allen ausgeblendeten Parts If (liste1.Count2 > 0) Then 'Abfrage ob etwas Ausgeblendetes vorhanden ist liste1.Copy 'wenn etwas ausgeblendet ist - werden die Parts kopiert specsAndGeomWindow2.Activate 'Fenster mit leerer LCA Template wird aktiviert Set oActDoc = CATIA.ActiveDocument Set Product = oActDoc.Product.Products 'Deklaration For I = 1 To oActDoc.Product.Parameters.Count 'Schleife um die Parameter zu ermitteln If Right(oActDoc.Product.Parameters.Item(I).Name, 15) = "Nomenclature_DE" Then 'Abfrage wenn ein Parameter den Namen 'Nomenclature_DE' hat If oActDoc.Product.Parameters.Item(I).Value = "01 Bandauflage" Then 'Abfrage ob der Wert der Station mit dem Parameter übereinstimmt Dummynummer = oActDoc.Product.Parameters.Item(I).Parent.Parent.Name 'Das Parent der Nomenclature_DE wird in eine Variable übergeben Set productDocument1 = CATIA.ActiveDocument Set selection1 = productDocument1.Selection 'Deklaration selection1.Clear selection1.Search "'Assembly Design'.Product.'Part Number'='" & Dummynummer & "'" & ";all" 'Suchkriterium der Vorher übergebenen Variable - Dummynummer selection1.Paste 'Einfügen der in Liste1 gesuchten Parts specsAndGeomWindow1.Activate 'Fenster wird wieder gewechselt Exit For 'Nach Einfügevorgang wird die Schleife verlassen End If
End If Next End If ------------------ http://www.xing.com/profile/Jannis_Kumelis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Sep. 2012 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für Jannis1988
Servus Also ganz komm ich nicht mit deinem Makro klar: - Du suchst Parts die ausgeblendet sind und kopierst diese, fügst diese aber nicht in dein zweites Product ein. - dann suchst du eine Parameter (ggf über das ansprechen über den Namen schneller): kann dieser mehrfach vorkommen? - aus dem gesuchten Parameter er, mittelst du das Part das du aus dem ersten Product kopieren möchtest Könntest du nicht: - ausgeblendet Teil suchen - die Selection durcharbeiten, und Prüfen ob der Parameter vorhanden ist (zb das das richte Teil ist) - falls nicht aus der Selection entfernen - Kopieren - im andern Product einfügen Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2012 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Jannis1988
|
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 10. Sep. 2012 10:09 <-- editieren / zitieren --> Unities abgeben:
@ Bernd: - Die Parts im Fenster 1 werden gesucht (in meinem Fall sind das Gruppen die nacheinander aus- und eingeblendet werden - diese Gruppen enthalten Parts) - Nach dem eine Gruppe ausgeblendet wurde werden die enthaltenen Parts kopiert - Es erfolgt ein Wechsel in das Fenster 2 - Im Fenster 2 ist eine leere Product Struktur (Die Products haben immer unterschiedliche Namen welche vom System automatisch generiert werden. Mir ist es nur möglich diese durch die Added Properties anzusprechen, in meinem Fall die Bezeichnung Nomenclature_DE. Nomenclature_DE kann ich nicht direkt ansprechen da hierfür immer eine unterschiedliche Item(I) Bezeichnung hinterlegt ist?!) Anbei Screenshot - Es erfolgt ein Abgleich ob die Bezeichnung, im Beispiel "01 Bandauflage" übereinstimmt. Wenn Ja, dann wird das Parent ermittelt und durch die Parent Bezeichnung (Dummynummer) wird das leere Product im Fenster 2 angesprochen. - die kopierten Parts aus Fenster 1 werden in das leere Product in Fenster 2 eingefügt. @Rick: Hat leider keine sichtbare Verbesserung erbracht. ------------------ http://www.xing.com/profile/Jannis_Kumelis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Sep. 2012 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für Jannis1988
Servus Auf einen Parameter kannst du auch direkt mit parameter.item("BlaBla) zugreifen (Achtung Fehlerbehandlung). (siehe auch Forensuche) Was ich nicht verstehe, warum kopierst du die Teile fügst diese aber nicht ein, sondern einzeln viel später. Kannst du nicht zuerst Testen ob der Parameter den richtigen Wert hat, und dann erst kopieren? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 10. Sep. 2012 10:31 <-- editieren / zitieren --> Unities abgeben:
Anbei ein Screenshot von der aktuellen Situation. Da ich eine so hohe Anzahl an Parameter habe (im Screenshot 38123 Stück), hat meine Schleife einen viel zu großen Umfang. Hier entsteht der lange Ladevorgang. Entschuldige meine schlechte Erklärung. Grüße Jannis
[Diese Nachricht wurde von Jannis1988 am 10. Sep. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Sep. 2012 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für Jannis1988
Servus Könntet du nicht einfach den Parameter suchen lassen, anstatt mit der Schleife alle abzuarbeiten? zB (nur grober Code) Code: 'Parameter per Suche ermitteln selection1.Search "(Name="Nomenclature_DE" & CATKnowledgeSearch.InternalParameter),all" for i = 1 to selection1.count2 'Wert mit Soll-Wertvergleichen if selection1.item(i).Value = "01 Bandauflage" then 'Zielproduct ermitteln Zielproduct = selection1.item(i).Parent.Parent 'Selection aufheben und Zielproduct selektieren selection1.clear selection1. add Zielproduct selection.paste end if next
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 11. Sep. 2012 10:54 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hilfe Bernd, hat mich auf den richtigen Weg gebracht. Meine Lösung ist nun eine Pufferliste zu erstellen, die alle leeren Produkte aus der Struktur zieht und die Nomenclature_DE abgreift. Dann kann ich ganz einfach auf die Liste zugreifen und die jeweiligen Bezeichnungen herausziehen. Dadurch muss ich mich nicht mit den 30000 Parametern rumschlagen, sondern nur mit einer kleinen Pufferung von ca 100 Parametern. Nochmals Danke! Grüße Jannis ------------------ http://www.xing.com/profile/Jannis_Kumelis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |