Drawing Workbench/es: Difference between revisions

From FreeCAD Documentation
mNo edit summary
mNo edit summary
Line 172: Line 172:
{{docnav/es|Part Module/es|Raytracing Module/es}}
{{docnav/es|Part Module/es|Raytracing Module/es}}


{{languages | {{en|Drawing Module/en}} {{de|Drawing Module/de}} {{fr|Drawing Module/fr}} {{se|Drawing Module/se}} {{ru|Drawing Module/ru}} {{pl|Drawing Module/pl}} }}
{{languages | {{en|Drawing Module}} {{de|Drawing Module/de}} {{fr|Drawing Module/fr}} {{se|Drawing Module/se}} {{ru|Drawing Module/ru}} {{pl|Drawing Module/pl}} }}


[[Category:User Documentation/es]]
[[Category:User Documentation/es]]

Revision as of 08:31, 21 August 2011

El módulo de Dibujo te permite poner en papel tu trabajo 3D. Es decir, sirve para poner vistas de tus modelos en una ventana 2D e insertar esas ventanas en un dibujo, por ejemplo una hoja con un formato, un título y tu logotipo y, finalmente, imprimir esa hoja. El módulo de Dibujo está en desarrollo y es más o menos una muestra de sus posibilidades!


Herramientas GUI

Template:Drawing Tools/es


En la imagen se ven los principales elementos del módulo de Dibujo. El documento contiene un objeto forma (Schenkel) que queremos poner en papel. Para ello creamos una "Página". Una página se crea a partir de una plantilla, en este caso la plantilla "A3_apaisado". La plantilla es un documento SVG que puede contener la disposición habitual de tus dibujos, tu logotipo o los estándares que utilices.

En la página puedes insertar una o varias vistas. Cada vista tiene una posición en la página (Propiedades X, Y), un factor de escala (Propiedad escala) y propiedades adicionales. Cada vez que la página, o la vista, o el objeto referenciado cambia, la página se regenera y la visualización de la página se actualiza.


Archivos de guión

De momento, el interfaz (GUI) para el usuario final está poco desarrollado, por lo que los archivos de guión de la API son más interesantes. A continuación veremos ejemplos de cómo utilizar los archivos de guión de la API del módulo de Dibujo.

Ejemplo Simple

Lo primero, se necesitan los módulos Parte y Drawing:

import FreeCAD, Part, Drawing

Creamos una pequeña Pieza, como muestra

Part.show(Part.makeBox(100,100,100).cut(Part.makeCylinder(80,100)).cut(Part.makeBox(90,40,100)).cut(Part.makeBox(20,85,100)))

Proyección directa. G0 significa borde en arista, y G1 es continuidad de tangencia.

