|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO | 
|  |  | 
|  | Wichtige Änderung bei Lizenzverlängerungen von PTC, eine Pressemitteilung 
 | 
| Autor | Thema:  asm-Komponenten auslesen mit Jlink (269 mal gelesen) | 
 | magic_halli Mitglied
 
 
   
 
      Beiträge: 361Registriert: 03.07.2006
 WF2 M210 / WF3 M110Linux Fedora C4
 WinXP Pro
 Java 1.6.0_06
 |    erstellt am: 15. Aug. 2006 07:33  <-- editieren / zitieren -->    Unities abgeben:            
  Hi, ich bin dabei, zu einem geöffneten Assembly alle darin enthaltenen Komponenten (PART´s) auszulesen.
 Code:
 Session curSession = pfcGlobal.GetProESession();
 Model model = curSession.GetCurrentModel();
 Assembly asm = (Assembly)model;
 ComponentFeat component;Features m_items = asm.ListFeaturesByType(Boolean.FALSE, FeatureType.FEATTYPE_COMPONENT);
 for (int i = 0; i < m_items.getarraysize(); i++){
 component = (ComponentFeat)m_items.get(i);
 String name = component.GetNumber().toString();
 stringseq seq = stringseq.create();
 seq.append(name);
 curSession.UIDisplayMessage("message.txt", "Info: %0s", seq);
 }
 
 
 Ich bekomme nun die "feature regeneration number" (laut API) aller im asm enthaltenen prt´s angezeigt. Über diese Nummer komme ich doch nun sicher irgendwie an das entsprechende Teil ran, um etwas damit zu machen?!
 1. Wie kann ich mir nun aber auch deren Namen anzeigen lassen?
 2. Wie kann ich jedes einzelne prt in ProE (wenn gefunden) öffnen (dann etwas tun) und wieder schließen?
 Vielen Dank, Gruß Rico. EDIT: Oder ist es vielleicht besser mit der ID zu arbeiten, statt mit der Nummer der Komponente? Ich finde aber keine Funktion, um an die ID zu gelangen
  !
 [Diese Nachricht wurde von magic_halli am 15. Aug. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | GüntherP Mitglied
 CAD Administrator / Konstrukteur
 
  
 
      Beiträge: 82Registriert: 18.02.2005
 HP xw4100NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0
 Intralink 3.4 F000
 PDMLink 8.0 M030
 |    erstellt am: 15. Aug. 2006 08:28  <-- editieren / zitieren -->    Unities abgeben:           Nur für magic_halli   
  Hallo Rico, den Namen bekommst du so ... Code:
 ModelDescriptor descr = component.GetModelDescr();Model model = curSession.GetModelFromDescr(descr);
 
 Du holst dir den ModelDescriptor von deiner Komponente und erzeugst damit das Model Objekt. Daraus kannst du den Namen auslesen oder den ModelType ermitteln. Zum Öffnen der Komponente .... Code:
 ModelDescriptor descr = component.GetModelDescr();curSession.OpenFile(descr);
 
 Zum Schließen der Komponente .... Code:
 model.Erase(); 
 HTH
  ,
 Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | magic_halli Mitglied
 
 
   
 
      Beiträge: 361Registriert: 03.07.2006
 WF2 M210 / WF3 M110Linux Fedora C4
 WinXP Pro
 Java 1.6.0_06
 |    erstellt am: 15. Aug. 2006 08:46  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | magic_halli Mitglied
 
 
   
 
      Beiträge: 361Registriert: 03.07.2006
 WF2 M210 / WF3 M110Linux Fedora C4
 WinXP Pro
 Java 1.6.0_06
 |    erstellt am: 15. Aug. 2006 10:46  <-- editieren / zitieren -->    Unities abgeben:            
  Nachtrag: Die einzelnen Part´s eines asm öffenen geht einwandfrei. Nur wenn ich das model.Erase() am Schluß einfüge, um das geöffnete Part wieder zu schließen und mit dem nächsten fortzufahren, erscheint eine Fehlermeldung:"pfc.Implementation.pfcExtensions$XToolkitInUse"!!!
 ... und es wird nichts geschlossen!
 An was kann das bitteschön liegen - wird da irgendwas im Speicher gehalten o.ä.??? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | GüntherP Mitglied
 CAD Administrator / Konstrukteur
 
  
 
      Beiträge: 82Registriert: 18.02.2005
 HP xw4100NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0
 Intralink 3.4 F000
 PDMLink 8.0 M030
 |    erstellt am: 15. Aug. 2006 13:04  <-- editieren / zitieren -->    Unities abgeben:           Nur für magic_halli   
  Uups, das ist mein Fehler. model.Erase() möchte ja das Modell aus der Sitzung löschen. Das geht natürlich nicht, weil ja die Assembly noch offen ist. Versuch das ganze mal über ein Window Objekt. Code:
 Window win = curSession.GetCurrentWindow();win.Close();
 
 Wenn du ein Modell öffnest, müsste es als aktuelles Fenster angezeigt werden. Dieses Fenster kann man schließen. Das Code Fragment ist als Ersatz für model.Erase() gedacht. Gruß,Günther
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | magic_halli Mitglied
 
 
   
 
      Beiträge: 361Registriert: 03.07.2006
 WF2 M210 / WF3 M110Linux Fedora C4
 WinXP Pro
 Java 1.6.0_06
 |    erstellt am: 15. Aug. 2006 13:21  <-- editieren / zitieren -->    Unities abgeben:            |