Verwenden von Python-Skripten
Befehle
BIMPYTHON
Über BIMPYTHON
Der Befehl BIMPYTHON ermöglicht die Abfrage und Verwaltung von Daten aus einem Modell innerhalb von BricsCAD BIM, mit einem geeigneten .py Python-Skript.
Die Python-Skripte können so einfach sein wie das Abrufen von Mengen und zugehörigen Eigenschaften von Objekten und BIM-Objekten oder so aufwendig wie die Implementierung einer Reihe von Berechnungen auf der Grundlage der verfügbaren Modellparameter.
BricsCAD wird nicht mit Python Shell geliefert, daher müssen die Skripte in einer Text- oder Code-Editor-Anwendung vorbereitet werden.
Die Programmiersprache Python ist zusammen mit ihren Standardbibliotheken in BricsCAD BIM eingebettet, so dass Sie diese nicht separat installieren müssen, es sei denn, Sie haben eigene Pakete und Bibliotheken, die Sie in Ihren Skripten verwenden möchten.
Mehrere Python-Skriptbeispiele sind im BricsCAD BIM-Installationsprogramm verfügbar.
Vorgehensweise: Erstellen eines Python-Skripts mit dem BIMPYTHON-Modul
- Bevor Sie Zugriff auf die API erhalten, importieren oder rufen Sie alle gewünschten Module auf, die Sie im Skript haben möchten.
Wenn sie nicht Teil der Python-Standardbibliothek sind, stellen Sie sicher, dass sie zuvor separat installiert wurden.
Sie können "importieren" für ein Standardmodul verwenden, z. B. Mathematik, und "importieren als" für ein externes Modul, z. B. Pyplot, das eine Sammlung von Funktionen im Matplotlib-Paket ist:
import math import matplotlib.pyplot as plt
- Wenn Ihre gewünschten Bibliotheken "aufgerufen" sind, besteht der nächste Schritt darin, Zugriff auf die API zu erhalten, um die Elemente innerhalb des BricsCAD-Modells abzufragen. Dies ist der Bereich der BIM-Objekte und dient als Einstiegspunkt in das Modell.
Importieren Sie das aktuelle Modell aus dem Bricscad-Modul:
from bricscad.bim import current_model
- Jetzt können Sie das Modell mit diesen Beispielanweisungen abfragen.
# Informationen über die Längen von Wänden im Modell anzeigen lengths = [wall.prop('Length') for wall in current_model().filter(Type='Wall')] print(f'wall lengths. max: {max(lengths)}, avg: {sum(lengths)/len(lengths)}')
# Erstellen Sie eine Auswahl und drucken Sie die Objekte current_model().filter(Type='Wall', IsExternal=True).select() for wall in bim_model.filter(Type='Wall', IsExternal=True, Length=max(lengths)): print(wall)
Die Mapper der bricscad.bim.Objects sind verkettbar. Dies ist ein Beispiel, um die Teile des Daches zu erhalten, die sich in der Nähe einer Wand befinden:
# Holen Sie sich alle Teile des Daches in eine Reichweite von 40 cm von allen Wänden
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)
Während dies ein Beispiel für eine Funktionsanweisung zum Filtern ist:
# Dachteile filtern, die länger als 50 Projekteinheiten sind
def is_long(obj):
return obj.prop('Length') > 50
roof_parts.filter(is_long)
Sie können Daten in verschiedenen Formaten exportieren und anzeigen:
# Erstellen Sie eine Wörterbuchliste
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')]
# Nach .json exportieren
import json
file = open('path/to/file.json', 'w+')
file.write(json.dumps(wall_info, indent=4))
file.close()
# Plotten eines Histogramms import
matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame(wall_info)
df.hist();
plt.show()
# Nach .csv exportieren
df.to_csv(r'path/to/file.csv', index = False, header=True)
Für weitere Informationen über die BricsCAD-API und ihre verschiedenen Klassen lesen Sie bitte das Kapitel über die API weiter unten.
Vorgehensweise: Ausführen des Python-Skripts
- Öffnen Sie eine neue Datei oder eine BricsCAD-Datei, in der Sie ein Python-Skript ausführen möchten.
- Geben Sie BIMPYTHON in die Befehlszeile ein und drücken Sie die Eingabetaste.
- Es wird ein Dialog angezeigt, in dem Sie nur eine Python-Skriptdatei (*.py) auswählen können. Wählen Sie sie aus, und klicken Sie auf Öffnen, um die Datei auszuführen.
- Sofern Sie nicht angegeben haben, dass die Daten in einem externen Programm außerhalb von BricsCAD exportiert oder angezeigt werden sollen, meldet BricsCAD die Ausgabe in der Befehlszeile.
Referenz
Klassen und Syntaxen
- get_property(prop_name)
- Gibt den Eigenschaftswert des Objekts mit dem angegebenen Namen zurück.
- set_property(prop_name, value)
- Legt einen Wert für den Eigenschaftsnamen (prop_name) fest.
- distance_to( other_obj, units='mm', distance_mode='exact' )
-
- Berechnen Sie die Entfernung zwischen zwei Objekten.
- Optionen für Argument units: jeder Einheitswert gemäß INSUNITS-Variable ('Zentimeter', 'Fuß', 'Parsec' usw.) und diese Abkürzungen: 'mm', 'cm, 'm', 'km', 'ft'.
- Optionen für Argument distance_mode: 'bbox_center', 'bbox', exact'.
- parts()
- Gibt die Unterelemente dieses Objekts zurück.
- parent()
- Das Gegenteil von parts(), gibt das übergeordnete Objekt dieses Unterelements zurück.
- plies()
- Gibt das zugeordnete iterierbare Objekt
Plies
zurück.
- within_distance( distance, unit='mm', distance_mode='exact', search_range=bim_model )
-
- Gibt die Objekte zurück, die sich innerhalb des Abstands des Arguments distance befinden.
- Optionen für Argument units: sehen Sie distance_to.
- Optionen für Argument distance_mode: sehen Sie distance_to.
- openings()
- Gibt die zugehörigen Öffnungen dieses Objekts zurück.
- spaces()
- Gibt die zugeordneten Bereiche dieses Objekts zurück.
- bounding_elements()
- Gibt die zugehörigen Begrenzungselemente dieses (Bereich-) Objekts zurück.
- select()
- Objekt zur Auswahl hinzufügen.
- deselect()
- Objekt aus Auswahl entfernen.
- __eq__() and __hash__()
- Macht Object interoperabel mit z. B. Python-Satz oder Wörterbuch.
- class bricscad.bim.Objects
- Definiert die Sammlung von BricsCAD BIM-Objekten
- bricscad.bim.list_properties(obj)
- Gibt die Liste der verfügbaren Eigenschaften der übergebenen Entität oder Schicht zurück.
- bricscad.bim.current_model()
- Gibt die Objekte im Modelbereich des aktiven Dokuments zurück.
- class bricscad.bim.Plies
- Indexierter, aufteilbarer Container mit Ply-Objekten.
- class bricscad.bim.Ply
- Einzelnes Schicht-Objekt.