| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Note auf welchem DrawingSheet? (1752 mal gelesen)
|
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 11. Aug. 2010 13:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, so langsam komm ich etwas hinter das ganze. Ich versuch gerade auszulesen auf welchem Zeichnungsblatt sich eine Note (Hinweis) befindet. Ich habe schon versucht über GetAssociativity zu gehen aber er zeigt mir leider (komischerweise) keine Views an. Über Info Objekt bekomm ich ja "Befindet sich auf Zeichnung DWG_1". Wie bekomm ich das am einfachsten raus. Über Origin bekomm ich den Punkt, aber nicht das Sheet. Vielen Dank im voraus! ------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 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. Aug. 2010 17:34 <-- editieren / zitieren --> Unities abgeben: Nur für gfx-toxic.de
Hallo Matthias, bin nicht ganz sicher, aber in der UFSession glaube ich, gibt's da was passendes. Schau' mal in UF_VIEW, UF_DRAW, UF_DRF oder UF_OBJ, da gibt's jede Menge Abfrageroutinen (Ask*), evtl. ist auch was für die Note dabei. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 11. Aug. 2010 22:27 <-- editieren / zitieren --> Unities abgeben:
|
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 12. Aug. 2010 09:28 <-- editieren / zitieren --> Unities abgeben:
hat doch nicht so ganz funktioniert...hier meine lösung ist zwar etwas wacklig aber tut: Code: { NXOpen.NXObject[] objarray = new NXObject[1]; objarray[0] = obj; string informationpath = System.Environment.GetEnvironmentVariable("UGII_TMP_DIR") + @"\nixesearch.tmp"; theSession.ListingWindow.SelectDevice(ListingWindow.DeviceType.File, informationpath); theSession.Information.DisplayObjectsDetails(objarray); theSession.ListingWindow.Close(); theSession.ListingWindow.SelectDevice(ListingWindow.DeviceType.Window, "asdf"); System.IO.StreamReader reader = new System.IO.StreamReader(informationpath); string drawing = null; while (reader.EndOfStream == false) { string zeile = reader.ReadLine(); if (zeile.Contains("Befindet sich auf Zeichnung")) { drawing = zeile.Substring(28); } if (zeile.Contains("Resides on drawing")) { drawing = zeile.Substring(21); } } reader.Close(); System.IO.File.Delete(informationpath); return drawing; }
------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 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: 12. Aug. 2010 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für gfx-toxic.de
|
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 12. Aug. 2010 17:16 <-- editieren / zitieren --> Unities abgeben:
|
hardyb Mitglied CAD/PLM Systembetreuung
Beiträge: 24 Registriert: 12.11.2004 NX 6.0.x Win XP/XP64 SAP / ECtr 4.2
|
erstellt am: 12. Aug. 2010 23:47 <-- editieren / zitieren --> Unities abgeben: Nur für gfx-toxic.de
Hallo Matthias, ich würde das mal so probieren: Alle Drawings durchgehen, auf jeder Drawing die DrwView und alle Member Views durchgehen auf allen Views die Objekte durchgehen mit z.B. ufs.View.CycleObjects(dwgView, UFView.CycleObjectsEnum.VisibleObjects, obj)... dann das obj untersuchen ob es eine Note ist und dann brauchst Du ein Kriterium um zu entscheiden, ob der Text Dein gesuchter Text ist. Schau mal in uganswer und such mal nach "find_all_notes_on_current_drawing_sheet" da gibt's ein Beispiel. Gruß Hardy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Zeichner / Sachbearbeiter Objekt (m/w/d) | EUROSUN Sonnenschutz ist ein renommierter Hersteller von technischen Sonnenschutzanlagen und genießt im deutschsprachigen Raum einen hervorragenden Ruf als zuverlässiger Qualitätsanbieter. Unsere Kunden setzen sich aus Industrie- und Fachhandelsbetrieben im Baunebengewerbe zusammen. Seit 2017 gehört EUROSUN Sonnenschutz zur österreichischen Josko-Scheuringer Gruppe, zu der auch die Josko Fenster und Türen GmbH gehört.... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 04. Jun. 2012 11:31 <-- editieren / zitieren --> Unities abgeben:
Grrrrr...ich krieg glaub ich die Krise! Ich wollte das von mir oben schon gepostete über das Info Fenster doch mal etwas schöner gestalten. Jetzt bekomm ich nur bei Zeichnungen mit mehreren Blätter folgende Exception. NXException: View ist not displayed. NXOpen.DisplayableObject[] displayable_objects = workpart.DrawingSheets.ToArray()[i].View.AskVisibleObjects(); Was die Exeception meint ist mir schon klar. Kann ich nicht einfach sagen ich will einfach alle Member? Gibt es vielleicht doch noch eine andere Lösung? Code:
using System; using NXOpen; using NXOpen.UF; using NXOpenUI;namespace DrawingSheetOfNote { class Program { static NXOpen.Drawings.DraftingView _view; static NXOpen.Drawings.DrawingSheet _sheet; public static void Main(string[] args) { Session session = Session.GetSession(); UFSession ufsession = UFSession.GetUFSession(); UI uisession = UI.GetUI(); session.ListingWindow.Open(); Part workpart = session.Parts.Work; if(workpart == null) return; NXOpen.DisplayableObject dis_object; dis_object = (NXOpen.DisplayableObject)GetSelection(); if(dis_object == null) return; bool view_found = false; bool sheet_found = false;
//Suche Direkt auf der Drawing View for (int i = 0; i < workpart.DrawingSheets.ToArray().Length; i++) { NXOpen.DisplayableObject[] displayable_objects = workpart.DrawingSheets.ToArray()[i].View.AskVisibleObjects(); for (int i2 = 0; i2 < displayable_objects.Length; i2++) { if (displayable_objects[i2] == dis_object) { sheet_found = true; view_found = true; _sheet = workpart.DrawingSheets.ToArray()[i]; session.ListingWindow.WriteLine("Drawing found: " + _sheet.ToString() + " " + _sheet.Name); break; } if (view_found) break; } } if (sheet_found) return; //Suche wenn das ganze in einer Zeichnungs view ist for (int i = 0; i < workpart.DraftingViews.ToArray().Length; i++) { NXOpen.DisplayableObject[] displayable_objects = workpart.DraftingViews.ToArray()[i].AskVisibleObjects(); for (int i2 = 0; i2 < displayable_objects.Length; i2++) { if (displayable_objects[i2] == dis_object) { view_found = true; _view = workpart.DraftingViews.ToArray()[i]; session.ListingWindow.WriteLine("View found: " + _view.ToString() + " " + _view.Name); break; } if (view_found) break; } } //Wenn das ganze in einer Zeichnungs view ist holen wir jetzt das Zeichnungsblatt dazu. for (int i = 0; i < workpart.DrawingSheets.ToArray().Length; i++) { NXOpen.Drawings.DraftingView[] drafting_views = workpart.DrawingSheets.ToArray()[i].GetDraftingViews(); for (int i2 = 0; i2 < drafting_views.Length; i2++) { if (drafting_views[i2] == _view) { sheet_found = true; _sheet = workpart.DrawingSheets.ToArray()[i]; session.ListingWindow.WriteLine("Drawing found: " + _sheet.ToString() + " " + _sheet.Name); break; } if (sheet_found) break; } } } public static NXObject GetSelection() { Session session = Session.GetSession(); UFSession uf = UFSession.GetUFSession(); UI ui = UI.GetUI();
NXObject obj = null; Point3d cursor; //Braucht man das man auch im Drafting View auswählen kann uf.Ui.SetCursorView(0); Selection.Response resp = ui.SelectionManager.SelectObject( "Bitte auswählen", "NiXeSelect", Selection.SelectionScope.AnyInAssembly, false, false, out obj, out cursor); return obj; } } }
------------------ Gruß Matthias ------------------------------------ ICQ: 163190295 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |