| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Section Line editieren (1842 mal gelesen)
|
Zoechi Mitglied Software Entwickler
Beiträge: 28 Registriert: 03.07.2008 NX 4.0.4.2 MP9, MS Visual Studio 2005, NX 4.0 Open C und MFC
|
erstellt am: 09. Apr. 2009 08:58 <-- editieren / zitieren --> Unities abgeben:
Grüße euch, ich möchte mit meinem Programm (dll) die Farbe aller Section Lines auf einer Zeichnung ändern. In der Open C Referenz habe ich keine Funktion dazu gefunden. UF_OBJ_set_color setzt zwar eine Farbe auf das Section-Line-Object und kann sie auch mit UF_OBJ_ask_disp_prop wieder abfragen, aber die dargestellte Farbe der Section-Line bleibt unverändert. Weiß jemand von euch eine Funktion dafür mit Open C? Mit NX6 und Open C++ bin ich über ein Journal auf die Funktionen zum Editieren gekommen und kann jetzt alle Section Lines umfärben. Leider benötige ich das Programm für NX4 und beim Compilieren können die Drawings_SectionLine***.hxx-Datein nicht gefunden werden. Compilieren mit NX6-Dateien funktioniert, anwenden in NX6 funktionier auch, nicht aber mit NX4. In der Open C++ Referenz für NX4 habe ich nichts über Section Lines gefunden. Sind die Funktionen dafür vorhanden und ich habe sie nur nicht gefunden, oder werden sie bei NX4 noch nicht unterstützt? Mein Code für NX6 sieht so aus:
Code:
#include "TestA.h"#include <uf_defs.h> #include <NXOpen/NXException.hxx> #include <NXOpen/Session.hxx> #include <NXOpen/Builder.hxx> #include <NXOpen/DraftingManager.hxx> #include <NXOpen/Drawings_SectionLineCollection.hxx> #include <NXOpen/Drawings_SectionLineStyleBuilder.hxx> #include <NXOpen/Drawings_SteppedSectionLine.hxx> #include <NXOpen/NXObject.hxx> #include <NXOpen/Part.hxx> #include <NXOpen/PartCollection.hxx> #include <NXOpen/SelectObject.hxx> #include <NXOpen/SelectTaggedObject.hxx> #include <NXOpen/Session.hxx> #include <NXOpen/TaggedObject.hxx> #include <NXOpen/View.hxx> #include <NXOpen/ViewCollection.hxx> #include <NXOpen/ColorManager.hxx> using namespace NXOpen; CTestA::CTestA(void) { } CTestA::~CTestA(void) { } void CTestA::nobiggrin It() { Session *theSession = Session::GetSession(); Part *workPart(theSession->Parts()->Work()); Part *displayPart(theSession->Parts()->Display()); Session::UndoMarkId markId1; markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start Edit Section Lince Color"); Drawings::SectionLineCollection::iterator sxiterator = workPart->Drafting()->SectionLines()->begin(); while(sxiterator != workPart->Drafting()->SectionLines()->end()) { Drawings::SectionLine* sxline = sxiterator.operator*(); Drawings::SectionLineStyleBuilder *styleBuilder; styleBuilder = workPart->Drafting()->SectionLines()->CreateSectionLineStyleBuilder(sxline); styleBuilder->SetColor(workPart->Colors()->Find("Brown")); NXObject* nxObj; nxObj = styleBuilder->Commit(); styleBuilder->Destroy(); sxiterator.operator++(1); } theSession->SetUndoMarkName(markId1, "End Edit Section Lince Color"); }
Vielleicht kann mir von euch jemand weiterhelfen, wie das mit NX4 zu realisieren wäre? fg Thomas 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: 09. Apr. 2009 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für Zoechi
Hallo Thomas, die verschiedenen Builder werden nach und nach in die NXOpen API integriert. Daher gehe ich mal davon aus, daß es in der NX4 noch keinen CreateSectionLineStyleBuilder gab. Evtl. findet sich eine Alternative in der NXOpen.UF - Klasse. Oder such' mal in der .net-ref nach "section". Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zoechi Mitglied Software Entwickler
Beiträge: 28 Registriert: 03.07.2008 NX 4.0.4.2 MP9, MS Visual Studio 2005, NX 4.0 Open C und MFC
|
erstellt am: 09. Apr. 2009 13:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, danke für den Tipp, bin aber leider nicht fündig geworden. Mit NX4 und .net habe ich noch nicht gearbeitet. Ich brauche einen C oder C++ Code um ihn in das gesamte Programm einbauen zu können (das Editieren der Section Line ist nur ein kleiner Teil), und denke nicht, das ich C# dazumischen kann. Habe aber für C etwas gefunden: Ich starte UF_OBJ_cycle_objs_in_part und suche nach UF_section_line_type. Ich setze die Farbe für das Object wieder mit UF_OBJ_set_color (wie zuvor). --> Die Farbe der Section Line verändert sich nicht, ABER wenn ich einen Doppelklick auf die Section Line mache, sehe ich dass meine Farbe ausgwählt ist, und erst wenn ich dann mit OK oder Apply bestätige ändert sich meine Farbe! Habe ich etwas vergessen? Fehlt mir so was ähnliches wie "styleBuilder->Commit();" ? Kann jetzt auch die Farbe der einzelen Segmente der Section Line ändern: Mit UF_DRAW_ask_sxline_type bekomme ich den Typ der Section Line zurück und weiß dadurch mit welcher Funktion ich die Daten abrufen kann (in meinem Fall mit UF_DRAW_ask_simple_sxline). Damit erhalte ich meine Segmente und bekomme mit UF_DRAW_ask_sxline_sxseg(sxseg_tags[i], &sxseg_info, &curve_tag, &object) meine Curve-Tags denen ich dann mit UF_OBJ_set_color eine Farbe zuweisen kann. Die Farbe ändert sich dann auch sofort, nach Abschluss dieser Funktion. --> wäre aber nicht notwendig, wenn die zuvor erwähnte Methode funktionieren würde. Komm ich da irgendwie drum herum? fg Thomas 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: 11. Apr. 2009 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für Zoechi
Zitat: Original erstellt von Zoechi: Habe ich etwas vergessen? Fehlt mir so was ähnliches wie "styleBuilder->Commit();" ?
Hallo Thomas, vielleicht wird die Farbe nach einem NXOpen.UF.Disp.Refresh oder *.RegenerateDisplay sichtbar ? Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zoechi Mitglied Software Entwickler
Beiträge: 28 Registriert: 03.07.2008 NX 4.0.4.2 MP9, MS Visual Studio 2005, NX 4.0 Open C und MFC
|
erstellt am: 14. Apr. 2009 08:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, habe die Funktionen UF_DISP_refresh() und UF_DISP_regenerate_display() versucht --> hat leider keine Auswirkung auf das Setzen der Farben. Auch wenn ich den Part abspeichere und ihn neu öffne, habe wird mir immer noch die alte Farbe angezeigt, obwohl in den Eigenschaften die neue Farbe angezeigt wird. Denke es liegt da an etwas anderem. Vielleicht auch ein kleiner Bug im API... fg Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Pflichtpraktikum - Gebäudemanagement / Facility Management & Energieversorgungskonzepte - REF54013M | Continental entwickelt wegweisende Technologien und Dienste für die nachhaltige und vernetzte Mobilität der Menschen und ihrer Güter. Das 1871 gegründete Technologieunternehmen bietet sichere, effiziente, intelligente und erschwingliche Lösungen für Fahrzeuge, Maschinen, Verkehr und Transport. Continental erzielte 2022 einen Umsatz von 39,4 Milliarden Euro und beschäftigt aktuell rund 200.000 Mitarbeiterinnen und Mitarbeiter in 57 Ländern und Märkten.... | Anzeige ansehen | Gebäude-, Versorgungs-, Sicherheitstechnik |
|
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: 14. Apr. 2009 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für Zoechi
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|