| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Texte verschieben (1689 mal gelesen)
|
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 19. Sep. 2011 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich muss Texte auf einer Zeichnung verschieben. Bis jetzt treffe ich die Auswahl über den Objektnamen. z.B. String ObjektName="Bla"; NXObject[] objekt1 = null; var alleTexte = (display.Notes.ToArray()).Where(einText => einText.Name == ObjektName); objekt1 = new NXObject[alleTexte.Count()]; int ii = 0; foreach (Note einText in alleTexte) { objekt1[ii] = einText; ii++; } objekt1 verschiebe ich dann mit dem MoveObjectBuilder Soweit funktioniert das auch prima. Nun muss ich die Texte aber über ein Fenster auswählen. Point3d punktLinksUnten = new Point3d(211, 6, 0); Point3d punktRechtsOben = new Point3d(412, 120, 0); Ich habe keine Ahnung wie ich die Auswahl treffen soll. Kann mir bitte jemand helfen? ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 21. Sep. 2011 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für RobertM
Hallo Robert, der SelectionManager gibt da m.E. nicht viel her. Eine denkbare Möglichkeit wäre, im Schritt 1 auf den gewünschten Bereich zu zoomen, dann über einen Cycle die sichtbaren Objekte zu greifen. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 23. Sep. 2011 06:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, so läuft es momentan auch ab. Das Programm unterbricht für die Auswahl meiner Objekte. mit NXObject[] selobjekts = null; Selection.Response resp1 = theUI.SelectionManager.SelectObjects("Auswahl", "Title", Selection.SelectionScope.AnyInAssembly, false, true, out selobjekts); Das sind im übrigen nicht nur Texte, sondern auch Linien und Anwenderdefinierte Symbole (im grunde alles was im Schriftkopf ist und nicht aus Teamcenter kommt). Dann läuft das Programm weiter ab. Ist halt schade das ich das Tool unterbrechen muß, obwohl ich alle Informationen für einen automatischen Ablauf habe. ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 23. Sep. 2011 08:09 <-- editieren / zitieren --> Unities abgeben: Nur für RobertM
|
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 23. Sep. 2011 08:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, kannst du mir bitte mehr Info zur Cycle- Funktionen in der UFSession geben. Vielleicht mit Beispiel. Mir sagt das gar nichts. Bin ja erst am lernen. ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 23. Sep. 2011 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für RobertM
Hallo Robert, in einem Punkt geb' ich Dir Recht: Man hat nie ausgelernt. Aber nach über zwei Jahren sollte es möglich sein, in der Doku (net_ref.chm) nach einem Begriff (cycleobjects) zu suchen. Gruß und schönes Wochenende, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 26. Sep. 2011 10:23 <-- editieren / zitieren --> Unities abgeben:
Ich habe jetzt eine Lösung. Ich finde sie sehr Umständlich, aber vielleicht geht es ja nicht anders. 1. Schleife über alle Tag's mit tag1 = theUFSession.Obj.CycleAll(workPart.Tag, tag1); 2. dann NXObject nxObjekt1 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(tag1); 3. if (nxObjekt1.GetType().ToString() == "NXOpen.Annotations.Note") { String journalIdentifier1 = nxObjekt1.JournalIdentifier; NXOpen.Annotations.Note note1 = (NXOpen.Annotations.Note)workPart.FindObject(journalIdentifier1); Point3d point3d1 = new Point3d(); note1.GetAssociativeOrigin(out point3d1); } das gleiche für "NXOpen.Annotations.CustomSymbol" usw. jetzt kann point3d1 mit meinen Daten vergleichen und ggf. verschieben. ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 27. Sep. 2011 08:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, wahrscheinlich werde ich gleich wieder einen Rüffel bekommen. Ich trau mich aber trotzdem zu fragen. Ich möchte eine NXObjectList definieren, um dann mit der Append Methode mehrere NXObject[] hinzuzufügen. Wie muß ich allObjects instanzieren? NXObject[] allNotes = .....; NXObject[] allLines = .....; NXObject[] allCustomSymbols = .....; Bis hierher ist alles klar. NXObjectList allObjects; allObjects.Append(allNotes); allObjects.Append(allLines); allObjects.Append(allCustomSymbols); Ich hoffe, dass das dann funktioniert: NXObject[] allObjectsBack=null ; alleObjekte.SetContents(allObjectsBack); ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 28. Sep. 2011 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für RobertM
Hallo Robert, Du hast (2x) einen Hinweis bekommen, der Dich ans Ziel geführt hat. Oder sehe ich das falsch ? Was Du hier offensichtlich als Rüffel betrachtest, sehe ich als Aufforderung, den Weg zu diesem Ziel selbst zu gehen. Oder erwartest Du, daß jemand anders diesen Weg für Dich geht ? Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 28. Sep. 2011 12:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, natürlich versuche ich den Weg selbst zu finden. Manchmal schaffe ich das halt nicht. z.B. bin ich in der NXObjectList Class dem Hinweis To create a new instance of this class, use Part.CreateObjectList gefolgt. Der führt mich aber zu einer ObjectList. Ich denke NXObjectList ist sowieso nicht richtig. Ich möchte ja die Liste zurück als NXObject[] haben. Die SelectNXObjectList Class scheint da angebrachter zu sein. Allerdings ist der Konstruktor auch protected internal. Da kann ich wieder keine Instanz erstellen. Nachtrag:Select.. hat wieder was interaktives oder? Dann ist das ja auch nichts. Ich bin mir auch nicht sicher, ob der Weg den ich einschlage überhaupt der Richtige ist. Ich möchte alle möglichen Objecte einsammeln und dann gemeinsam verschieben. Einzelne Gruppen verschieben habe ich ja dank deiner Hilfe schon geschafft. Was mein größtes Problem überhaupt ist, ist das fehlende Wissen über die englischen Fachwörter. Oft weiß ich gar nicht was gemeint ist. Und die Übersetzungen im Netz sind da nicht hilfreich. Drum tu ich mich auch mit dem Suchen so schwer. Das soll jetzt keine Ausrede sein. Ist halt einfach so. Und kennen tu ich auch niemend, der mir da helfen könnte. ------------------ Gruß Robert
[Diese Nachricht wurde von RobertM am 28. Sep. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 29. Sep. 2011 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für RobertM
Hallo Robert, für's Verschieben nimmst Du Move Object, also den MoveObjectBuilder, richtig? Dem kannst Du u.a. einzelne NXobjects oder ein Array übergeben mit ObjectToMoveObject.add(). Das wäre ein einfacher Weg, ohne selbst eine Instanz von ObjectList etc. anlegen zu müssen. Warum also komplizierter machen als es ist ? Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 29. Sep. 2011 13:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, Danke für deine Geduld. Genau so habe ich es mit deiner Hilfe hinbekommen. Ich habe eine Klasse mit der Methode public void VerschiebeObjekte(Point3d StartPunkt, Point3d EndPunkt, NXObject[] Object1) Nun wollte ich von meiner aufrufenden Methode alle gesammelten Objecte übergeben. Drum die Anstrengung meinerseits. Es ist aber nicht zwingend notwendig. Drum lasse ich es jetzt wie es ist.
------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Produktionsleitung Labormöbelfertigung m/w/d | Wir sind ein innovatives Familienunternehmen und marktführend im Bereich von Elektroniklabor- und Testsystemen. Zum nächstmöglichen Termin stellen wir ein: PRODUKTIONSLEITUNG LABORMÖBELFERTIGUNG m/w/d
- Leitung des Gesamtbereichs Möbelproduktion mit einer der modernsten Industrie 4.0 Fertigungen und neu eingerichteten Holzbearbeitungsmaschinen:
| Anzeige ansehen | Feste Anstellung |
|
RobertM Mitglied
Beiträge: 223 Registriert: 03.12.2008 noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit
|
erstellt am: 30. Sep. 2011 08:42 <-- editieren / zitieren --> Unities abgeben:
Nachdem hier so viel geschrieben und mitgelesen wurde, möchte ich einfach mal meine neue Klasse hier reinstellen. Vielleicht kann sie ja jemand, wenigstens teilweise, verwenden. Die logFile.WriteLine aufrufe müssen ggf. durch ListingWindow ersetzt werden. Für Tipps zur Verbesserung der Programmierung an sich bin ich immer dankbar. ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |