Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Erweiterungsmethoden für CycleAll und CycleObjsInPart

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:  Erweiterungsmethoden für CycleAll und CycleObjsInPart (626 mal gelesen)
matthias-p
Moderator
Konstruktion / Anwenderbetreuung


Sehen Sie sich das Profil von matthias-p 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: 29. Jan. 2019 07:04    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

Hi,

man braucht ja doch öfters die "alten" UF-Funktionen CycleObjsInPart und CycleAll. Leider sind die nicht mehr so schön zu bedienen, wie man das von heutigen Programmiersprachen eigentlich gewöhnt ist ;-)

Ich hab zwei Erweiterungmethoden geschrieben, die ich euch nicht vorenthalten möchten...

Code:

    public static class PartExtensions
    {
        public static IEnumerable<TaggedObject> Objects(this BasePart prt)
        {
            var session = new NiXeSession();
            Tag aTag = Tag.Null;
            do
            {
                aTag = session.TheUFSession.Obj.CycleAll(prt.Tag, aTag);
                if (aTag == Tag.Null) break;

                yield return session.TheSession.GetObjectManager().GetTaggedObject(aTag);
            } while (true);
        }

        public static IEnumerable<TaggedObject> Objects(this BasePart prt, int type)
        {
            var session = new NiXeSession();
            Tag aTag = Tag.Null;
            do
            {
                session.TheUFSession.Obj.CycleObjsInPart(prt.Tag, type, ref aTag);
                if (aTag == Tag.Null) break;

                yield return session.TheSession.GetObjectManager().GetTaggedObject(aTag);
            } while (true);
        }
    }



Da kann man dann schön mit ForEach drüber gehen und Linq benutzen...z.B.

Code:

            foreach (var dis in Part.Objects().OfType<DisplayableObject>())
            {
                if(dis.IsBlanked) return xyz;
            }

Vielleicht hilfts ja dem ein oder anderen...

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