Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Text (Note) über Koordinaten ansprechen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Text (Note) über Koordinaten ansprechen (1348 mal gelesen)
RobertM
Mitglied



Sehen Sie sich das Profil von RobertM an!   Senden Sie eine Private Message an RobertM  Schreiben Sie einen Gästebucheintrag für RobertM

Beiträge: 223
Registriert: 03.12.2008

noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit

erstellt am: 10. Jan. 2011 14:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

Ich muß einen Text auf der Zeichnung, dessen genaue Koordinaten ich kenne, ändern bzw. löschen.

Kann mir bitte jemand weiterhelfen?

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 10. Jan. 2011 17:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RobertM 10 Unities + Antwort hilfreich

Hallo Robert,

folgendes sollte funktionieren:

Schleife über alle relevanten Notes, darin Einsetzpunkt etc. der jeweiligen Note ermitteln und mit der vorgegebenen Position vergleichen, am besten über den Abstand note_loc/ref_loc.
Nach oder noch in der der Schleife Minimalabstand suchen.
Die Note mit dem geringsten Abstand ist Dein Kandidat.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RobertM
Mitglied



Sehen Sie sich das Profil von RobertM an!   Senden Sie eine Private Message an RobertM  Schreiben Sie einen Gästebucheintrag für RobertM

Beiträge: 223
Registriert: 03.12.2008

noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit

erstellt am: 11. Jan. 2011 08:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Michael,

Danke für den Tip.
Leider bin ich schon überfordert alle relevanten Notes zu finden.

Dieser Weg scheint nicht der Richtige zu sein:

Part display = theSession.Parts.Display;
NXOpen.Annotations.Note[] alleTexte = display.Notes.ToArray();


------------------
Gruß Robert

