Korzystanie ze skryptów Python

Polecenia

BIMPYTHON

O BIMPYTHON

Polecenie BIMPYTHON umożliwia wysyłanie zapytań i zarządzanie danymi z modelu w ramach BricsCAD BIM, z odpowiednim .py Skrypt Python.

Skrypty Python mogą być tak proste, jak uzyskiwanie ilości i powiązanych właściwości obiektów i jednostek BIM, lub tak skomplikowane, jak implementacja serii obliczeń w oparciu o dostępne parametry modelu.

BricsCAD nie jest dostarczana z Python Shell, więc skrypty musiałyby być przygotowywane w aplikacji tekstowej lub edytorze kodu.

Język programowania Python, wraz z jego standardowymi bibliotekami, jest wbudowany w BricsCAD BIM, więc nie ma potrzeby instalowania ich osobno, chyba że masz niestandardowe pakiety i biblioteki, których chcesz używać w swoich skryptach.

Kilka przykładów skryptów Python jest dostępnych w instalatorze BricsCAD BIM.

Procedura: konfiguracja skryptu Python z modułem BIMPYTHON

  1. Przed uzyskaniem dostępu do API zaimportuj lub "wywołaj" dowolne moduły, które chcesz mieć w skrypcie.

    Jeśli nie są one częścią standardowej biblioteki Pythona, upewnij się, że zostały wcześniej zainstalowane osobno.

    Możesz "zaimportować" standardowy moduł, taki jak math i "zaimportować jako" zewnętrzny, na przykład Pyplot, który jest zbiorem funkcji w pakiecie Matplotlib:

    import math 
    import matplotlib.pyplot as plt
  2. Mając wybrane biblioteki "o nazwie", następnym krokiem jest uzyskanie dostępu do API w celu zapytania o elementy w modelu BricsCAD. Jest to zakres obiektów bim i służy jako punkt wejścia do modelu.

    Zaimportuj current_model z modułu bricscad:

    from bricscad.bim import current_model
  3. Teraz możesz zapytać o model za pomocą tych przykładowych instrukcji.
    # Display info about the lengths of walls in the model 
    lengths = [wall.prop('Length') for wall in current_model().filter(Type='Wall')] 
    print(f'wall lengths. max: {max(lengths)}, avg: {sum(lengths)/len(lengths)}") 
    # Create a selection and print the objects 
    current_model().filter(Type='Wall', IsExternal=True).select() 
    for wall in bim_model.filter(Type='Wall', IsExternal=True, Length=max(lengths)): 
     print(wall) 

Mappery bricscad.bim.Objects są łańcuchowe. Jest to przykład części dachu znajdujących się blisko ściany:

# Get all parts of roof within 40cm range of all walls 
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) 

Natomiast jest to przykład instrukcji funkcji do filtrowania:

# Filter roof parts longer than 50 project units 
def is_long(obj):  
    return obj.prop('Length') > 50 
roof_parts.filter(is_long) 

Można także eksportować i wyświetlać dane w różnych formatach:

# create a dictionary list 
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')] 
# export to .json 
import json 
file = open('path/to/file.json', 'w+') 
file.write(json.dumps(wall_info, indent=4)) 
file.close() 
# plotting a histogram 
import matplotlib.pyplot as plt 
import pandas as pd 
df = pd.DataFrame(wall_info) 
df.hist(); 
plt.show() 
# export to .csv 
df.to_csv(r'path/to/file.csv', index = False, header=True) 

Aby uzyskać więcej informacji na temat interfejsu API BricsCAD i jego różnych klas, odwiedź poniższy rozdział API.

Procedura: wykonanie skryptu Python

  1. Otwórz nowy lub plik BricsCAD, w którym chcesz uruchomić skrypt Python.
  2. Wpisz BIMPYTHON w wierszu poleceń i naciśnij Enter.
  3. Zostanie wyświetlone okno dialogowe, w którym można wybrać tylko plik skryptu w języku Python (* .py). Wybierz go i kliknij Otwórz, aby uruchomić plik.


  4. O ile nie określono danych do wyeksportowania lub wyświetlenia w zewnętrznym programie poza BricsCAD, BricsCAD zgłasza dane wyjściowe w wierszu poleceń.

Odniesienie

Klasy i składnie

get_property(prop_name)
Zwraca wartość właściwości obiektu o podanej nazwie.
set_property(prop_name, value)
Ustawia wartość dla nazwy właściwości (prop_name).
distance_to( other_obj, units='mm', distance_mode='exact' )
  • Oblicz odległość między dwoma obiektami.
  • Opcje dla argumentu jednostki: dowolna wartość jednostki w postaci insunits ('Centymetry', 'Stopy', 'Parseki' itp.) oraz następujące skróty: 'mm', 'cm, 'm', 'km', 'ft'.
  • Opcje dla argumentu distance_mode: 'bbox_center', 'bbox', exact'.
parts()
Zwraca podelementy tego obiektu.
źRódło
Przeciwieństwo funkcji parts(), zwraca obiekt nadrzędny tego podelementu.
Warstwa (y)
Zwraca powiązany obiekt iterowalny Warstwy.
within_distance( distance, unit='mm', distance_mode='exact', search_range=bim_model )
  • Zwraca obiekty, które znajdują się w odległości argumentu distance.
  • Opcje jednostek argumentów: see distance_to.
  • Opcje dla argumentu distance_mode: see distance_to.
Otwarcie(a)
Zwraca powiązane otwarcia tego obiektu.
Obszar(y)
Zwraca powiązane przestrzenie tego obiektu.
bounding_elements()
Zwraca powiązane elementy ograniczające tego obiektu (przestrzeni).
wybierz()
Dodaj obiekt do wyboru.
Odznacz
Usuń obiekt z zaznaczenia.
__eq__() i __hash__()
Sprawia, że Object jest interoperacyjny z np. python set lub słownik.
class bricscad.bim.Objects
Definiuje kolekcję obiektów BricsCAD BIM
filter( function )
Filtrowanie tego zakresu za pomocą parametru funkcji.
filter( **conditions )
Filtrowanie tego zakresu za pomocą warunków podanych jako argumenty słów kluczowych.
parts()
Zwraca części wszystkich elementów w tym zakresie.
źródła()
Zwraca obiekty nadrzędne elementów w tym zakresie.
within_distance( distance, unit='mm', distance_mode='exact', search_range=bim_model )
Zwraca te obiekty, które znajdują się w odległości od dowolnego obiektu w tym zakresie.
Otwarcie(a)
Zwraca powiązane otwarcia tych obiektów.
Obszar(y)
Zwraca powiązane przestrzenie tych obiektów.
bounding_elements()
Zwraca powiązane elementy ograniczające tych obiektów (przestrzeni).
wybierz()
Dodaje obiekty do zaznaczenia.
Odznacz
Usuwa obiekty z zaznaczenia.
__len__ ()
Zwraca liczbę obiektów w tym zakresie.
bricscad.bim.list_properties(obj)
Zwraca listę dostępnych właściwości przekazanego podmiotu lub warstwy.
bricscad.bim.current_model()
Zwraca obiekty w przestrzeni modelu aktywnego dokumentu.
class bricscad.bim.Plies
Indeksowany, podzielny kontener obiektów Warstw.
__iter__()
__getitem__( index )
__getitem__( slice )
__len__()
class bricscad.bim.Ply
Pojedynczy obiekt warstwowy.
get_property(prop_name)
Zwraca wartość właściwości obiektu Warstwy o podanej nazwie.