Saltar al contenido
> 💻 🧠 Código 1001 > 📖 Guías > FreeCAD (software) > Cómo crear addons para FreeCAD > Lección 3. Creación de objetos 3D: caja paramétrica

Lección 3. Creación de objetos 3D: caja paramétrica

  • por

📘 Curso de formación: Creación de complementos para FreeCAD

Objetivo de la lección: aprender a crear cuerpos sólidos (cajas, cilindros) a través de Python, comprender la estructura del documento de FreeCAD y crear un complemento que construya una pieza paramétrica.


🧱 Parte 1. ¿Cómo está estructurado un documento en FreeCAD?

Antes de crear objetos, es importante comprender la jerarquía de datos en FreeCAD:

Document (documento)
└── Object (objeto)
    └── Shape (geometría)
  • Document — es un archivo abierto (.FCStd). Todo lo que cree se encuentra dentro del documento.
  • Object — es un objeto paramétrico: caja, cilindro, boceto, etc.
  • Shape — es un cuerpo geométrico (B-Rep) que se puede visualizar.

💡 Siempre trabaja en el contexto del documento activo.

¿Cómo obtener el documento actual?

doc = FreeCAD.ActiveDocument

Si no hay un documento, cree uno nuevo:

doc = FreeCAD.newDocument("MyDesign")

📦 Parte 2. Creación de una caja (Box) a través de Python

El objeto 3D más simple en FreeCAD es Part::Box.

Ejemplo de código:

doc = FreeCAD.ActiveDocument or FreeCAD.newDocument()
box = doc.addObject("Part::Box", "MyBox")
box.Length = 20.0
box.Width = 10.0
box.Height = 5.0
doc.recompute()

¿Qué sucede aquí?

  1. doc.addObject("Part::Box", "MyBox")
    → crea un nuevo objeto de tipo Box con el nombre "MyBox"
  2. El objeto tiene propiedades paramétricas: Length, Width, Height
  3. doc.recompute()
    → reconstruye el modelo (¡obligatorio después de cambiar los parámetros!)

🔸 Todas las dimensiones están en milímetros (por defecto en FreeCAD).


🛠 Parte 3. Complemento: «Caja paramétrica»

Ahora crearemos un complemento que crea una caja con las dimensiones especificadas.

Paso 1. Cree una carpeta

.../Mod/ParamBoxAddon/

Paso 2. Archivo InitGui.py

# InitGui.py
import FreeCADGui
from ParamBoxAddon.param_box_workbench import ParamBoxWorkbench

FreeCADGui.addWorkbench(ParamBoxWorkbench())

Paso 3. Archivo param_box_workbench.py

# param_box_workbench.py
import FreeCAD, FreeCADGui

class CreateBoxCommand:
    def GetResources(self):
        return {
            "MenuText": "Create Box",
            "ToolTip": "Create a parametric box with default size"
        }

    def Activated(self):
        # Obtener o crear un documento
        doc = FreeCAD.ActiveDocument
        if not doc:
            doc = FreeCAD.newDocument("BoxDesign")

        # Crear objeto Box
        box = doc.addObject("Part::Box", "MyParamBox")
        box.Length = 30.0
        box.Width = 20.0
        box.Height = 10.0

        # ¡Recalcular es obligatorio!
        doc.recompute()

        # Opcional: enfocar en el objeto
        FreeCADGui.Selection.clearSelection()
        FreeCADGui.Selection.addSelection(box)

    def IsActive(self):
        return True


class ParamBoxWorkbench(FreeCADGui.Workbench):
    MenuText = "Parametric Box"
    ToolTip = "Create a simple parametric box"

    def Initialize(self):
        self.list = ["CreateBoxCommand"]
        self.appendToolbar("Box Tools", self.list)
        self.appendMenu("ParamBox", self.list)

    def GetClassName(self):
        return "Gui::PythonWorkbench"


FreeCADGui.addCommand("CreateBoxCommand", CreateBoxCommand())

▶️ Paso 4. Comprobación del funcionamiento

  1. Guarde los archivos
  2. Reinicie FreeCAD
  3. Seleccione el entorno de trabajo «Parametric Box»
  4. Haga clic en el botón «Create Box»

✅ Debería aparecer un paralelepípedo gris en la ventana 3D.

¡Compruebe la parametricidad!

  1. En el árbol del proyecto (Modelo), haga doble clic en MyParamBox
  2. En el panel Datos, cambie, por ejemplo, Length a 50
  3. Pulse Enter → ¡el modelo se actualizará automáticamente!

Esto es el modelado paramétrico.


🔍 Parte 4. Otros objetos básicos

Puede crear no solo cajas. Aquí tiene algunos ejemplos:

Cilindro

cyl = doc.addObject("Part::Cylinder", "MyCylinder")
cyl.Radius = 10.0
cyl.Height = 25.0

Esfera

sphere = doc.addObject("Part::Sphere", "MySphere")
sphere.Radius = 15.0

Cono

cone = doc.addObject("Part::Cone", "MyCone")
cone.Radius1 = 10.0  # radio inferior
cone.Radius2 = 5.0   # radio superior
cone.Height = 20.0

💡 Todos estos objetos se encuentran en el módulo Part, que está integrado en FreeCAD.


🧪 Tarea práctica

  1. Modifique el complemento para que cree un cilindro, en lugar de una caja.
  2. Haga que al crear un objeto, este reciba un nombre único (por ejemplo, Box_1, Box_2…), si ya existe un objeto con ese nombre.
  3. Añada un segundo comando — «Create Cylinder» — al mismo entorno de trabajo.

Sugerencia para el nombre único:

base_name = "MyBox"
index = 1
name = base_name
while name in doc.Objects:
    name = f"{base_name}_{index}"
    index += 1
box = doc.addObject("Part::Box", name)

💡 Consejos para la depuración

  • Siempre llame a doc.recompute() después de cambiar los parámetros
  • Utilice FreeCAD.Console.PrintMessage("Texto\n") para la depuración (los mensajes aparecerán en la Vista de informe)
  • Compruebe si el documento existe antes de trabajar con él

▶️ ¿Qué sigue?

En la Lección 4 aprenderemos a:

  • Crear una interfaz gráfica de usuario (GUI) con campos de entrada
  • Crear una ventana donde el usuario introduzca la longitud, la anchura y la altura
  • Y al pulsar un botón, se construirá una caja con esos parámetros

¡Esto ya será una herramienta real, no solo una demostración!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *