Entorno de trabajo Hoja de cálculo

From FreeCAD Documentation
Revision as of 21:03, 27 February 2024 by Hasecilu (talk | contribs) (Created page with "El uso de la etiqueta de la hoja de cálculo tiene la ventaja de que se puede cambiar libremente para describir el contenido de la hoja de cálculo. También es más fácil identificar la hoja de cálculo que se está utilizando ya que el texto de la expresión coincide con la etiqueta que se muestra en las vistas de modelo y propiedades. Si decide cambiar la etiqueta de una hoja de cálculo, se actualizarán las referencias existentes al contenido de la hoja de cálcu...")
El icono del Ambiente de trabajo Hoja de cálculo

Introducción

El Entorno de trabajo de hojas de cálculo permite crear y editar hojas de cálculo, utilizar datos de la hoja de cálculo como parámetros en un modelo, rellenar la hoja de cálculo con datos recuperados de un modelo, realizar cálculos y exportar los datos a otras aplicaciones de hojas de cálculo como LibreOffice o Microsoft Excel.

Una hoja de cálculo con determinadas celdas rellenas de texto y cantidades

Herramientas

  • Importar: importa un archivo CSV a una hoja de cálculo.
  • Exportar: exporta un archivo CSV desde una hoja de cálculo.
  • Alinear al centro: alinea el contenido de las celdas seleccionadas al centro horizontalmente.
  • Alinear arriba: alinea el contenido de las celdas seleccionadas hacia arriba.
  • Alinear abajo: alinea el contenido de las celdas seleccionadas hacia abajo.
  • Estilo negrita: establece el contenido de las celdas seleccionadas a negrita.
  • Estilo itálica: establece el contenido de las celdas seleccionadas a itálica.
  • Estilo subrayado: establece el contenido de las celdas seleccionadas a subrayar.
  • Negro y Blanco establecen los colores de primer plano y de fondo de las celdas seleccionadas.

Preferencias

Eliminar celdas puede ser peligroso

Note que eliminar celdas con datos puede romper la hoja de cálculo y tu modelo si este se basa en la hoja de cálculo. No será advertido previamente si esto sucede.

Inserte elimine filas y columnas

Filas y columnas pueden ser insertadas o eliminadas haciendo clic derecho en un encabezado de fila o columna y seleccionando la opción apropiada en el menú contextual. Es posible seleccionar primero varias filas o columnas. Ya sea manteniendo presionado la tecla Ctrl al seleccionar los encabezados, o manteniendo presionado el botón del mouse izquierdo y arrastrando.

Editar celdas

El contenido de una celda se puede editar seleccionando la celda e ingresando un valor en el cuadro de entrada Content en la parte superior de la ventana. Para editar una celda en el lugar, selecciónela y presione F2, o haga doble clic en ella.

Eliminar celdas

Para eliminar una o más celdas selecciónelas y presione Supr. Esto eliminará sus contenidos, sus propiedades y sus alias. Para eliminar solo el contenido de una celda, se debe editar.

Cortar y copiar-pegar celdas

Las operaciones de cortar y copiar-pegar se pueden usar en las celdas de hojas de cálculo. Puede usar los atajos normales para estas operaciones: Ctrl X, Ctrl C y Ctrl V respectivamente. Para seleccionar múltiples celdas, mantenga presionada la tecla Ctrl mientras selecciona, o mantenga presionado el botón del mouse izquierdo y arrastre para seleccionar un rango de celda rectangular.

Las operaciones de cortar y copiar almacenan contenidos, propiedades y alias de las celdas en el portapapeles. La operación de pegar escribe los datos de tal manera que el contenido de la celda superior izquierda de los datos almacenados aparezcan en la celda activa. Otro contenido almacenado se coloca en relación con esa celda. Las fórmulas se actualizan en consecuencia. Los alias se pegan únicamente si son únicos.

Propiedades de la celda

Las propiedades de una celda de la hoja de cálculo pueden ser editadas haciendo clic derecho en la celda y seleccionando Propiedades... del menú contextual. El siguiente cuadro de diálogo aparece:

