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.

Diversi script Python sono disponibili nel programma di installazione BricsCAD (BIM).

Procedura: configurazione di uno script Python con il modulo BIMPYTHON

  1. 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
  2. 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
  3. 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

  1. Aprire un nuovo file o un file BricsCAD in cui si desidera eseguire uno script Python.
  2. Digitare BIMPYTHON nella barra dei comandi e premere Invio.
  3. 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.


  4. 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(nome_proprietà)
Restituisce il valore della proprietà dell'Oggetto con il nome specificato.
set_property(nome_proprietà, valore)
Imposta un valore per il nome della proprietà (prop_name).
distance_to( altro_oggetto, unità='mm', modalità_distanza='exact' )
  • Calcola la distanza tra due Oggetti.
  • Opzioni per l'argomento units: qualsiasi tipo di unità come da variabile insunits ('Centimeters', 'Feet', 'Parsecs' etc.) e queste abbreviazioni: 'mm', 'cm, 'm', 'km', 'ft'.
  • Opzioni per l'argomento modalità_distanza: '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 l'oggetto Plies iterabile associato.
within_distance( distanza, unità='mm', modalità_distanza='exact', range_di_ricerca=bim_model )
  • Restituisce gli oggetti che si trovano entro la distanza dell'argomento distanza.
  • Opzioni per l'argomento units: vedere distance_to.
  • Opzioni per l'argomento modalità_distanza: vedere 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
filter( funzione )
Filtraggio di questo intervallo con un parametro funzione.
filter( **condizioni )
Filtraggio di questo intervallo con condizioni fornite come argomenti di parole chiave.
parts()
Restituisce le parti di tutti gli elementi di questo intervallo.
parents()
Restituisce gli oggetti principali degli elementi in questo intervallo.
within_distance( distanza, unità='undefined', modalità_distanza='exact', range_di_ricerca=bim_model )
Restituisce gli oggetti che si trovano dentro una distanza da qualsiasi oggetto in questo intervallo.
openings()
Restituisce le aperture associate di questi oggetti.
spaces()
Restituisce gli spazi associati di questi oggetti.
bounding_elements()
Restituisce gli elementi di contorno associati di questi oggetti (space).
select()
Aggiungi Oggetti alla selezione.
deselect()
Rimuovi Oggetti dalla selezione.
__len__ ()
Restituisce il numero di oggetti in questo intervallo.
bricscad.bim.list_properties(oggetto)
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.
Classe bricscad.bim.Plies
Contenitore sezionabile e indicizzato di oggetti Strato.
__iter__()
__getitem__( indice )
__getitem__( strato )
__len__()
Classe bricscad.bim.Ply
Oggetto singolo strato.
get_property(nome_proprietà)
Restituisce il valore della proprietà dell'oggetto Strato con il nome fornito.