es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python FreeCad ActiveDocument con variable

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y el resultado en markdown.

Soy bastante nuevo en Python, por lo que la respuesta a mi pregunta puede ser simple o imposible.

En el siguiente ejemplo que se muestra a continuación, me gustaría sustituir el nombre del objeto “myBox” por una variable boxName.

boxName = “myBox”
FreeCAD.ActiveDocument.addObject(“Part::Box”, boxName)

Esto funciona:

FreeCAD.ActiveDocument.myBox.Length = 150

Esto no funciona:

FreeCAD.ActiveDocument. + boxName + .Length = 150

Obtengo un error de sintaxis:

El objeto “App.Document” no tiene el atributo “boxName” o cuando intento otras variaciones, obtengo este error:

(1): (‘sintaxis no válida’, (‘###/AppData/Roaming/FreeCAD/Macro/nyMacro.FCMacro’, 5, 24, ‘FreeCAD.ActiveDocument.+(boxName)+.Length = 150\n’))

Si es posible sustituir con una variable, estaré agradecido si alguien me muestra la sintaxis.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible remplazar el nombre del objeto “myBox” con una variable “boxName”. Aquí está la sintaxis correcta para hacerlo:

    boxName = "myBox"
    boxObject = FreeCAD.ActiveDocument.addObject("Part::Box", boxName)
    getattr(FreeCAD.ActiveDocument, boxName).Length = 150
    

    Aquí, primero asignamos la variable “boxName” al valor de cadena “myBox”. Luego, creamos el objeto de la caja y lo asignamos a la variable “boxObject”. Finalmente, usamos la función interna de Python “getattr()” para obtener el objeto con el nombre especificado en la variable “boxName” y cambiar su propiedad “Length” a 150.

    Tenga en cuenta que el error de sintaxis en su intento anterior se debió a intentar concatenar la variable “boxName” directamente en la expresión de acceso al atributo, lo cual no es una sintaxis válida en Python. En su lugar, necesitamos usar la función “getattr()” para obtener el objeto dinámicamente basado en el valor de la variable.

Comments are closed.