Como se indica en las pestañas, se pueden modificar las siguientes propiedades:

  • Color: Color del texto y del fondo
  • Alineación: Alineación horizontal y vertical del texto
  • Estilo: Estilo del texto: negrita, cursiva, subrayado
  • Unidades: Muestra las unidades para esta celda. Por favor, lea la sección Unidades más abajo.
  • Alias: Define un alias para esta celda. Este alias se puede utilizar en las fórmulas de las celdas y también en las expresiones generales; consulte la sección Datos de la hoja de cálculo en las expresiones para obtener más información.

Expresiones de la celda

Una celda de la hoja de cálculo puede contener un número, un texto o una expresión. Las expresiones deben comenzar con un signo igual '='.

Las expresiones de celdas pueden contener números, funciones, referencias a otras celdas y referencias a propiedades del modelo (Pero vea Limitaciones actuales más abajo). Una celda puede ser referenciada por su dirección (columna con letra MAYÚSCULA + número de fila, ejemplo: B4) o por su alias.

Nota: Las expresiones de celda son tratadas por FreeCAD como código de programación. Por lo tanto, cuando editas una celda el contenido podría ver que no sigue su configuración de visualización:

  • El separador decimal es siempre un punto. Pero comas pueden ser usadas al ingresar valores.
  • El número de decimales mostrados puede diferir de tu configuración de ajustes de preferencias.

Las referencias a objetos en el modelo se explican en Referencias a datos CAD más abajo. El uso de los valores de las celdas de la hoja de cálculo para definir las propiedades del modelo se explica en Datos de la hoja de cálculo en las expresiones más adelante. Para más información sobre las expresiones y las funciones disponibles, véase Expresiones.

Interacción entre las hojas de cálculo y el modelo CAD

Los datos en las celdas de una hoja de cálculo pueden usarse en expresiones de parámetros del modelo CAD. Por lo tanto, una hoja de cálculo puede usarse como fuente de valores de parámetros utilizados en todo un modelo, recolectando efectivamente los valores en un solo lugar. Cuando los valores se cambian en la hoja de cálculo, se propagan por todo el modelo.

De manera similar, las propiedades de los objetos del modelo CAD pueden usarse en expresiones en celdas de hoja de cálculo. Esto permite el uso de propiedades de objetos como volumen o área en la hoja de cálculo. Si se cambia el nombre de un objeto en el modelo CAD, el cambio se propagará automáticamente a cualquier referencia en expresiones de hoja de cálculo utilizando el nombre al que se cambió.

Se puede usar más de una hoja de cálculo en un documento. Una hoja de cálculo puede ser identificada usando su nombre o su etiqueta.

FreeCAD asignará automáticamente un nombre único a una hoja de cálculo cuando se cree. Estos nombres siguen el patrón Spreadsheet, Spreadsheet001, Spreadsheet002 y así sucesivamente. El nombre no se puede cambiar y no es visible en las propiedades de la hoja de cálculo. Se puede utilizar para hacer referencia a la hoja de cálculo en una Expresión (consulte Datos de la hoja de cálculo en expresiones a continuación).

La etiqueta de una hoja de cálculo se establece automáticamente con el nombre de la hoja de cálculo al momento de su creación. A diferencia del nombre, la etiqueta se puede cambiar, por ejemplo en el panel de propiedades o usando la acción Cambiar nombre del menú contextual. Por defecto, FreeCAD no acepta etiquetas duplicadas, pero existe una preferencia para anular esto. No se puede hacer referencia a las hojas de cálculo con etiquetas duplicadas en el mismo documento por su etiqueta.

FreeCAD comprueba si hay dependencias cíclicas. Consulte Limitaciones actuales.

Referencias a los datos CAD

Como se indicó anteriormente, se pueden hacer referencia a datos del modelo CAD en expresiones de hoja de cálculo.

La siguiente tabla muestra algunos ejemplos suponiendo que el modelo tiene una característica denominada "MyCube":