[Diese Nachricht wurde von RobertM am 11. Jan. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 11. Jan. 2011 09:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RobertM 10 Unities + Antwort hilfreich

Hallo Robert,

die Collection display.Notes sollte in Ordnung sein, alternativ gibt's unter UF_OBJ einige "cycle"-Funktionen, um an bestimmte Objekte im Part dran zu kommen.

Was steht denn im Array drin ?

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RobertM
Mitglied



Sehen Sie sich das Profil von RobertM an!   Senden Sie eine Private Message an RobertM  Schreiben Sie einen Gästebucheintrag für RobertM

Beiträge: 223
Registriert: 03.12.2008

noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit

erstellt am: 11. Jan. 2011 10:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Michael

ich habe meinen Text identifiziert:

Part display = theSession.Parts.Display;
NXOpen.Annotations.Note[] alleTexte = display.Notes.ToArray();
string[] einText = new string[0];
Point3d suchpunkt = new Point3d(194.0, 2.5, 0.0);

foreach (Note note in display.Notes)
{
    einText = note.GetText();
    Point3d punkt;
    note.GetAssociativeOrigin(out punkt);
    if (Equals(punkt, suchpunkt))
    {
        //löschen
        NXObject[] objects1 = new NXObject[1];
        objects1[0] = note;
        int errs1 = theSession.UpdateManager.AddToDeleteList(objects1);

// ob das hier richtig ist weiß ich nicht, hab's aus einem journal abgeschrieben       
// funktioniert aber

        NXOpen.Session.UndoMarkId markId1;
        markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Delete");
        errs1 = theSession.UpdateManager.DoUpdate(markId1);
    }
}

Autsch:
Jetzt habe ich noch ein Problem. Ich habe mehrere Sheets mit Text an der gleichen Stelle. Ich will natürlich blos den Text auf dem aktiven Sheet löschen. 
------------------
Gruß Robert

[Diese Nachricht wurde von RobertM am 11. Jan. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 11. Jan. 2011 15:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RobertM 10 Unities + Antwort hilfreich

Hallo Robert,

siehst Du, geht doch. Eine Sache scheint mir allerdings recht wacklig: 

Code:
if (Equals(punkt, suchpunkt))

Wenn sich die Positionen in der zigsten Nachkommastelle unterscheiden, was bei Doubles schon mal vorkommen kann, wird der if- Block nicht mehr ausgeführt. Daher besser den Abstand der Positionen berechnen und mit einem Grenzwert (Epsilon) vergleichen.

Das Setzen der UndoMark ist im Prinzip ok, allerdings zu spät. SetUndoMark sollte vor der Stelle stehen, die Du evtl. rückgängig machen willst, am besten ganz an den Anfang stellen.

Die Frage nach den Sheets kannst Du ganz ähnlich lösen: Die gefundenen Notes abfragen, auf welchem Sheet sie liegen.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gfx-toxic.de
Moderator
Konstruktion / Anwenderbetreuung


Sehen Sie sich das Profil von gfx-toxic.de an!   Senden Sie eine Private Message an matthias-p  Schreiben Sie einen Gästebucheintrag für matthias-p

Beiträge: 501
Registriert: 09.06.2006

Teamcenter 11.3 / NX 11
Windows 10

erstellt am: 11. Jan. 2011 16:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RobertM 10 Unities + Antwort hilfreich

Hallo Michael

Das würde mich auch interessieren wie das geht.
Da scheitere ich bis jetzt dran.
Im Moment schreibe ich das Analyse Info Objekt Fenster in eine txt Datei und lese es aus....unschön.

Zitat:
Original erstellt von mseufert:

Die Frage nach den Sheets kannst Du ganz ähnlich lösen: Die gefundenen Notes abfragen, auf welchem Sheet sie liegen.

Gruß, Michael


------------------
Gruß Matthias
------------------------------------
ICQ: 163190295

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 11. Jan. 2011 17:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RobertM 10 Unities + Antwort hilfreich

Hallo zusammen,

auf uganswer.ugs.com gibt's ein Beispiel: find all notes on current drawing sheet

Da werden über ufs.View.CycleObjects alle Objekte der DrawingView ermittelt und einzeln abgefragt, ob es sich um eine Note handelt.

Gruß, Michael


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RobertM
Mitglied



Sehen Sie sich das Profil von RobertM an!   Senden Sie eine Private Message an RobertM  Schreiben Sie einen Gästebucheintrag für RobertM

Beiträge: 223
Registriert: 03.12.2008

noch NX 8.5 + TC Teamcenter 9.1.2.2 64-Bit

erstellt am: 17. Jan. 2011 09:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Es hat ein wenig gedauert, aber ich habe jetzt 2 Lösungen für mein Problem. Beide ohne NXOpen.UF

// Lösung 1 - Löschen über Point3d
private void DeleteNoteL1(Point3d Punkt)
{
    Session theSession = Session.GetSession();
    NXOpen.Session.UndoMarkId markId1;
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Delete");
    Part workpart = theSession.Parts.Work;

    // entweder so
    DrawingSheet currentSheet = workpart.DrawingSheets.CurrentDrawingSheet;
    NXOpen.View view = currentSheet.View;
    DisplayableObject[] dispObj = view.AskVisibleObjects();

    // oder so
    DisplayableObject[] dispObj = workpart.DrawingSheets.CurrentDrawingSheet.View.AskVisibleObjects();

    int errs1;
    foreach (DisplayableObject dis in dispObj)
    {
        Type _typeOfDis = dis.GetType();
        if (_typeOfDis.Name == "Note")
        {
            /* dis.Name darf nicht leer sein, sonst erzeugt
            *  Point3d disPunkt = dis.NameLocation;
            *  eine Exception */
            if (dis.Name == "")
                dis.SetName("dummy");

            Point3d disPunkt = dis.NameLocation;

            /* wie Michael richtig bemerkt hat funktioniert folgender Aufruf nur,
            * wenn die Koordianten von 'Punkt' exakt bekannt sind.
            * Was bei mir der Fall ist, weil die Note auch mit einem Programm erzeugt wurde.
            * Woraus sich die elegantere zweite Lösung ergibt. */
            if (Equals(disPunkt, Punkt))
            {
                NXObject[] objects1 = new NXObject[1];
                objects1[0] = dis;
                errs1 = theSession.UpdateManager.AddToDeleteList(objects1);
            }
        }
    }
    errs1 = theSession.UpdateManager.DoUpdate(markId1);
}

// Lösung 2 - Löschen über Note.Name, den ich beim Erzeugen der Note setze.
private void DeleteNoteL2(String NoteName)
{
    Session theSession = Session.GetSession();
    NXOpen.Session.UndoMarkId markId1;
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Delete");
    Part workpart = theSession.Parts.Work;
    Part display = theSession.Parts.Display;

    var delNote = (display.Notes.ToArray()).Where(note => note.Name == NoteName);
    int errs1;
    foreach (Note note in delNote)
    {
        NXObject[] objects1 = new NXObject[1];
        objects1[0] = note;
        errs1 = theSession.UpdateManager.AddToDeleteList(objects1);
    }
    errs1 = theSession.UpdateManager.DoUpdate(markId1);
}

Vielleicht kann ja jemand was damit anfangen.
Würde mich über ein feedback freuen.

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Technischer Produktdesigner (m/w/d) Maschinenbau
Technologien auf das nächste Level zu heben, sich Herausforderungen zu stellen und an den Innovationen von morgen zu arbeiten - dafür benötigen wir bei FERCHAU Expert:innen wie dich: als ambitionierte Kolleg:innen, die wie wir Technologien auf die nächste Stufe bringen möchten. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenKonstruktion, Visualisierung
mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 17. Jan. 2011 11:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RobertM 10 Unities + Antwort hilfreich

Hallo Robert,

wenn die Notes Namen haben, ist Lösung 2 klar der bessere Weg. Es sei denn, die Namen können mehrfach vorkommen. Dann braucht's wieder ein weiteres Unterscheidungsmerkmal.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz