| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Feature (DatumCsys) hide / show (1737 / mal gelesen)
|
tolo Mitglied Konstrukteur
Beiträge: 91 Registriert: 11.04.2007 NX 11.0
|
erstellt am: 02. Dez. 2016 12:21 <-- editieren / zitieren --> Unities abgeben:
|
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: 02. Dez. 2016 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für tolo
Hallo Thomas, in einer Aufzeichnung steht (fast) alles drin, lediglich die per FindObject() ermittelten Objekte müssen aus dem Feature ausgelesen und dann ausgeblendet werden. Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit seltner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tolo Mitglied Konstrukteur
Beiträge: 91 Registriert: 11.04.2007 NX 11.0
|
erstellt am: 02. Dez. 2016 15:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, ich habe das schon in folgender Weise probiert: Dim objects1(7) As NXOpen.DisplayableObject Dim component As NXOpen.Assemblies.Component = CType(nxui.SelectionManager.GetSelectedTaggedObject(0), NXOpen.Assemblies.Component) Dim cartesianCoordinateSystem1 As NXOpen.CartesianCoordinateSystem = CType(component.FindObject("PROTO#.Features|DATUM_CSYS(0)|CSYSTEM 1"), NXOpen.CartesianCoordinateSystem) objects1(0) = cartesianCoordinateSystem1 Dim point1 As NXOpen.Point = CType(component.FindObject("PROTO#.Features|DATUM_CSYS(0)|POINT 1"), NXOpen.Point) objects1(1) = point1 Dim datumPlane1 As NXOpen.DatumPlane = CType(component.FindObject("PROTO#.Datums|DATUM_CSYS(0) XY plane"), NXOpen.DatumPlane) objects1(2) = datumPlane1 Dim datumAxis1 As NXOpen.DatumAxis = CType(component.FindObject("PROTO#.Datums|DATUM_CSYS(0) X axis"), NXOpen.DatumAxis) objects1(3) = datumAxis1 Dim datumPlane2 As NXOpen.DatumPlane = CType(component.FindObject("PROTO#.Datums|DATUM_CSYS(0) XZ plane"), NXOpen.DatumPlane) objects1(4) = datumPlane2 Dim datumPlane3 As NXOpen.DatumPlane = CType(component.FindObject("PROTO#.Datums|DATUM_CSYS(0) YZ plane"), NXOpen.DatumPlane) objects1(5) = datumPlane3 Dim datumAxis2 As NXOpen.DatumAxis = CType(component.FindObject("PROTO#.Datums|DATUM_CSYS(0) Y axis"), NXOpen.DatumAxis) objects1(6) = datumAxis2 Dim datumAxis3 As NXOpen.DatumAxis = CType(component.FindObject("PROTO#.Datums|DATUM_CSYS(0) Z axis"), NXOpen.DatumAxis) objects1(7) = datumAxis3 sess.DisplayManager.ShowObjects(objects1, NXOpen.DisplayManager.LayerSetting.ChangeLayerToSelectable) Aber ab der Zeile mit "PROTO#.Datums|DATUM_CSYS(0) XY plane" wird gemeldet, dass das Object nicht gefunden wird.
Wenn ich diese Zeilen auskommentiere, wird der Punkt und das Csys-Gerippe dann auch angezeigt. Ich habe es auch mal mit "PROTO#.Datums|DATUM_CSYS(0)|XY plane" probiert. Herzliche Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geraldb Mitglied
Beiträge: 38 Registriert: 13.09.2008
|
erstellt am: 03. Dez. 2016 11:43 <-- editieren / zitieren --> Unities abgeben: Nur für tolo
Hallo Thomas, hatte ein ähnliches Problem bei der (Um)Benennung der Komponenten eines CSYS. Mir hat der DatumCsysBuilder, dessen Methode "CreateDatumCsysBuilder" und anschließende Abfrage "GetCommittedObjects" weitergeholfen. Diese liefert ein nullbasiertes 8-elementiges Objektarray dco mit den Eigenschaften des CSys, die Reihenfolge der darin enthaltenen Elemente ist fix (CSys, Punkt, XY-Ebene, YZ-Ebene, XZ-Ebene, X-Achse, Y-Achse, Z-Achse). Man erspart sich dabei die PROTO-Suchen.
Code:
Dim dcb As DatumCsysBuilder = workPart.Features.CreateDatumCsysBuilder(myfeat) Dim dco() As NXObject = DBuilder.GetCommittedObjects Dim planexy As Plane = CType(dco(2),Plane)
Randnotiz: in den Journalen ist offenbar ein falscher Text für die Ebenen hinterlegt, mit "DATUM_CSYS(0) XY plane" erhält man nicht die XY- sondern die XZ-Ebene. Trifft auf NX 8 sowie auch noch 11 zu und ist mit beliebigen CSys (auch Part_ Origin) nachstellbar-> bisher nicht bekannter oder (absichtlich) nicht korrigierter Fehler. Derzeit gilt: Text "DATUM_CSYS(0) YZ plane" -> XY-Ebene Text "DATUM_CSYS(0) XY plane" -> XZ-Ebene Text "DATUM-CSYS(0) XZ plane" -> YZ-Ebene
[Diese Nachricht wurde von geraldb am 04. Dez. 2016 editiert.] 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: 05. Dez. 2016 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für tolo
Hallo zusammen, wesentlich ist, die Objekte des DatumCsys über das Feature zu ermitteln, nicht über .FindObject. Passt der übergebene Name nicht zu 100% zu einem vorhandenen JournalIdentifier, hat man einen vorhersehbaren Fehler produziert. Sich darauf zu verlassen hat was von russischem Roulette , aber mancher braucht ja vielleicht den Nervenkitzel . <Feat>.GetEntities() ist der einfachste Weg zu den Objekten, der Builder ein Zweiter und via UFSession gibt's m.W. auch noch einen Dritten. Die Reihenfolge ist beim Ein/Ausblenden egal, da die Objekte auf einmal als Array an BlankObjects übergeben werden. Gruß, Michael
------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit seltner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tolo Mitglied Konstrukteur
Beiträge: 91 Registriert: 11.04.2007 NX 11.0
|
erstellt am: 05. Dez. 2016 14:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, ja das scheint der einfachste Weg und wahrscheinlich auch sicherste Weg zur Ermittlung der Einzelelemente des Csys zu sein. Allerdings habe ich bei beiden Varianten das Problem, dass das Unblank nicht funktioniert. Weder im einzelnen mit disobjects2(i).Unblank() noch im ganzen mit sess.DisplayManager.UnblankObjects(disobjects2)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Produktdesigner (m/w) | ABUS Kransysteme zählt zu den bedeutenden Herstellern von Kransystemen und Krankomponenten. Wir sind inhabergeführt, innovativ und wachsen weiter. Innovation und Wachstum brauchen Menschen, die mit Leidenschaft für ihre Aufgaben Technik von morgen gestalten. Zur Verstärkung unseres Teams am Standort Gummersbach suchen wir Sie als Technischer Produktdesigner (m/w)
- Erstellung, Pflege und Verwaltung von technischen Dokumenten (z....
| Anzeige ansehen | Produktdesign, Industriedesign |
|
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: 06. Dez. 2016 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für tolo
Wenn das Blank geht, muss das Unblank auch funktionieren. Sind es die selben Objekte ? Hast Du zwischen WorkPart und Komponenten unterschieden ? Und kennst Du die Bedeutung dieser merkwürdigen Kästchen rechts oben an jedem Beitrag ? Gruß, Michael ------------------ Ein Mensch wird laut, wenn er was will; wenn er's erst hat, dann wird er still; Das "Danke" ist, nach alter Sitte, Weit seltner als das "Bitte, Bitte". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|