Datos CAD Celda en la hoja de cálculo Resultado
Longitud paramétrica de un cubo del entorno de trabajo Part =MyCube.Length Longitud con unidades mm
Volumen del cubo =MyCube.Shape.Volume Volumen en mm³ sin unidades
Tipo de forma de cubo =MyCube.Shape.ShapeType Cadena de texto: Solid
Etiqueta del cubo =MyCube.Label Cadena: MyCube
Coordenada X del centro de masa del cubo =MyCube.Shape.CenterOfMass.x Coordenada en mm sin unidades

Datos de la hoja de cálculo en expresiones

Para utilizar datos de hojas de cálculo en otras partes de FreeCAD, normalmente creará una Expresión que haga referencia a la hoja de cálculo y a la celda que contiene los datos que desea utilizar. Puede identificar hojas de cálculo por nombre o por etiqueta, y puede identificar las celdas por dirección o alias. El autocompletado está disponible para todas las formas de referencias.

Hoja de cálculo por nombre Hoja de cálculo por etiqueta
Celda por dirección =Spreadsheet042.B5 =<<MySpreadsheet>>.B5
Celda por alias =Spreadsheet042.MyAlias =<<MySpreadsheet>>.MyAlias

La forma recomendada de hacer referencia a los datos de una hoja de cálculo es utilizar la etiqueta de la hoja de cálculo y el nombre del alias de la celda. Para obtener una explicación más detallada de los pros y los contras de los modos de referencia, consulte la sección ampliada a continuación.

El uso de la etiqueta de la hoja de cálculo tiene la ventaja de que se puede cambiar libremente para describir el contenido de la hoja de cálculo. También es más fácil identificar la hoja de cálculo que se está utilizando ya que el texto de la expresión coincide con la etiqueta que se muestra en las vistas de modelo y propiedades. Si decide cambiar la etiqueta de una hoja de cálculo, se actualizarán las referencias existentes al contenido de la hoja de cálculo, por lo que no romperá sus expresiones al cambiar el nombre de la hoja de cálculo. El nombre interno de la hoja de cálculo no está disponible en ningún lugar excepto en el editor de expresiones, por lo que si usa el nombre interno y luego decide cambiar el nombre de las hojas de cálculo, es posible que le resulte difícil rastrear los datos de la expresión hasta su origen.

Be aware that when you create a new spreadsheet, the name and the label are the same, so it is easy to accidentally use the spreadsheet name instead of the label. A simple way to avoid this is to give the spreadsheet a meaningful name before starting to use it in expressions.

While you may use the row and column number in an expression to reference a cell, best practice is to give the cell an alias name and use that. See Cell properties on how to set the alias. For example, if the data in cell B1 contained the length parameter for an object, an alias name of MyObject_Length would allow the value to be referred to as <<MyParams>>.MyObject_Length instead of Spreadsheet.B1. Besides being much easier to read and understand, alias names are also much easier to change if you decide to adjust the structure of your spreadsheet. Using an alias also has the advantage that it is reasier to see which cells are used to control other parts of the document. Note that FreeCAD will automatically adjust the positional references in expressions if you insert or remove rows and columns in the spreadsheet, so even if you use row and column numbers in an expression, you can insert rows and columns without breaking the references to the surrounding cells.

Modelos complejos y recálculos

Editing a spreadsheet will trigger a recompute of the 3D model, even if the changes do not affect the model. For a complex model a recompute can take a long time, and having to wait after every single edit is of course quite annoying.

There are three solutions to deal with this:

  1. Temporarily skip recomputes:
    • In the Tree view right-click the document that contains the spreadsheet.
    • Select the Skip recomputes option from the context menu.
    • There is a big disadvantage to this solution. New values entered in the spreadsheet will not be displayed until the document is recomputed. Instead #PENDING is shown.
    • You can either recompute manually, using the Std Refresh command, or disable Skip recomputes when you are done editing.
  2. Use a macro to automatically skip recomputes while editing a spreadsheet:
    • Download and run skipSheet.FCMacro.
    • This solution saves a few steps compared to the first solution, but also has the mentioned disadvantage.
  3. Put the spreadsheet in a separate FreeCAD file:
    • You can reference spreadsheet data from an external .FCStd file with this syntax: =NameOfFile#<<MySpreadsheet>>.MyAlias.
    • The advantage of having the spreadsheet in another file over switching off recomputes is that the spreadsheet itself does get recomputed.
    • The disadvantage is that the model won't automatically recompute after changes to the spreadsheet.
    • In the scenario where you first open the 'spreadsheet' file, change one or more values and then open the 'model' file, there won't be any indication that the model needs to be recomputed. But if both files are open the Std Refresh icon will update correctly for the 'model' file after changes to the 'spreadsheet' file.

