Motor Python
Os utilizadores também podem executar os seus scripts Python no Requirements & Systems Portal para realizar alguns cálculos através de código Python, de forma semelhante ao motor Octave. Além disso, isto também permite aos utilizadores aceder à API REST e efetuar modificações aos objetos individualmente ou em massa. O motor Python incorporado suporta atualmente os pacotes Python “Valispace”, pint e Scipy (inclui NumPy e outros). Nem todos os pacotes Python estão atualmente disponíveis.
Fluxo de scripts Python no módulo de scripting
O fluxo de trabalho típico num módulo de scripting que envolve o motor Python é apresentado na imagem abaixo. Caso o utilizador não pretenda efetuar um cálculo e queira fazer algumas alterações em massa através da API REST, pode escrever o código Python diretamente e executar o script.

Pacotes no motor Python
Uma vez que implementámos o motor Python no Requirements & Systems Portal como uma funcionalidade beta, o motor Python não suporta todos os pacotes. Atualmente, são suportados muito poucos pacotes. Os pacotes atualmente suportados estão listados aqui.
Exemplo de scripting em Python
Com o motor Python, o utilizador pode adicionar as entradas e a saída e escrever código Python para calcular os resultados. Isto é semelhante à forma como funciona com o Octave Engine no Requirements & Systems Portal. No exemplo abaixo, pode ver como escrever o script Python para adicionar um sub-bloco a um bloco.
from typing import Any, Dict
import valispace
def main(**kwargs) -> Dict[str, Any]:
"""
This is the main function to execute your script and it must exists.
Other functions and files can be also created. You have at your disposal
to import Valispace API, scipy, numpy and pint.
:param kwargs: Dictionary with data received from Valispace.
:type kwargs: Dict[str, Any]
:return: Dictionary with data to send back to Valispace.
:rtype: Dict[str, Any]
"""
# TODO: Write your code here
valispace = valispace.API(url="https://.valispace.com/", username = "", password = "") #add your deployment name, username and the password
# The ID of the Parent Component; If it is at the highest level, parent is null, but project need to be specified.
parent_component = 57111
# Object with the new Component Property
component = {
"name": "NewCompentName2",
"parent": parent_component
}
# Function to get Vali by the fullname
componentPosted = valispace.post("components/", component)
Aqui estão algumas ideias do que pode fazer com o módulo de scripting:
-
Criar um vali e adicioná-lo a vários componentes existentes
-
Efetuar edições em massa nos identificadores dos requisitos
-
Executar uma simulação com Python
-
Converter as unidades de todos os valis de potência para kW
-
Criar e executar um script para exportar a hierarquia de componentes
-
Criar uma exportação em formato ReqIF a partir dos requisitos
-
Criar uma lista de materiais extraindo o material, número do componente, massa e custo dos componentes