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
Strati
associati 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.