Unidades

The Spreadsheet has a notion of dimension (units) associated with cell values. A number entered without an associated unit has no dimension. The unit should be entered immediately following the number value, with no intervening space. If a number has an associated unit, that unit will be used in all calculations. For example, the multiplication of two lengths with the unit mm gives an area with the unit mm².

If a cell contains a value which represents a dimension, it should be entered with its associated unit. While in many simple cases one can get by with a dimensionless value, it is unwise to not enter the unit. If a value representing a dimension is entered without its associated unit, there are some sequences of operations which cause FreeCAD to complain of incompatible units in an expression when it appears the expression should be valid. (This may be better understood by viewing this thread in the FreeCAD forums.)

You can change the units displayed for a cell value using the Cell properties dialog. This does not change the value contained in the cell; it only converts the existing value for display. The value used for calculations does not change, and the results of formulas using the value do not change. For example, a cell containing the value "5.08cm" can be displayed as "2in" by changing the units tab value to "in".

A dimensionless number cannot be changed to a number with a unit by the cell properties dialog. One can put in a unit string, and that string will be displayed; but the cell still contains a dimensionless number. In order to change a dimensionless value to a value with a dimension, the value itself must be re-entered with its associated unit.

Occasionally it may be desirable to get rid of a dimension in an expression. This can be done by multiplying by 1 with a reciprocal unit.

Importación y exportación

CSV format

FreeCAD spreadsheets can be imported and exported to the CSV format which can also be read and written by most other spreadsheet applications such as Microsoft Excel or LibreOffice Calc. See Spreadsheet Import and Spreadsheet Export for more information.

XLSX format

Spreadsheets in the Excel-format XLSX can be imported with the Std Import command or the Std Open command. The following features are supported:

  • All functions that are also available in the FreeCAD spreadsheet. Other functions give an error in the corresponding cell after import.
  • Alias names for cells.
  • More than one sheet in the Excel-spreadsheet. In this case one FreeCAD spreadsheet is created for each Excel sheet.

Other functionality is not imported into the FreeCAD spreadsheet.

Impresión

To handle the page setup necessary for printing, FreeCAD spreadsheets are printed by inserting them into a TechDraw Spreadsheet View.

Limitaciones actuales

FreeCAD checks for cyclic dependencies when it recomputes. By design, that check stops at the level of the spreadsheet object. As a consequence, you should not have a spreadsheet which contains both cells whose values are used to specify parameters to the model, and cells whose values use output from the model. For example, you cannot have cells specifying the length, width, and height of an object, and another cell which references the total volume of the resulting shape. This restriction can be surmounted by having two spreadsheets: one used as a data-source for input parameters to the model and the other used for calculations based on resultant geometry-data.

Enlazamiento de celdas

introduced in version 0.20

Es posible enlazar el contenido de unas celdas a otras celdas en la hoja de cálculo. Esto puede ser útil cuando se trata de tablas grandes o para obtener contenido de celda de otra hoja de cálculo.

Crear enlaces

Para enlazar, por ejemplo, el rango de celdas A3-C4 al rango de celdas B1-D2:

  1. Seleccione el rango de celdas A3-C4.
  2. Clic derecho y seleccione Enlace... del menú contextual.
  3. The Bind Spreadsheet Cells dialog opens.
  4. Set the range B1-D2 for the To cells:
  5. Press OK.
  6. Bound cells have a blue border to highlight the binding.
  7. If you now enter something in cell C1, the same will immediately appear in cell B3.

The spreadsheet may now look like this

