| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: STL Export Java (1848 mal gelesen)
|
mazoco Mitglied
Beiträge: 43 Registriert: 31.10.2007
|
erstellt am: 22. Jun. 2009 13:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Ich versuche mit Java einen Stl Export (nur Solids). Auf einem Bauteil funktioniert der Export einwandfrei. Bei einer Baugruppe wird jedoch nichts exportiert. Irgendwie werden keine Bodies erkannt. Code: BodyCollection bodies = dispPart.bodies(); BodyCollection.Iterator it = bodies.iterator(); // Open the STL binary file UFVariant fileHandle = theUFSession.std().openBinaryStlFile(stlfile, false, stlkeyvalue); // Export all bodies with current WCS while (it.hasNext()) { Body bd = (Body) it.next(); if (bd.isSolidBody() && bd.layer() == layer) { lw.writeLine("Solid Body " + bd.tagValue()); theUFSession.std().putSolidInStlFile( fileHandle, Tag.NULL, bd.tag(), 0, 100, tolerance); } } // Close the file theUFSession.std().closeStlFile(fileHandle);
Hat jemand von Euch ein Lösungsansatz? Gruss Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Siassei Mitglied MB - Student
Beiträge: 490 Registriert: 08.07.2007 SWX NX 3 und höher ;) Windows and UNIX<P>C, C++, Java, Phyton,...</P>
|
erstellt am: 22. Jun. 2009 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für mazoco
Servus, was ergibt ... ?
Code: bodies.toArray().getLength()
dispPart repräsentiert das aktuell, dargestellte Part. Bei einem guten Design ist der Teilenavi. leer und somit sind auch keine Körper in deinem aktuellen Part. Lösung: 1) Durchlaufe die Assembly und holl dir aus den einzelnen Componenten die Informationen 2) Hebe alle Körper an, exportiere die Bodies und lösche die Anhebungen wieder 3) Es gibt höchst wahrscheinlich eine einfacher Lösung Gruß Thomas ------------------ Hopfen und Mals Gott erhalts Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mazoco Mitglied
Beiträge: 43 Registriert: 31.10.2007
|
erstellt am: 23. Jun. 2009 20:39 <-- editieren / zitieren --> Unities abgeben:
Salut Thomas Deine Idee mit dem Anheben finde ich ein super Ansatz. Ich denke mal, dass ich den Export so hinbekomme. Ich habe mal kurz ein Java Programm geschrieben, dass nur eine Komponente anheben soll. Nun stehe ich vor dem nächsten Problem. Ich erhalte einen Error (siehe Anhang). Der Fehler tritt bei NXObject nXObject1 = promotionBuilder1.commit() auf. Code: import nxopen.*; import nxopen.assemblies.Component; import nxopen.assemblies.ComponentAssembly; import nxopen.features.PromotionBuilder;public class EFstlExport { static public ListingWindow lw = null;
public static void main(String[] args) throws NXException, java.rmi.RemoteException { Session theSession = (Session) SessionFactory.get("Session"); lw = theSession.listingWindow(); Part workPart = theSession.parts().work(); Part displayPart = theSession.parts().display(); int markId1; markId1 = theSession.setUndoMark(nxopen.Session.MarkVisibility.VISIBLE, "Start"); nxopen.features.Promotion nullFeatures_Promotion = null; ComponentAssembly c = workPart.componentAssembly(); Component comp = c.rootComponent(); Component[] test = comp.getChildren(); PromotionBuilder promotionBuilder1 = workPart.features().createPromotionBuilder(nullFeatures_Promotion); Part part = (Part) test[1].prototype(); BodyCollection body = part.bodies(); BodyCollection.Iterator it1 = body.iterator(); Body body1 = (Body) it1.next(); boolean added1; added1 = promotionBuilder1.body().add(body1); NXObject nXObject1 = promotionBuilder1.commit(); promotionBuilder1.destroy(); } public static final int getUnloadOption() { return BaseSession.LibraryUnloadOption.IMMEDIATELY; } }
Hast du noch eine Idee was das sein könnte?
Gruss Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Siassei Mitglied MB - Student
Beiträge: 490 Registriert: 08.07.2007 SWX NX 3 und höher ;) Windows and UNIX<P>C, C++, Java, Phyton,...</P>
|
erstellt am: 24. Jun. 2009 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für mazoco
Servus, die Zeile der Exception währe Interessant. Ich denke mal, dass es hier passiert
Code: PromotionBuilder promotionBuilder1 = workPart.features().createPromotionBuilder(nullFeatures_Promotion);
Wenn du hier ein Objekt übergibst, dann möchte er das Editieren. Bei null ist das ein kleines Problem. Übergebe hier null
Code: PromotionBuilder promotionBuilder1 = workPart.features().createPromotionBuilder(null);
Ich berufe mich auf den C# - Code aus der NX6-Lib
Code: public PromotionBuilder createPromotionBuilder(Promotion promotion) { NXOpen.Tag tag; JAM.StartCall("solid_modeling"); int status = JA_FEATURE_create_promotion_builder(this.Tag, (promotion == null) ? NXOpen.Tag.Null : promotion.Tag, out tag); if (status != 0) { throw NXException.Create(status); } return (PromotionBuilder) NXObjectManager.Get(tag); }
Code: Part part = (Part) test[1].prototype();
Ist ein zweites Part vorhanden?Gruß Thomas ------------------ Hopfen und Mals Gott erhalts Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mazoco Mitglied
Beiträge: 43 Registriert: 31.10.2007
|
erstellt am: 30. Jun. 2009 20:12 <-- editieren / zitieren --> Unities abgeben:
|
Siassei Mitglied MB - Student
Beiträge: 490 Registriert: 08.07.2007 SWX NX 3 und höher ;) Windows and UNIX<P>C, C++, Java, Phyton,...</P>
|
erstellt am: 01. Jul. 2009 14:05 <-- editieren / zitieren --> Unities abgeben: Nur für mazoco
Servus, in welcher Zeile bricht er ab? Lass dir das mal Ausgeben bzw. log das mal ------------------ Hopfen und Mals Gott erhalts Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Fachingenieur (m/w/d) Grundstücksentwässerung und Verkehrsflächen | GOLDBECK?realisiert zukunftsweisende Immobilien in Europa. Wir verstehen Gebäude als Produkte und bieten alle Leistungen aus einer Hand: vom Design über den Bau bis zu Services im Betrieb. Aktuell beschäftigt unser Familienunternehmen mehr als 12.000 Mitarbeitende an über 100 Standorten bei einer?Gesamtleistung von über 6 Mrd. Euro. Unser Anspruch ?building?excellence? steht dabei für Spitzenleistungen ... | Anzeige ansehen | Bauwesen |
|
mazoco Mitglied
Beiträge: 43 Registriert: 31.10.2007
|
erstellt am: 07. Jul. 2009 16:50 <-- editieren / zitieren --> Unities abgeben:
|