| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| | |
 | BOM Assistant für Stücklistenerstellung , eine App
|
|
Autor
|
Thema: Parameter bearbeiten (1511 mal gelesen)
|
CodeR Mitglied
 Beiträge: 9 Registriert: 16.07.2008 Java 1.4.2 Pro Engineer WildFire 2.0 1GB DDR2 Intel Core Duo T2550 - 1.73Ghz ATI Radeon X1600
|
erstellt am: 24. Jul. 2008 10:16 <-- editieren / zitieren --> Unities abgeben:         
Hi  , im Zuge meiner Diplomarbeit kam ich in Kontakt mit Pro/E+J-Link, habe jedoch noch wenig Erfahrung damit. Die 1.Aufgabe besteht darin eine "Stückliste" aller vorhandenen Baugruppen und Parts zu erstellen, sowie deren Parameterkonfiguration(lesen und setzen) mit Hilfe einer Java-Applikation. Mein erstes Modul liest aus einem angegebenen Verzeichnis alle Assemblys und Parts aus und sichert den Namen der Datei(interne Namensvergabe) in eine LinkedList bzw. HashMap. Mit Hilfe der ausgelesenen Daten wird dann eine Async-Verbindung erstellt, Assembly/Part-Modelle gemacht um deren Pars auszulesen und in die Liste zu schreiben. Funktioniert bis jz zwar alles suppi, jedoch gibt es zu lange/inakzeptable Zugriffszeiten bei entsprechend großen Projekten... 1. Welche Variante (LinkedList oder HashMap) ist bei Einträgen von bis zu 2500 Elementen eher zu empfehlen um Zugriffszeiten entsprechend "niedrig" zu halten??? 2. Muss eine neue Session in der Applikation erzeugt werden um auf die Parameter zuzugreifen oder kann direkt auf eine Datei zugegriffen werden in dem sich die Pars befinden?? Danke für Eure Hilfe MfG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
anagl Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 4566 Registriert: 28.05.2001 CREO2 M140 PDMLink 10.2 M020 HW diverse Das Schreiben bei CAD.de ist freiwillig und kein Muss !!!!!
|
erstellt am: 24. Jul. 2008 11:24 <-- editieren / zitieren --> Unities abgeben:          Nur für CodeR
Ich vermute das ist ein Problem der ASYNC-Verbindung Auszug aus der Doku
The use of RPC causes asynchronous mode to perform more slowly than synchronous mode. For this reason, apply asynchronous mode only when it is needed. Vielleicht lässt sich die Logik auf Synchron ändern Pro/E Start Applikations-Start In der Applikation lesen des Verzeichnes und dann erledigen der Aufgaben OT deine Überschrift beschreibt dein Problem suboptimal (Beser z.B J-Link Performance ) ------------------ Servus Alois Keine Mouseover-Werbung zwischen den Zeilen!!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CodeR Mitglied
 Beiträge: 9 Registriert: 16.07.2008 Java 1.4.2 Pro Engineer WildFire 2.0 1GB DDR2 Intel Core Duo T2550 - 1.73Ghz ATI Radeon X1600
|
erstellt am: 25. Jul. 2008 07:59 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für deine schnelle Antwort  Ich habe gestern noch meine Applikation auf Synchron geändert, jedoch keinen wesentlichen Unterschied zum Asynchronen Modus gesehen. Die synchrone Variante war nur um die Zeit schneller, welche die asynchrone zum Starten von Pro/E bzw. zur Verbindung zur Session braucht. Also bis jz. kein entscheidender Vorteil von Sync.  Was ein Grund für die schlechte Performance sein könnte ist, dass die Modelle die bereits bearbeitet wurden nicht gelöscht werden und denn Speicher füllen...Wenn ich also model.Erase() ausführen will kommt folgende Exception: com.ptc.pfc.Implementation.pfcExceptions$XToolkitInUsepfcException: com.ptc.pfc.Implementation.pfcExceptions$XToolkitInUse at com.ptc.pfc.Implementation.pfcAssembly$Assembly.Erase(Native Method) at ReadComponentParameter.unloadModel(ReadComponentParameter.java:224) at ReadComponentParameter.<init>(ReadComponentParameter.java:40) at StartAsyncConnection.main(StartAsyncConnection.java:18) Ich weiss, dass das Löschen aus dem Speicher nicht ausgeführt wird weil dieses Model/Part noch eine Verbindung zu einem aktiven Assembly hat. Kann man also ein Model aus dem Speicher löschen, auch wenn das dazugehörige Assembly noch aktiv ist??? MfG  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Taurus1981 Mitglied Technischer Zeichner, Systembetreuer
 
 Beiträge: 127 Registriert: 09.04.2008 WinXp SP2 HP xw9400 Workstation Dual-Core AMD-Opteron (64) 2,60 GHz, 3,50 GB Ram NVIDIA FX1500 ProE Wildfire 2 M280 Startup tools Rand2002g,