Change binding

  1. Right-click a bound cell (there is no need to highlight the whole bound range) and select Bind... from the context menu.
  2. The Bind Spreadsheet Cells dialog opens.
  3. Change one or more options. Note that the Bind cells, the bound cell range, cannot be changed.
  4. Press OK.

Remove binding

  1. Right-click a bound cell (there is no need to highlight the whole bound range) and select Bind... from the context menu.
  2. The Bind Spreadsheet Cells dialog opens.
  3. Press Unbind.

Notes

  • The Hide dependency of binding option can be used to prevent problems with cyclic dependencies between spreadsheets. Selecting it is necessary when, for example, cells in Spreadsheet A are bound to Spreadsheet B, while cells in Spreadsheet B, in turn, are bound to some other cells in Spreadsheet A. This option should be used with caution:
    • Hiding dependencies can be dangerous because broken dependencies can damage your FreeCAD file. For example, when you delete a spreadsheet you will not be warned about hidden dependencies.
    • When you open a document with a spreadsheet containing a hidden dependency, you will get the spreadsheet marked to be recomputed. This is because a cyclic dependency cannot be recomputed automatically. To recompute the Std Refresh tool must be used.
  • The cell binding has a range check and warns you about mismatched ranges. For example binding 1x3 cells to 3x2 cells cannot work because it is unknown which 3 cells of the original 6 cells should be used.
  • You cannot change the cell range of an existing binding. You must first unbind the cells and then create a new binding.
  • The frame color indicating the binding cannot be changed yet.

Tablas de configuración

introduced in version 0.20

Puedes usar hojas de cálculo para crear tablas de configuración con conjuntos de parámetros predefinidos para tu modelo, y después cambiar dinamicamente que configuración usar. Vea este post del foro si quiere saber más sobre el funcionamiento interno de esta característica.

Expandir esta sección para un breve tutorial de como crear una tabla de configuración.

  1. En un nuevo documento, primero cree una Std Pieza, después cree un Part Box, un Part Cylinder y una hoja de cálculo.
  2. La caja y el cilindro se colocan automáticamente en el contenedor Std Pieza. Coloque manualmente la hoja de cálculo en el contenedor también.
  3. En la hoja de cálculo ingrese the contenido mostrado abajo. Establezca el alias para B2 como width, C2 como length y D2 como radius:
  4. Enlce las expresionesSpreadsheet.width y Spreadsheet.length a las propiedades DatosWidth y DatosLength de la caja, respectivamente:
  5. Enlace la expresión Spreadsheet.radius a la propiedad DatosRadius del cilindro. Tambieén cambie la DatosHeight del cilindro a 5 mm para que sea más bajo que la caja.
  6. Clic derecho en la celda A2 en la hoja de cálculo y seleccione Tabla de configuración... del menú contextual.
  7. El cuadro de diálogo Configurar tabl de configuración se abre.
  8. Ingrese lo siguiente:
  9. Presione OK.
  10. Se agregará una nueva propiedad llamada DatosConfiguration al contenedor Std Part para elegir la configuración como se muestra a continuación:

Puede usar un Std Link o un PartDesign SubShapeBinder para instanciar una Instancia de una Variante de un objeto configurable con los siguientes pasos:

  1. Cree un Std Link al contenedor Std Part y configure su propiedad DatosLink Copy On Change a Enabled.
  2. Mueva el Link a un nuevo lugar cambiando su DatosPosición para que sea más fácil distinguirlo del objeto original.
  3. Seleccione una DatosConfiguración diferente para el Link para crear una instancia de una variante.

Pasos similares se aplican a un PartDesign SubShapeBinder, excepto que su propiedad para activar una instancia de una variante se llama DatosBind Copy On Change.

Scripting básico

import Spreadsheet
sheet = App.ActiveDocument.addObject("Spreadsheet::Sheet","MySpreadsheet")
sheet.Label = "Dimensions"

sheet.set('A1','10mm')
sheet.recompute()
sheet.get('A1')

sheet.setAlias('B1','Diameter')
sheet.set('Diameter','20mm')
sheet.recompute()
sheet.get('Diameter')