| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Anzeigeteil wechseln vermeiden / beschleunigen (1024 mal gelesen)
|
seiwi Mitglied Programmierer, Systembetreuer
Beiträge: 53 Registriert: 28.06.2005 Windows 7 NX 7.5 bis NX11 VB .Net, C#, C, GRIP, NXOpen, SNAP
|
erstellt am: 08. Mrz. 2017 11:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe eine Frage bzw. ein Thema, welches bei der NXOpen-Programmierung immer wieder mal auftaucht. Oft werden innerhalb einer Baugruppe mehrere Parts durchlaufen und dort wird dann etwas ausgeführt. Meist ist dazu von NX die Vorraussetzung, dass man dabei das jeweilige Part als Anzeigeteil setzt. (Beispiele für Aktionen: Layerschaltung ändern, Objekte auf Layer verschieben, ...) 1. Wie kann man das Thema Anzeigepart wechseln vermeiden / beschleunigen? 2. Was habt ihr für Erfahrungen mit diesem Thema? Meine Ansätze waren dazu bisher: - Einzelteile nicht doppelt behandeln - Von Einzelteil zu Einzelteil springen und nicht immer zurück in die Baugruppe - Für manche Aktionen reicht es aus ein Prt als Arbeitsteil (Workpart) zu setzen, welches nicht angezeigt wird... (theUFSession.Assem.SetWorkPartQuietly() theUFSession.Part.OpenQuiet(), ...) Danke im Voraus... Beste Grüße Seiwi
------------------ Let's Rock... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 08. Mrz. 2017 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für seiwi
Hallo Andreas, das lässt sich m.E. nicht allgemein beantworten. Eine optimale Strategie ist vom jeweiligen Fall abhängig, d.h. was soll im Einzelteil gemacht werden ? Es gibt Methoden, denen das Part als Argument übergeben wird, ein Wechsel ist hier nicht notwendig. UF_OBJ_Cycle* als Beispiel. Dann gibt's Aktionen, die ein vollständig geladenes Teil voraussetzen, um z.B. an Feature-Infos zu kommen. Und dann gibt's auch noch die Methoden, die ausschliesslich mit dem DisplayedPart arbeiten. Also immer den jeweiligen Fall betrachten und zusehen, was am schnellsten läuft. Daß man zuerst die Parts aufsammelt und nacheinander bearbeitet anstatt Komponente für Komponente zu öffnen ist offensichtlich, das Vermeiden unnötiger Zwischenschritte ebenso. Wenn keine Interaktion benötigt wird kann z.B. auch auf das UI verzichtet werden, das ist sicher auch schneller als mit grafischer Anzeige. Gruß, Michael
------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit seltner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
seiwi Mitglied Programmierer, Systembetreuer
Beiträge: 53 Registriert: 28.06.2005 Windows 7 NX 7.5 bis NX11 VB .Net, C#, C, GRIP, NXOpen, SNAP
|
erstellt am: 08. Mrz. 2017 16:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, danke für deine Antwort. Deine beschriebenen Erfahrungen habe ich auch so gemacht. Dass man für bestimmte Aktionen ins Part wechselt wird sich nicht vermeiden lassen, gerade bei Punkten, welche die Sichtbarkeit (also eigentlich das Grafikfenster) betreffen. Ich hab den Thread eröffnet um evtl. noch weitere Optimierungen zu sammeln. Manchmal gibt es einfach einen guten Trick auf welchen man noch nicht gestoßen ist ;-) Beste Grüße Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 08. Mrz. 2017 17:02 <-- editieren / zitieren --> Unities abgeben: Nur für seiwi
Zitat: Original erstellt von seiwi: ... einen guten Trick ...
... ein universelles Arzneimittel, das immer hilft ? Bei Erkältung, gebrochenen Knochen, Dünnpfiff, Alzheimer ... ... würd' ich auch gerne kennen, gibt's aber sehr wahrscheinlich nicht. MultiThreading oder das Arbeiten mit mehreren Sessions, wär' noch 'ne Idee. Hilft aber auch nicht, wenn immer wieder Eingaben benötigt werden. ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit seltner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Projektleiter Automation (m/w/d) | Sind Sie bereit für eine neue Herausforderung? Als innovatives Maschinenbauunternehmen in den Bereichen Tampondruck und Lasermarkierung suchen wir Menschen, die sich neuen Aufgaben mit Engagement und tatkräftigem Handeln stellen. Als mittelständisches Familienunternehmen bieten wir Ihnen Freiräume, Ihre Ideen umzusetzen und sich selbst weiterzuentwickeln. Wir sind Technologieführer ... | Anzeige ansehen | Teamleitung, Gruppenleitung |
|
geraldb Mitglied
Beiträge: 38 Registriert: 13.09.2008
|
erstellt am: 08. Mrz. 2017 20:23 <-- editieren / zitieren --> Unities abgeben: Nur für seiwi
Sofern nach dem Programmstart keine Benutzerinteraktion erforderlich ist: die Grafikaktualisierung abschalten Code: UFSession.Disp.SetDisplay(UF_DISP_SUPPRESS_DISPLAY)
Sinnvollerweise wird das Programm in einem Try-Catch-Finally-Konstrukt ausgeführt und im abschließenden Finally neben der Unload-Option auch die Grafikaktualisierung wieder eingeschaltet
Code: UFSession.Disp.SetDisplay(UF_DISP_UNSUPPRESS_DISPLAY)
Andernfalls hat man nach einem Absturz mit der laufenden Instanz ein Problem. [Diese Nachricht wurde von geraldb am 08. Mrz. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|