Utilizzare gli script Python
Comandi
BIMPYTHON
Informazioni su BIMPYTHON
Il comando BIMPYTHON consente di eseguire query e gestire i dati da un modello all'interno di BricsCAD® BIM, con un .py Script Python.
Gli script python possono essere semplici per ottenere quantità e proprietà associate agli oggetti e alle entità BIM, o elaborati per implementare una serie di calcoli basati sui parametri disponibili nel modello.
BricsCAD® non viene fornito con una shell Python, quindi gli script dovrebbero essere preparati in un'applicazione di editor di testo o codice.
Il linguaggio di programmazione Python, insieme alle sue librerie standard, è incorporato in BricsCAD® BIM quindi non è necessario installarle separatamente, a meno che non si dispongano di pacchetti e librerie personalizzate che si desidera utilizzare negli script.
Nel programma di installazione di BricsCAD® BIM sono disponibili diversi esempi di script Python.
Procedura: configurazione di uno script Python con il modulo BIMPYTHON
- Prima di ottenere l'accesso all'API, importa o chiama tutti i moduli che vuoi avere nello script.
Se non fanno parte della libreria Python Standard, assicurarsi che siano stati installati separatamente in anticipo.
Puoi "importare" un modulo standard, come math e "importarlo come" esterno, ad esempio Pyplot, che è una raccolta di funzioni nel pacchetto Matplotlib:
import math import matplotlib.pyplot as plt - Con le librerie desiderate "chiamate", il passo successivo consiste nell'ottenere l'accesso all'API per interrogare gli elementi all'interno del modello BricsCAD®. Questo è l'intervallo di oggetti bim ed è un punto di ingresso del modello. 
Importare il current_model dal modulo bricscad:
da bricscad.bim import current_model - Ora, è possibile interrogare il modello con queste istruzioni di esempio.
# Visualizza le informazioni sulle lunghezze dei muri nel modello lengths = [wall.prop('Length') for wall in current_model().filter(Type='Wall')] print(f'wall lengths. max: {max(lengths)}, avg: {sum(lengths)/len(lengths)}')# Crea una selezione e stampa gli oggetti current_model().filter(Type='Wall', IsExternal=True).select() for wall in bim_model.filter(Type='Wall', IsExternal=True, Length=max(lengths)): print(wall) 
I mappatori del bricscad.bim.Objects sono concatenabili. Questo è un esempio per ottenere le parti del tetto che sono vicine a un muro:
# Ottieni tutte le parti del tetto entro un raggio di 40 cm da tutte le pareti 
roof_parts = current_model().filter(Type='Roof').parts()
roof_parts_close_to_wall = current_model().filter(Type='Wall').within_distance(40, 'cm', search_range=roof_parts) 
Mentre questo è un esempio di istruzione di una funzione per filtrare:
# Filtrare le parti del tetto più lunghe di 50 unità di progetto 
def is_long(obj):  
    return obj.prop('Length') > 50 
roof_parts.filter(is_long) 
È inoltre possibile esportare e mostrare i dati in vari formati:
# Crea una lista di dizionari 
wall_info = [ 
 {'Handle': wall.get_property('Handle'), 
        'Length': wall.get_property('Length'), 
        'Height': wall.get_property('Height') 
    } for wall in current_model().filter(Type='Wall')] 
# esporta in .json 
import json 
file = open('path/to/file.json', 'w+') 
file.write(json.dumps(wall_info, indent=4)) 
file.close() 
# tracciare un istogramma 
import matplotlib.pyplot as plt 
import pandas as pd 
df = pd.DataFrame(wall_info) 
df.hist(); 
plt.show() 
# esporta in .csv 
df.to_csv(r'path/to/file.csv', index = False, header=True) 
Per ulteriori informazioni sull'API BricsCAD e le sue varie classi, si prega di visitare il capitolo API qui sotto.
Procedura: esecuzione dello script Python
- Aprire un nuovo file o un file BricsCAD in cui si desidera eseguire uno script Python.
 - Digitare BIMPYTHON nella barra dei comandi e premere Invio.
 - Viene visualizzata una finestra di dialogo in cui è possibile selezionare solo un file script Python (*.py). Selezionare e cliccare su Apri per eseguire il file.

 - A meno che non siano stati specificati i dati da esportare o visualizzare in un programma esterno al di fuori di BricsCAD, BricsCAD segnala l'output nel pannello della barra dei comandi.
 
Riferimento
Classi e sintassi
- get_property(prop_name)
 - Restituisce il valore della proprietà dell'Oggetto con il nome specificato.
 
- set_property(prop_name, value)
 - Imposta un valore per il nome della proprietà (prop_name).
 
- distance_to( other_obj, units='mm', distance_mode='exact' )
 - 
- Calcola la distanza tra due Oggetti.
 - Opzioni per l'argomento units: qualsiasi valore di unità da insunits ('Centimeters', 'Feet', 'Parsecs' ecc.) e queste abbreviazioni: 'mm', 'cm, 'm', 'km', 'ft'.
 - Opzioni per l'argomento distance_mode: 'bbox_center', 'bbox', 'exact'.
 
 
- parts()
 - Restituisce i sottoelementi di questo oggetto.
 
- parent()
 - L'opposto di parts() restituisce l'oggetto padre di questo elemento secondario.
 
- plies()
 - Restituisce gli 
Stratiassociati all'oggetto. 
- within_distance( distance, unit='mm', distance_mode='exact', search_range=bim_model )
 - 
- Restituisce l'oggetto ObjectRange di oggetti che si trovano all'interno dell'argomento distance.
 - Opzioni per l'argomento units: vedere distance_to.
 - Opzioni per l'argomento distance_mode: vedi distance_to.
 
 
- openings()
 - Restituisce le aperture associate di questo oggetto.
 
- spaces()
 - Restituisce gli spazi associati di questo oggetto.
 
- bounding_elements()
 - Restituisce gli elementi di contorno associati di questo oggetto (space).
 
- select()
 - Aggiungi Oggetto alla selezione.
 
- deselect()
 - Rimuovi oggetto dalla selezione.
 
- __eq__() and __hash__()
 - Rende oggetto interoperabile con ad esempio set o dizionario python.
 
- classe bricscad.bim.Objects
 - Definisce la raccolta di oggetti di BricsCAD BIM
 
- bricscad.bim.list_properties(obj)
 - Restituisce l'elenco delle proprietà disponibili dell'entità passata o dello strato.
 
- bricscad.bim.current_model()
 - Restituisce gli oggetti nello spazio modello del documento attivo.
 
- class bricscad.bim.Plies
 - Contenitore sezionabile e indicizzato di oggetti Strato.
 
- class bricscad.bim.Ply
 - Oggetto singolo strato.
 

