Autor
|
Thema: Performance Makro (4042 mal gelesen)
|
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 04. Aug. 2011 10:35 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich würde die Performance meiner Makros gerne steigern. Nun habe ich bereits rausgefunden, dass hierfür die Befehle Catia.RefreshDisplay = False und teilweise Catia.Interactive = False (Was immer dieser auch macht) verwendet werden. Problem bei der Sache: Ich steuere mein Makro aus Excel VBA und damit zeigen diese Befehle keine Wirkung. Dieses Problem wird auch auf anderen Seiten bereits geschildert. Nur keine Lösung. Gibt es hierfür denn überhaupt eine? Ich habe auch versucht im VBA Code ein .catvbs Makro zu starten welches obige Befehle enthält. Das Makro wird zwar gestartert aber das Display wird dennoch stetig aktualisiert. Wäre schön, wenn es hierfür doch noch eine Lösung gebe, weil gerade ein Makro, was z.B. sehr viele Körper oder auch nur Punkte oder dergleichen anlegt von der Laufzeit her völllig miserabel ist. Vielen Dank und viele Grüße Klaus 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: 04. Aug. 2011 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Servus Vielleicht kannst du dich mit "CATIA.visible = false" (am Ende oder im Fehlerfall wieder "true" setzen) behelfen (falls dies von Excel aus geht). Hast du oft ein update des Parts im Code eingebaut. Viellicht kannst du dir einige sparen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 04. Aug. 2011 11:10 <-- editieren / zitieren --> Unities abgeben:
CATIA.visible = false funktioniert zwar, bringt jedoch bzgl. der Performance nichts. Die Update Befehle sind schon rar gesetzt, sind jedoch auch nicht in großen Umfang für die lange Laufzeit verantwortlich. Wie gesgat kostet vor allem das Anlegen von Körpern Zeit. Man kann dann sogar "zugucken" wie Catia bei jedem weiteren Körper langsamer wird... Trotzdem Danke Klaus 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: 04. Aug. 2011 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Servus arbeitest du mit vielen Selections? Dann könne ggf (ab R19??) CATIA.HSOSynchronized=false helfen. Gruß Bernd PS: Bitte Systeminfo ausfüllen ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 04. Aug. 2011 13:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, leider bringt dies auch keine Verbesserung. Was soll der Befehl überhaupt leisten? Zum System: Ich arbeite mit CatiaV5 R19 SP Windows XP SP3 Danke und Gruß Klaus P.S.: Hat eigentlich überhaupt jemand ein Makro wo der Befehl Catia.RefreshDisplay funktioniert? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 04. Aug. 2011 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Das RefreshDisplay benötigt nen modalen Dialog, den kannste von außen aber schlecht aufmachen. Meist kann man aber auch mit anderen Mitteln seinen Code ordentlich aufmöbeln. ;-) Hierzu gibt's jedoch keine pauschalen Antowrten, zumal Du ja auch nichts konkretes sagst, sondern nur Erfahrung. Unter 64bit sind auf Grund der Architektur VBA's langsamer, das bitte ich auch zu bedenken und jeder Zugriff über die API-Schnittstelle kostet sehr viel Zeit, also die Aufrufe irgendwie vereinfachen. Bei Excel mache ich das z.B. indem ich alles in ein Array schreibe und das Array einmal an's Excel sende, statt für jede Zelle einzeln. Bei Dir scheint es aber einfach an der Datenmenge zu liegen, so dass CATIA allgemein langsam ist, weshalb das Makro viel warten muss, hier sollte jedoch ein Visbile = False und HSOSyncronise schon etwas bringen. Wie misst Du denn, ob es etwas bringt, oder nicht? HSO = Highlighted Selected Objects, ist übrigens nicht das einzige Element in der Selection, gibt da noch so ein paar Trigramme. :-) Was spricht dagegen, wenn es schon um Performance geht, das Makro aus CATIA zu starten, ohne CATIA zu arbeiten, oder als CAA zu verwenden? ------------------ 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 |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 04. Aug. 2011 16:20 <-- editieren / zitieren --> Unities abgeben:
Hallo, messen du ich das ganze einfach mit der Stoppuhr. Gleiche Aufgabe - gleiche Zeit. Wie meinst du das Makro in Catia zu starten? Ich kann das Makro auch in der VBA Umgebung von Catia implementieren und ohne Excel arbeiten. Der Befehl Catia.RefreshDisplay = false funktioniert in "Catia VBA" aber auch nicht. Alle userformen werden dabei bereits modal geöffnet. Um das ganze als caa zu verwenden braucht man ja wieder die caa Programierumgebung. Da habe ich weder die Lizenz noch Kenntnisse bzgl. caa. Ich glaube auch, dass Catia an sich einfach zu langsam ist. Aber wie mache ich es schneller? Wenn es hilft: Es werden bei meinem Makro in Catia sehr viele Grundkörper (Quader, Zylinder) modelliert. Die entsprechenden Maße werden dabei einer Textdatei entnommen. Aus Excel wird das ganze nur wegen des Nutzerkomforts gestartet. Und je mehr Grundkörper angelegt werden umso langsamer wird das Makro. Mit Selektionen wird daher gar nicht sehr viel gearbeitet weswegen wohl auch das HSOSyncronise nichts bringt. Danke und Gruß Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 08. Aug. 2011 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Also Catia.RefreshDisplay = false sollte mit einem modalen Dialog funktionieren. Das finde ich komisch. CATIA kannst Du nicht schneller machen, das muss schon der Hersteller machen, oder wie stellst Du Dir das vor? Wenn sehr viel Geometrie erzeugt wird, wird CATIA langsam, ich denke es wird bei Dir daran liegen und nicht am Makro. Meiner Meinung nach hilft da nur entweder weniger Geometrie erzeugen oder das als CAA abzubilden, mehr bleibt da einfach nicht. Ähnlich bin ich auch bei CreateGravure vorgegangen, die DXF-Texte hatten einfach zu viele Flächen und zu viele Tangentenunsteigkeiten und waren daher unbrauchbar, also die Flächenerzeugung auf ein gutes Minimum reduziert (mit eigenen ALgorithmen und ohne DXF) und die Tangentenunstätigkeiten geglättet. Als das immer noch zu langsam war das ganze als CAA in CADGlyph abgebildet. An CATIA kannste eben nix machen, es ist wie es ist. :-) ------------------ 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 |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 15. Aug. 2011 13:35 <-- editieren / zitieren --> Unities abgeben:
Hallo, konnte ja sein, dass noch irgendwer Tricks kennt um Catia zu beschleunigen. Hat den noch jemand eine Idee warum Catia.RefreshDisplay = False nicht funktioniert? Wie gesagt, alle Interaktionen werden bereit im modalen Dialog durchgeführt. @Lila: Derartige Makros einfach als caa abzubilden ist ohne entsprechende caa Entwicklungsumgebung nicht möglich oder? Vielen Dank und viele Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Bauingenieur (m/w/d) Stahlbau | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden im Anlagenbau und arbeiten mit an anspruchsvollen Lösungen für die Industrie.... | Anzeige ansehen | Bauwesen |
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Aug. 2011 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
|