| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Verschiebung von Komponenten (1130 mal gelesen)
|
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 02. Okt. 2009 15:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum-Mitglieder, weiss jemand, wie man auf einfache Weise eine Komponente im Assembly verschieben kann? Ich habe folgendes probiert: 1. theUFSession.Trns.TransformObjects - Gibt mir die Fehlermeldung "11 - Cannot transform occurrence" 2. Journal aufzeichnen - Hier wird mit: componentNetwork1.DragByTransform(translation2, rotation2) gearbeitet - Wirkt auf mich als sehr komplizierte Lösung. Außerdem klappt das Abspielen des Journals nicht Mein System ist NX6 Vielen Dank im Vorraus Denis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 02. Okt. 2009 15:58 <-- editieren / zitieren --> Unities abgeben:
Die Umsetzung analog zur Journal Lösung sieht bei mir so aus Code: ComponentPositioner componentPositioner1 = workPart.ComponentAssembly.Positioner; componentPositioner1.ClearNetwork(); Arrangement arrangement1 = workPart.ComponentAssembly.Arrangements.FindObject("Arrangement 1"); componentPositioner1.PrimaryArrangement = arrangement1; componentPositioner1.BeginMoveComponent(); ComponentNetwork componentNetwork2 = (ComponentNetwork)componentPositioner1.EstablishNetwork(); componentNetwork2.MoveObjectsState = true; componentNetwork2.DisplayComponent = workPart.ComponentAssembly.RootComponent; componentNetwork2.NetworkArrangementsMode = ComponentNetwork.ArrangementsMode.Existing; componentNetwork2.RemoveAllConstraints(); NXObject[] movableObjects2 = { o2.OwningComponent }; componentNetwork2.SetMovingGroup(movableObjects2); componentNetwork2.Solve(); componentNetwork2.BeginDrag(); componentNetwork2.DragByTransform(trans, rot); componentNetwork2.EndDrag(); componentNetwork2.ResetDisplay(); componentNetwork2.ApplyToModel();
Es wird kein Fehler generiert, aber es findet auch keine Verschiebung statt. [Diese Nachricht wurde von denizO am 02. Okt. 2009 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: 02. Okt. 2009 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für denizO
|
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 02. Okt. 2009 16:19 <-- editieren / zitieren --> Unities abgeben:
|
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 02. Okt. 2009 19:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe es jetzt gefunden: - ComponentAssembly.MoveComponent Ein Problem bleibt aber noch: die Verschiebung geht nicht in z-Richtung, wie vorgesehen, sondern in y-Richtung. Das finde ich sehr komisch, denn ich benutze folgendes: Code: componentAssembly1 = theSession.Parts.Work; // Verschiebung für MoveComponent Vector3d trans = new Vector3d(0,0,10); componentAssembly1.MoveComponent(comp,trans,rot)
Damit verschiebt sich dann die Komponente in y-Richtung und nicht in z-Richtung. Dies wird auch durch
Code: Component.GetPosition
bestätigt. Kann es irgendwie sein, dass hier zwei unterschiedliche Koordinatensysteme im Spiel sind, die zueinander verdreht sind? Viele Grüße und Dank Denis
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: 03. Okt. 2009 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für denizO
Hallo Denis, der Bezug ist das KS des Assemblies, nicht ABS oder WCS vom Displayed Part. Siehe net_ref.chm, NXOpen.Assemblies.ComponentAssembly.MoveComponent in den Anmerkungen. Daneben fällt mir in der Zeile componentAssembly1 = theSession.Parts.Work auf, daß Du hier die Typen durcheinander wirfst. theSession.Parts.Work ist vom Typ Part, componentAssembly1 ist vermutlich Component, mehr ist in Deinen Zeilen nicht zu erkennen. Option Strict On wäre hier zu empfehlen. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 03. Okt. 2009 12:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, vielen Dank für Deine hilfreiche Antwort über die zwei verschiedenen Koordinatensysteme. Eigentlich sollte es wohl heißen: Code: componentAssembly1 = theSession.Parts.Work.ComponentAssembly
Ich musste und muss den Code leider wieder einmal aus dem Kopf schreiben, da ich von zu hause keinen Zugang habe.Aber ist es nicht komisch, dass sich dann
Code: Component.GetPosition
auf das KS des Displayed Part bezieht, währen sich
Code: ComponentAssembly.MoveComponent
auf das KS der Assembly bezieht?Kann man vielleicht die beiden KS auf einfache Weise ineinander mappen? Oder steht dies in net_ref.chm (auf die jetzt leider keinen Zugriff habe)? Viele Grüße Denis 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: 03. Okt. 2009 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für denizO
|
denizO Mitglied Student
Beiträge: 26 Registriert: 08.07.2009
|
erstellt am: 05. Okt. 2009 09:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, vielen Dank nochmals für Deine Hilfe. Eine letzte Frage: Wie kann ich mir das CSYS des Assembly Space ausgeben lassen? In ComponentAssembly habe ich nichts dazu gefunden. Viele Grüße Denis 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. Okt. 2009 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für denizO
|