Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Parasolid einer Baugruppe

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:  Parasolid einer Baugruppe (3052 mal gelesen)
didie
Mitglied
NX Admin


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

Beiträge: 106
Registriert: 29.01.2004

win 10
NX1953

erstellt am: 08. Mrz. 2013 10:29    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 möchte per NXopen.net Parasolid Daten einer Baugruppe auslesen.

Ich habe nun das Problem, dass ich nicht weiss wie ich der Funktion ufs.Ps.ExportData alle Body Tags der Baugruppe zuführen ohne kann.

displayPart.Bodies.ToArray() beinnhaltet nur die Bodys des Root Parts

Weiss jemand wie man so was macht?

Code:

      public static void Main()
        {
            Session sess = Session.GetSession();
            Part wp = sess.Parts.Work;
            Part displayPart = sess.Parts.Display;

            NXOpen.Tag[] tagList;
            UFSession ufs = UFSession.GetUFSession();

            var displayedBodys = displayPart.Bodies.ToArray();
         
            tagList = new NXOpen.Tag[displayedBodys.Length];

            int count = 0;
            foreach (Body displayedBody in displayedBodys)
            {
               
                tagList[count] = displayedBody.Tag;
                count++;
            }

            string filename = @"D:\test\test.x_t";

            if (File.Exists(filename))
            {
              File.Delete(filename); 
            }

            ufs.Ps.ExportData(tagList, filename);

        }



Gruß
didie

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

jo.sch
Mitglied



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

Beiträge: 66
Registriert: 29.01.2013

NX7.5.5.4 MP2
NX8.5.3.3
SAP PLM mit Ectr

erstellt am: 08. Mrz. 2013 11:49    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 didie 10 Unities + Antwort hilfreich

Hallo,

versuche es mal so ähnlich:

Code:
Private Sub cycle_components( tmpComp1 As Component )
        Dim child As Component = Nothing

        For Each child In tmpComp1.GetChildren()

            Try
              ' hier muss man dann von der Komponente auf das Part zugreifen und dann auf alle bodies und dann am                          besten alle in ein Array
            Catch

            End Try

            cycle_components(child)
        Next
End Sub

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

didie
Mitglied
NX Admin


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

Beiträge: 106
Registriert: 29.01.2004

win 10
NX1953

erstellt am: 11. Mrz. 2013 13:28    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 jo.sch

So jetzt habe ich mal alle Componenten durchlaufen und die Bodys in ein Tag Array geschrieben.

Jetzt werden alle Bodys in meinen Parasolid geschrieben.
Aber
Mehrfach verbaute Parts erscheinen nur einmal und die Pasitionierung der Komponenten ist auch nicht so wie ein meiner NX Baugruppe. Der Nullpunkt im Parasolid bezieht sich auf das jeweilige WCS aus dem Part von dem der Body stammt. Es liegen also im Parasolid alle Körper übereinander.

Es muss also noch irgenwie dafür gesorgt werden dass meine Baugruppen Situation berücksichtigt wird. Ich weiss aber nicht wie.


Code:

foreach (Component child in wp.ComponentAssembly.RootComponent.GetChildren())
            {

               
                PartLoadStatus partLoadStatus;
                sess.Parts.SetWorkComponent(child, out partLoadStatus);
                wp = sess.Parts.Work;

                foreach (var body in wp.Bodies.ToArray())
                {
                    Array.Resize(ref tagList, count + 1);
                    tagList[count] = body.Tag;
                    count++;

                   
                }
            }
                   
            ufs.Ps.ExportData(tagList, @"D:\test\test1.x_t");


Gruß
didie

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

jo.sch
Mitglied



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

Beiträge: 66
Registriert: 29.01.2013

NX7.5.5.4 MP2
NX8.5.3.3
SAP PLM mit Ectr

erstellt am: 11. Mrz. 2013 13: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 didie 10 Unities + Antwort hilfreich

