Rotar una pieza con respecto a su eje x

Rotar una pieza con respecto a su eje x

Anonymous
Not applicable
677 Views
8 Replies
Message 1 of 9

Rotar una pieza con respecto a su eje x

Anonymous
Not applicable

¿Cómo sería un codigo de ilogic que girara una pieza de un ensamblaje un angulo concreto entorno al eje x?

0 Likes
678 Views
8 Replies
Replies (8)
Message 2 of 9

JelteDeJong
Mentor
Mentor

have you seen this post? has visto este post? (google translate;-)

https://adndevblog.typepad.com/manufacturing/2015/09/rotate-assembly-component-around-axis.html

Jelte de Jong
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature


Blog: hjalte.nl - github.com

Message 3 of 9

Anonymous
Not applicable

Si ejecuto ese código en ilogic no me funciona,  de todas formas gracias. De todas forma necesito que haga el giro sin necesidad de indicarle seleccionando pieza y eje 

0 Likes
Message 4 of 9

Anonymous
Not applicable

si fueras capaz de decirme como acceder a los ejes de una pieza con ilogic igual se apañar algo 

0 Likes
Message 5 of 9

WCrihfield
Mentor
Mentor

Aquí está la versión de iLogic del código en ese post, pero sin usar el eje de trabajo preseleccionado y el componente. Tendrá que cambiar "NombreDeComponente" por el nombre del componente que desea rotar.  Esto supone que ha querido girar el componente alrededor del eje X del ensamblaje y no el propio eje X de los componentes.
Aquí está el código.

 

Dim oADoc As AssemblyDocument = ThisAssembly.Document
Dim oADef As AssemblyComponentDefinition = oADoc.ComponentDefinition
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
Dim oOcc As ComponentOccurrence = oADef.Occurrences.Item("ComponentName")
Dim oXAxis As WorkAxis = oADef.WorkAxes.Item("X Axis")
Dim oLine As Line = oXAxis.Line
Dim oOrigMatrix As Matrix = oOcc.Transformation
Dim oNewMatrix As Matrix = oTG.CreateMatrix
oNewMatrix.SetToRotation((Math.PI / 2), oLine.Direction.AsVector, oLine.RootPoint)
oOrigMatrix.PreMultiplyBy(oNewMatrix)
oOcc.Transformation = oOrigMatrix

 

Wesley Crihfield

EESignature

(Not an Autodesk Employee)

0 Likes
Message 6 of 9

Anonymous
Not applicable

Muchas gracias creo que con esto me puede servir pero si que lo ideal seria usar los ejes de la pieza no los del ensamblaje .¿Como puedo acceder a ellos?

0 Likes
Message 7 of 9

WCrihfield
Mentor
Mentor

De acuerdo. Prueba esto entonces.
Está obteniendo el eje X del componente en lugar del ensamblaje principal.

Dim oADoc As AssemblyDocument = ThisAssembly.Document
Dim oADef As AssemblyComponentDefinition = oADoc.ComponentDefinition
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
Dim oOcc As ComponentOccurrence = oADef.Occurrences.Item("ComponentName")
Dim oXAxis As WorkAxis = oOcc.Definition.WorkAxes.Item("X Axis")
Dim oLine As Line = oXAxis.Line
Dim oOrigMatrix As Matrix = oOcc.Transformation
Dim oNewMatrix As Matrix = oTG.CreateMatrix
oNewMatrix.SetToRotation((Math.PI / 2), oLine.Direction.AsVector, oLine.RootPoint)
oOrigMatrix.PreMultiplyBy(oNewMatrix)
oOcc.Transformation = oOrigMatrix

Wesley Crihfield

EESignature

(Not an Autodesk Employee)

0 Likes
Message 8 of 9

Anonymous
Not applicable
Dim oOcc As ComponentOccurrence = oADef.Occurrences.Item("ComponentName")

en esta linea debes poner itembyname para que funcione en lugar de solo item

0 Likes
Message 9 of 9

WCrihfield
Mentor
Mentor

Tienes razón. Olvidé cambiar eso. Lo estaba usando por número, antes de convertir el código para su propósito. Buena atrapada.

Wesley Crihfield

EESignature

(Not an Autodesk Employee)

0 Likes