Shape = App.ActiveDocument.Shape.Shape
[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(Shape)
print "visible edges:", len(visibleG0.Edges)
print "hidden edges:", len(hiddenG0.Edges)

Todo se proyecta sobre el plano Z:

print "Bnd Box shape: X=",Shape.BoundBox.XLength," Y=",Shape.BoundBox.YLength," Z=",Shape.BoundBox.ZLength
print "Bnd Box project: X=",visibleG0.BoundBox.XLength," Y=",visibleG0.BoundBox.YLength," Z=",visibleG0.BoundBox.ZLength

Vector de proyección diferente

[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(Shape,App.Vector(1,1,1))

Projectar a SVG

resultSVG = Drawing.projectToSVG(Shape,App.Vector(1,1,1))
print resultSVG

En modo paramétrico

Se Crea la pieza

# Crea 3 cajas y un cilindro
App.ActiveDocument.addObject("Part::Box","Box")
App.ActiveDocument.Box.Length=100.00
App.ActiveDocument.Box.Width=100.00
App.ActiveDocument.Box.Height=100.00

App.ActiveDocument.addObject("Part::Box","Box1")
App.ActiveDocument.Box1.Length=90.00
App.ActiveDocument.Box1.Width=40.00
App.ActiveDocument.Box1.Height=100.00

App.ActiveDocument.addObject("Part::Box","Box2")
App.ActiveDocument.Box2.Length=20.00
App.ActiveDocument.Box2.Width=85.00
App.ActiveDocument.Box2.Height=100.00

App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
App.ActiveDocument.Cylinder.Radius=80.00
App.ActiveDocument.Cylinder.Height=100.00
App.ActiveDocument.Cylinder.Angle=360.00
# Unión de 2 cajas y el cilíndro
App.activeDocument().addObject("Part::Fuse","Fusion")
App.activeDocument().Fusion.Base = App.activeDocument().Cylinder
App.activeDocument().Fusion.Tool = App.activeDocument().Box1

App.activeDocument().addObject("Part::Fuse","Fusion1")
App.activeDocument().Fusion1.Base = App.activeDocument().Box2
App.activeDocument().Fusion1.Tool = App.activeDocument().Fusion
# Eliminar los elementos unidos anteriormente con la primera caja
App.activeDocument().addObject("Part::Cut","Shape")
App.activeDocument().Shape.Base = App.activeDocument().Box
App.activeDocument().Shape.Tool = App.activeDocument().Fusion1
# Ocultar todas las formas intermedias 
Gui.activeDocument().Box.Visibility=False
Gui.activeDocument().Box1.Visibility=False
Gui.activeDocument().Box2.Visibility=False
Gui.activeDocument().Cylinder.Visibility=False
Gui.activeDocument().Fusion.Visibility=False
Gui.activeDocument().Fusion1.Visibility=False

Inserta un objeto página (Page object), y le asigna una plantilla

App.activeDocument().addObject('Drawing::FeaturePage','Page')
App.activeDocument().Page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'

Crea una vista del objeto "forma", define la posicion y la escala, y la asigna a la Página

App.activeDocument().addObject('Drawing::FeatureViewPart','View')
App.activeDocument().View.Source = App.activeDocument().Shape
App.activeDocument().View.Direction = (0.0,0.0,1.0)
App.activeDocument().View.X = 10.0
App.activeDocument().View.Y = 10.0
App.activeDocument().Page.addObject(App.activeDocument().View)

Crea una segunda vista del mismo objecto, pero esta vez la vista está girada 90 grados.

App.activeDocument().addObject('Drawing::FeatureViewPart','ViewRot')
App.activeDocument().ViewRot.Source = App.activeDocument().Shape
App.activeDocument().ViewRot.Direction = (0.0,0.0,1.0)
App.activeDocument().ViewRot.X = 290.0
App.activeDocument().ViewRot.Y = 30.0
App.activeDocument().ViewRot.Scale = 1.0
App.activeDocument().ViewRot.Rotation = 90.0
App.activeDocument().Page.addObject(App.activeDocument().ViewRot) 

Crea una tercera vista del mismo objeto, pero en proyección isométrica. Se activa también la ocultación de líneas.

App.activeDocument().addObject('Drawing::FeatureViewPart','ViewIso')
App.activeDocument().ViewIso.Source = App.activeDocument().Shape
App.activeDocument().ViewIso.Direction = (1.0,1.0,1.0)
App.activeDocument().ViewIso.X = 335.0
App.activeDocument().ViewIso.Y = 140.0
App.activeDocument().ViewIso.ShowHiddenLines = True
App.activeDocument().Page.addObject(App.activeDocument().ViewIso) 

Cambiamos algo, y actualizamos. Se regenera la vista y la página.

App.activeDocument().View.X = 30.0
App.activeDocument().View.Y = 30.0
App.activeDocument().View.Scale = 1.5
App.activeDocument().recompute()

Accediendo a los datos y las partes

Obtiene el fragmento de SVG de una sola vista

ViewSVG = App.activeDocument().View.ViewResult
print ViewSVG

Obtiene la página de resultados completa (Es un archivo en el directorio de archivos temporales, con permisos de solo lectura)

print "Resulting SVG document: ",App.activeDocument().Page.PageResult
file = open(App.activeDocument().Page.PageResult,"r")
print "Result page is ",len(file.readlines())," lines long"

Importante: Liberar el archivo!

del file

Inserta una vista con tu propio contenido:

App.activeDocument().addObject('Drawing::FeatureView','ViewSelf')
App.activeDocument().ViewSelf.ViewResult = """<g id="ViewSelf"
  stroke="rgb(0, 0, 0)"
  stroke-width="0.35"
  stroke-linecap="butt"
  stroke-linejoin="miter"
  transform="translate(30,30)"
  fill="#00cc00"
  >

  <ellipse cx="40" cy="40" rx="30" ry="15"/>
  </g>
"""
App.activeDocument().Page.addObject(App.activeDocument().ViewSelf)
App.activeDocument().recompute()

del Shape,ViewSVG, resultSVG

Eso da como resultado lo siguiente:

Plantillas

FreeCAD viene con un juego de plantillas básico, pero se pueden obtener más en la página Drawing templates/es.


Part Module/es
Raytracing Module/es
Available translations of this page: Template:Se