Hallo,

könnte das damit zusammenhängen, dass du das work part "umschaltest"?
Als Stichwort würde mir hier noch einfallen, dass man darauf achten sollte, ob man den "prototype" oder die "occurence" in die Liste packt.
"prototype" ist dann der Body *im* Part und "occurence" ist die jeweilige Representation im Assy.

Ich sehe auch gerade, dass du innerhalb der for..each Schleife die Collection änderst (du weist "wp" jedes mal etwas anderes zu). Geht das überhaupt? Dann müsste er doch nicht alle erwischen oder? Immer nur jeweils einen...
Meine Schleife geht rekursiv über alle Ebenen. Macht deine Schleife dasselbe?

schau da noch einmal nach (ist von mir jetzt alles blind und nicht getestet...)

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

didie
Mitglied
NX Admin


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

Beiträge: 106
Registriert: 29.01.2004

win 10
NX1953

erstellt am: 14. Mrz. 2013 09:50    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 jo.sch

jetzt läufts. Ich habe nun auch eine Schleife die rekursiv über alle Ebenen geht und mit FindOccurrence die Bodys findet.

Auch den Wechsel des wp habe ich rausgenommen.

Gruß
didie

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

stefan027
Mitglied
CAM-Programmierer


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

Beiträge: 18
Registriert: 05.09.2011

NX8.5
VB.NET 2008

erstellt am: 24. Jul. 2013 21: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 didie 10 Unities + Antwort hilfreich

Hallo Didie,

ich bin auf diesen Thread gestoßen, da ich gerade die gleiche vor habe. Ich bin jetzt auch soweit, dass es mir Teile der Baugruppe zwar speichert, aber alle liegen aufeinander und kommen nur einmal vor.

Ich komme mit dem "FindOccurrence" nich klar. Ich weiß nicht wie ich es einsetzen muss damit es was findet.

Über etwas Hilfestellung würde ich mich freuen.

Viele Grüße

Stefan

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: 25. Jul. 2013 12:43    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 didie 10 Unities + Antwort hilfreich


uf_assem.JPG

 
Hallo Stefan,

in der net-ref unter UF_ASSEM gibt's ein Beispiel, das diese Zusammenhänge in einer Baugruppe erläutert.

Vermutlich hast Du die Einzelteile ermittelt und dann exportiert. Daher geht die Positionierung in der BG verloren.

Um die Teile entsprechend ihrer Lage in der BG zu exportieren, müssen deren "Occurences" ermittelt und exportiert werden. FindOccurence dient dazu, diese Exemplare zu finden.

Schau' Dir mal das Beipiel an, dann wird's bestimmt klar.

Gruß, Michael

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

didie
Mitglied
NX Admin


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

Beiträge: 106
Registriert: 29.01.2004

win 10
NX1953

erstellt am: 01. Aug. 2013 09:42    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 Stefan

Schau hier mal nach.

Gruß
didie

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



Senior Engineer (m/w/d) Rohrleitungsplanung im Anlagenbau
Wir sind planting. Premium-Partner der Prozessindustrie. Wir unterstützen unsere Kunden sowohl in Projekten, in der betriebsnahen Planung als auch im technischen Consulting. Unsere Aufgaben sind anspruchsvoll, unser Leistungs- und Branchenspektrum breit: von der Idee bis zur Inbetriebnahme und darüber hinaus. Dafür suchen wir Verstärkung - kompetent und motiviert. Unsere Teams in der Region Rhein-Neckar ...
Anzeige ansehenProjektmanagement
stefan027
Mitglied
CAM-Programmierer


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

Beiträge: 18
Registriert: 05.09.2011

NX8.5
VB.NET 2008

erstellt am: 03. Aug. 2013 19:00    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 didie 10 Unities + Antwort hilfreich

Hallo didie,

guter Tipp! Jetzt läuft es.

Danke,

Stefan

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