|
erstellt am: 25. Jul. 2008 08:47 <-- editieren / zitieren --> Unities abgeben:          Nur für CodeR
Hallo also meines Wissens nach nicht. über eine Vereinfachte Darstellung ist es möglich diverse Modele garnicht erst in den Speicher zu laden, aber ich verstehe nicht den Sinn der Aktion. Was willst du damit erreichen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nobody333 Mitglied Dipl. Ing. (FH) (Konstruktion)
  
 Beiträge: 593 Registriert: 06.07.2007 HP Workstation Z400 Intel Xeon W3565 4x3,20GHz 12GB RAM Nvidia Quadro FX1800 Windows 7 x64 Prof. SP1 Creo Parametric 2 (M100) FoundationAdv bzw. Flex3C Startup Tools 2013 MathCad Prime 3
|
erstellt am: 25. Jul. 2008 08:49 <-- editieren / zitieren --> Unities abgeben:          Nur für CodeR
Ich weis nicht, in wie weit sich das mittels JLink machen laesst, aber ein Modell, das in einer Baugruppe verbaut ist, kann man nur aus dem Speicher entfernen, wenn man es in der Baugruppe unterdrückt. ------------------ Gruß Marco Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CodeR Mitglied
 Beiträge: 9 Registriert: 16.07.2008 Java 1.4.2 Pro Engineer WildFire 2.0 1GB DDR2 Intel Core Duo T2550 - 1.73Ghz ATI Radeon X1600
|
erstellt am: 25. Jul. 2008 09:02 <-- editieren / zitieren --> Unities abgeben:         
Einen wirklichen Sinn hat die Aktion ja nicht... Ich wollte damit nur testen, ob sich eine kleine Performancesteigerung meiner Applikation ergibt, wenn ich die Modelle sofort nach dem Bearbeiten lösche... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Taurus1981 Mitglied Technischer Zeichner, Systembetreuer
 
 Beiträge: 127 Registriert: 09.04.2008 WinXp SP2 HP xw9400 Workstation Dual-Core AMD-Opteron (64) 2,60 GHz, 3,50 GB Ram NVIDIA FX1500 ProE Wildfire 2 M280 Startup tools Rand2002g,
|
erstellt am: 25. Jul. 2008 09:15 <-- editieren / zitieren --> Unities abgeben:          Nur für CodeR
|
CodeR Mitglied
 Beiträge: 9 Registriert: 16.07.2008 Java 1.4.2 Pro Engineer WildFire 2.0 1GB DDR2 Intel Core Duo T2550 - 1.73Ghz ATI Radeon X1600
|
erstellt am: 25. Jul. 2008 11:45 <-- editieren / zitieren --> Unities abgeben:         
Nachdem ich das Model bearbeitet habe wird es auch gespeichert  das war ja nicht mein Prob.  Hab jz aber den Grund für die schlechte Performance gefunden, sowie wie man ein bearbeitetes Model (nach dem Speichern ) wieder aus dem Speicher löscht. 1. Schlechte Performance - Grund Zunächst lese ich aus einem angegebenen Verzeichnis alle asm und prt Dateien aus und speichere deren Namen in eine Liste. Über diese Namen erstelle ich dann jeweils die Modelle. Nun wollte ich jeweils einzeln ein Model laden, Pars bearbeiten - speichern und wieder aus dem Speicher löschen. Was ich beim Laden aber nicht bedacht habe ist, dass bei asms gleichzeitig auch die prts in den Speicher geladen werden - was natürlich ein hoher Aufwand ist und die Performance stark bremst - und weils intelligent ist und der Speicher ja soooo groß ist, hatte ich die gleichen prts ein zweites mal geladen  2. asm und dazugehörige prts aus Speicher löschen Mit Hilfe von proeModel.EraseWithDependencies(); MfG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
anagl Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 4566 Registriert: 28.05.2001 CREO2 M140 PDMLink 10.2 M020 HW diverse Das Schreiben bei CAD.de ist freiwillig und kein Muss !!!!!
|
erstellt am: 25. Jul. 2008 12:39 <-- editieren / zitieren --> Unities abgeben:          Nur für CodeR
wenn es Dir nur um die Parameter geht könntest Du bei den Baugrzuppen evtl auch mit der symbolischen vereinfachten Darstellung arbeiten Methode RetrieveSymbolicSimpRep ------------------ Servus Alois Keine Mouseover-Werbung zwischen den Zeilen!!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CodeR Mitglied
 Beiträge: 9 Registriert: 16.07.2008 Java 1.4.2 Pro Engineer WildFire 2.0 1GB DDR2 Intel Core Duo T2550 - 1.73Ghz ATI Radeon X1600
|
erstellt am: 29. Jul. 2008 10:27 <-- editieren / zitieren --> Unities abgeben:         
@anagl Vielen Dank für den Tip!!  Die Methode RetrieveSymbolicSimpRep hab ich zwar nich verwendet/gefunden dafür aber folgende: CreateNewSimpRepInstructions new_simprep = pfcSimpRep.CreateNewSimpRepInstructions_Create(sampleName); new_simprep.SetDefaultAction(SimpRepActionType.SIMPREP_EXCLUDE); proeModel = proeSession.RetrieveAssemSimpRep(sampleName, new_simprep); Soviel ich jz. verstanden hab, wird zwar das asm gemacht aber alle anderen,dazugehörigen Komponenten ausgeschlossen (wegen --> SIMPREP_EXCLUDE)... MfG  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |