Diferencia entre revisiones de «Obijuan:Notas sobre programación en python en Freecad»

De WikiRobotics
Saltar a: navegación, buscar
(Roadmap)
(Hito 2: Cambiar los parámetros del cilindro desde una GUI en FREECAD)
Línea 56: Línea 56:
 
sin embargo el objeto que se crea es un "shape". Las propiedades de altura y radio se pierden. Nos servirá por tanto para construir otros objetos, pero no para hacer algo paramétrico que cambie dinámicamente
 
sin embargo el objeto que se crea es un "shape". Las propiedades de altura y radio se pierden. Nos servirá por tanto para construir otros objetos, pero no para hacer algo paramétrico que cambie dinámicamente
  
== Hito 2: Cambiar los parámetros del cilindro desde una GUI en FREECAD ==
+
== Hito 2: Scripts con GUI en FREECAD ==
  
 
Ejemplo hola mundo para sacar una ventana emergente
 
Ejemplo hola mundo para sacar una ventana emergente

Revisión del 00:28 29 ago 2014

Introducción

Quiero aprender a programar piezas en Freecad, al estilo openscad, para poder hacer piezas paramétricas.

Empezaremos con ruedas paramétricas para printbots

Roadmap

  1. Hello world: programar un cilindro simple, con los parámetros h (grosor) y diámetro (d)
  2. scripts con GUI
  3. script empotrado en la "task" tab o otra ventana empotrada
  4. Script que permita cambiar los parámetros desde una GUI en freecad
  5. Programar la rueda del miniskybot, pero con esos mismos parametros variables
  6. Incluir 2 coronas: pequeña y grande y permitir que se puedan seleccionar una u otra para la rueda
  7. ¿Como crear un boton que al pulsarlo se abra el menú y permita meter una rueda definiendo sus parametros?
  8. ¿Cómo programar un workbench de printbots? que incluya botones con piezas: ruedas, portapilas, chásis...

Hito 0: Leer

Hito 1: programa "hola mundo"

Visualizar un cilindro genérico (el mismo que cuando se le da al botón de cilindro en el workbench part)

import FreeCAD
import Part

doc = App.ActiveDocument
cyl = doc.addObject("Part::Cylinder","Cylinder")
cyl.Label = "Cylinder"
doc.recompute()

Otro ejemplo, con la función cilindro definida, donde se le pasan los parámetros de altura y diámetro

import FreeCAD
import Part

def cylinder(h = 8, d = 56):
    doc = App.ActiveDocument
    cyl = doc.addObject("Part::Cylinder","Cylinder")
    cyl.Label = "Cylinder"
    cyl.Height = h
    cyl.Radius = d / 2.0 
cylinder() cylinder(h = 20, d =10) App.ActiveDocument.recompute()

He encontrado una forma más sencilla de hacer el cilindro:

import FreeCAD
import Part

#-- radius = 56, height = 8
cyl = Part.makeCylinder(56, 8)
Part.show(cyl)

sin embargo el objeto que se crea es un "shape". Las propiedades de altura y radio se pierden. Nos servirá por tanto para construir otros objetos, pero no para hacer algo paramétrico que cambie dinámicamente

Hito 2: Scripts con GUI en FREECAD

Ejemplo hola mundo para sacar una ventana emergente

from PyQt4 import QtGui
QtGui.QMessageBox.information(None,"Titulo","Hola Mundo!")

Log

  • 28/Agosto/2014: Comenzada esta página