Placement/es: Difference between revisions
(→Notes) |
|||
Line 218: | Line 218: | ||
|Features derived from Sketches||the Feature inherits the Position of the underlying Sketch. Sketches always start with Position = (0,0,0). |
|Features derived from Sketches||the Feature inherits the Position of the underlying Sketch. Sketches always start with Position = (0,0,0). |
||
|} |
|} |
||
{{clear}} |
|||
<br> |
|||
==Issues== |
|||
* As of version 0.13, update of Placement properties in the Data tab has been disabled for objects created with PartDesign, except for the initial sketch from which the solid will be created. Therefore the Placement of a solid created in PartDesign from a sketch can only be altered by adjusting Placement parameters of the initial construction sketch (the first sketch) from which the solid was created. |
|||
* Placement functionality will eventually be handled in the Assembly workbench. |
|||
{{clear}} |
{{clear}} |
Revision as of 20:40, 5 October 2013
Introducción
nota de traducción: en esta página pretendemos mantener la siguiente correspondencia entre términos ingles-español
placement emplazamiento
attitude orientación
position posición
Hasta la etapa final de aceptación de la traducción no sustituiremos los términos originales en inglés por sus equivalentes en español.
Placement es el modo en que FreeCAD especifica la position y la attitude (orientacion) de un objeto en el espacio. Placement puede ser especificado de varias formas y manipulado a través de scripting, el panel de Propiedades o el diálogo Placement (Edit menu).
Accediendo al Atributo Placement (emplazamiento)
El atributo Placement (emplazamiento) de un objeto puede ser visto y modificado de 3 maneras:
![](/images/9/9a/PlacementPropertiesv10-800x800.png)
![](/images/0/09/PlacePyConv10.png)
![](/images/2/20/PlacementDialogv10.png)
Formas de definir Placement
Angulo, Eje y Posición
Placement = [Angle, Axis, Position]
The primera forma de Placement define la situación de un objeto en el espacio con una Position, y describe su orientacion como una simple rotación alrededor de un eje.
Angle = r es un número que indica la magnitud de la rotación del objeto alrededor del eje. Se introduce en grados sexagesimales, pero internamente se almacena en radianes.
Axis = (ax,ay,az) es un vector que describe el eje de rotación (ver Nota sobre eje de rotación). Ejemplos:
(1,0,0) ==> giro respecto al eje X (0,1,0) ==> giro respecto al eje Y (0,0,1) ==> giro respecto al eje Z (0.71,0.71,0) ==> giro respecto a la recta y=x , z=0
Position = (x,y,z) es un Vector que describe en coordenadas globales el punto (base) de referencia del objeto. Note que en los scripts, Placement.Base se usa para indicar la componente Position de un placement. En el editor de propiedades, a ese valor se le llama "Position".
Position y (rumbo, asiento y escora) (Yaw, Pitch and Roll)
Placement = [Position, Yaw-Pitch-Roll]
La segunda forma de Placement define la localización de un objeto en el espacio con una Position (como en la forma primera), pero describe su orientacion usando los ángulos de rumbo, asiento y escora (Yaw, Pitch and Roll) (Yaw, Pitch, Roll). A esto ángulos también se los denomina ángulos de Euler o de Tait-Bryan(Euler angles). Yaw, Pitch and Roll son términos usados en aviación (y navegación) para indicar la orientación (o attitude) de un cuerpo.
Position = (x,y,z) es un Vector que describe las coordenadas globales del punto de referencia del objeto.
Yaw-Pitch-Roll = (y,p,r) es una terna o tripleta que especifica la attitude del objeto. Los valores de y,p,r indican grados sexagesimales de rotación respecto a cada uno de los ejes del sistema de referencia z,y,x (ver nota).
-
Yaw es el ángulo de giro respecto al eje Z, en el sentido de girar a la izquierda o a la derecha. (el ángulo yaw se suele representar con la letra griega Psi ψ).
-
Pitch es rotación alrededor del eje Y, "subir o bajar la nariz".
-
Roll es rotación alrededor del eje X, es decir subir o bajar la punta del ala.
Matrix
Placement = Matrix
La tercera forma de Placement define la posición y orientación de un objeto en el espacio con una matriz de dimensiones 4x4 que representa una transformación afín(Affine Transformation).
Matrix =
((r11,r12,r13,t1), (r21,r22,r23,t2), (r31,r32,r33,t3), (0,0,0,1)) , donde rij indican rotación y ti indican translación.
El diálogo Placement
The Placement Dialog es llamado desde el menu Edit. Se usa para rotar/trasladar los objetos con precisión. Tambien se usa cuando necesitamos crear un sketch (croquis) en un plano "no standard" o cambiar la orientación del plano del croquis a otro plano.
La sección Translation ajusta la localización del objeto en el espacio. La sección Center ajusta el eje de rotación a uno que no pasa por el punto de referencia del objeto. La sección Rotation ajusta el ángulo (o ángulos) de rotación, y el modo de especificar esos ángulos.
Marcar la casilla de selección aplica cambios incrementales sobre el placement (emplazamiento) del objeto es útil cuando las translations/rotations han de ser hechas respecto a las position/attitude actuales del objeto, en lugar de las position/attitude originales. Marcando esa casilla se resetea a cero los campos de entrada del cuadro de diálogo, aunque no cambia la orientation or location del objeto. Datos introducidos posteriormente cambian la orientation/location, pero se aplican a la posición actual del objeto.
Ejemplos
Rotations alrededor de un solo eje:
![Before Rotation](/images/thumb/9/96/RotationAboutZBefore.png/600px-RotationAboutZBefore.png)
Antes de la Rotation (visto desde arriba)
![After Rotation about Z](/images/thumb/e/e2/RotationAboutZAfter.png/600px-RotationAboutZAfter.png)
Después de Rotation respecto a Z (top view)
![After Rotation about y=x](/images/thumb/b/bd/RotationAboutYXAfter.png/600px-RotationAboutYXAfter.png)
Después de Rotation respecto a y=x (vista desde la derecha)
Rotation con centro de giro desplazado:
![Before Rotation](/images/thumb/2/21/RotationOffsetBefore.png/600px-RotationOffsetBefore.png)
antes de la Rotation (top view)
![After Rotation about Z](/images/thumb/7/71/RotationOffsetAfter.png/600px-RotationOffsetAfter.png)
Después de Rotation respecto a Z (vista en planta)
Rotation usando ángulos de Euler:
![Before Rotation](/images/thumb/c/c6/RotationEulerBefore.png/600px-RotationEulerBefore.png)
Antes Rotation
![After Rotation](/images/thumb/c/c4/RotationEulerAfter.png/600px-RotationEulerAfter.png)
Despues Rotation
Placement.Base vs Shape Definition
Placement no es la única forma de definir la posición de una forma en el espacio. Observa la consola de Python en esta imagen:
![](/images/b/be/2Placements800.png)
Los 2 cubos tienen el mismo valor de Placement, pero están en diferentes locations! Esto es así porque las 2 formas están definidas por vértices diferentes. Para las 2 formas de la ilustración superior:
>>> ev = App.ActiveDocument.Extrude.Shape.Vertexes >>> for v in ev: print v.X,",",v.Y,",",v.Z ... 30.0,30.0,0.0 30.0,30.0,10.0 40.0,30.0,0.0 40.0,30.0,10.0 40.0,40.0,0.0 40.0,40.0,10.0 30.0,40.0,0.0 30.0,40.0,10.0 >>> e1v = App.ActiveDocument.Extrude001.Shape.Vertexes >>> for v in e1v: print v.X,",",v.Y,",",v.Z ... 0.0,10.0,0.0 0.0,10.0,10.0 10.0,10.0,0.0 10.0,10.0,10.0 10.0,0.0,0.0 10.0,0.0,10.0 0.0,0.0,0.0 0.0,0.0,10.0 >>>
Los Vértices (or Vectors) que define la forma usan el atributo Placement.Base como su origen. Así, si quieres mover una forma 10 unidades a lo largo del eje X, puedes añadir 10 a la coordenada X de todos los Vértices o, alternativamente, puedes establecer Placement.Position a (10,0,0).
Usar "Center" para controlar el eje de rotación
Por defecto, el eje de rotación no es realmente el eje x/y/z. Es una linea paralela al eje seleccionado, pero pasando por el punto de referencia (Placement.Base) del objeto que va a ser rotado. Ese comportamiento puede ser cambiado usando los campos Center en el diálogo Placement o, en scripts, usando el parámetro Center del constructor FreeCAD.Placement .
Por ejemplo, supongamos que tenemos un bloque (ver ilustración debajo) en las coordenadas (20,20,10).
![](/images/3/34/LocalZBefore2.png)
Queremos girarlo sobre su propio eje vertical (es decir el eje Z "local"), pero manteniéndolo en el mismo lugar. Podemos conseguirlo facilmente indicando como valor de Center las coordenadas del punto central del bloque, que son (25,25,15).
![](/images/5/59/LocalZAfter2.png)
En un script, haríamos así:
(NOTA del traductor: aquí habia una etiqueta translate abierta que me da problema, y LA QUITO)
obj = App.ActiveDocument.Box # our box
rot = FreeCAD.Rotation(FreeCAD.Vector(0,0,1),45) # 45° about Z
centre = FreeCAD.Vector(25,25,15) # central point of box
pos = obj.Placement.Base # position point of box
newplace = FreeCAD.Placement(pos,rot,centre) # make a new Placement object
obj.Placement = newplace # spin the box
(NOTA del traductor: aquí habia otra etiqueta translate de cierre que me da problema, y LA QUITO)
Notes
- Axis and Angle can also be expressed as a quaternion.
- The reference point of an object (FreeCAD.Placement.Base) varies depending on the object. Some examples for common objects:
Object | Reference Point |
---|---|
Part.Box | left (minx), front (miny), bottom (minz) vertex |
Part.Sphere | center of the sphere (ie centre of bounding box) |
Part.Cylinder | center of the bottom face |
Part.Cone | center of bottom face (or apex if bottom radius is 0) |
Part.Torus | center of the torus |
Features derived from Sketches | the Feature inherits the Position of the underlying Sketch. Sketches always start with Position = (0,0,0). |
Issues
- As of version 0.13, update of Placement properties in the Data tab has been disabled for objects created with PartDesign, except for the initial sketch from which the solid will be created. Therefore the Placement of a solid created in PartDesign from a sketch can only be altered by adjusting Placement parameters of the initial construction sketch (the first sketch) from which the solid was created.
- Placement functionality will eventually be handled in the Assembly workbench.