Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Sehr langsamer Paste Vorgang

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:  Sehr langsamer Paste Vorgang (1417 mal gelesen)
Jannis1988
Mitglied



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

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 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,
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


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. Sep. 2012 09:27    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 Jannis1988 10 Unities + Antwort hilfreich

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



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

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 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 Jannis1988 10 Unities + Antwort hilfreich

Hallo Jannis,
versuch es mal hiermit...

Code:

HSOSynchronized = false
...
"Code"
...
HSOSynchronized = True

Wichtig ist nur, dass "HSOSynchronized" auch im Fehlerfalle wieder aktiviert wird! ...und unter SP08 für R19 brauchst du Hotfix06, damit die Schnittstelle deswegen nicht abschmiert.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Jannis1988
Mitglied



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

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 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


Properties.bmp.jpg

 
@ 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


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. Sep. 2012 10: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 Jannis1988 10 Unities + Antwort hilfreich

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



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

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 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


Parameter.jpg

 
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


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. Sep. 2012 12: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 Jannis1988 10 Unities + Antwort hilfreich

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



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

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 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

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

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