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

  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 sulle 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 dove si vuole eseguire uno script Python.
  2. Digita 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 nella Barra dei comandi.

Riferimento

Classi API 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 unita: qualsiasi valore di unità da insunits ('Centimetri', 'Piedi', 'Parsec' ecc.) e le abbreviazioni 'mm', 'cm', 'm', 'km' e '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 gli oggetti che si trovano entro la distanza dell'argomento distanza.
  • 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()
Aggiunge Oggetti alla selezione.
deselect()
Rimuove Oggetti dalla selezione.
__eq__() and __hash__()
Rende l'Oggetto interoperabile, ad esempio, con un insieme o dizionario Python.
classe bricscad.bim.Objects
Definisce la collezione degli Oggetti di BricsCAD BIM
filter( function )
Filtra questo intervallo con un parametro di funzione.
filter( **conditions )
Filtra questo intervallo con condizioni date come argomenti per parole chiave.
parts()
Restituisce le parti di tutti gli elementi in questo intervallo.
parents()
Restituisce gli oggetti genitore degli elementi in questo intervallo.
within_distance( distance, unit='undefined', distance_mode='exact', search_range=bim_model )
Restituisce quegli 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()
Aggiunge Oggetti alla selezione.
deselect()
Rimuove Oggetti dalla selezione.
__len__ ()
Restituisce il numero di oggetti in questo intervallo.
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:
__iter__()
__getitem__( index )
__getitem__( slice )
__len__()
class bricscad.bim.Ply
Oggetto singolo strato.
get_property(prop_name)
Restituisce il valore della proprietà dell'oggetto Stratocon il nome specificato.