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.