Uso de secuencias de comandos de Python

Comandos

BIMPYTHON

Acerca de BIMPYTHON

El comando BIMPYTHON le permite consultar y administrar datos de un modelo dentro de BricsCAD BIM, con un .py adecuado Secuencia de comandos de Python.

Los scripts de Python pueden ser tan simples como obtener cantidades y propiedades asociadas de objetos y entidades BIM, o tan elaborados como implementar una serie de cálculos basados en los parámetros del modelo disponibles.

BricsCAD no se entrega con un Shell de Python, por lo que las secuencias de comandos deberán prepararse en una aplicación de edición de texto o código.

El lenguaje de programación Python, junto con sus bibliotecas estándar, está integrado en BricsCAD BIM , por lo que no es necesario instalarlos por separado a menos que tenga bibliotecas y paquetes personalizados que desee utilizar en sus scripts.

Hay varios ejemplos de scripts de Python disponibles en el instalador BricsCAD BIM .

Procedimiento: configurar un script de Python con el módulo BIMPYTHON

  1. Antes de obtener acceso a la API, importe o "llame" a los módulos que desee tener en el script.

    Si no forman parte de la biblioteca estándar de Python, asegúrese de que se hayan instalado por separado de antemano.

    Puede "importar" un módulo estándar, como matemáticas e "importar como" uno externo, por ejemplo Pyplot, que es una colección de funciones en el paquete Matplotlib:

    importar matemáticas 
    importar matplotlib.pyplot como plt
  2. Una vez "llamadas" las bibliotecas que desee, el siguiente paso es obtener acceso a la API para consultar los elementos dentro del modelo BricsCAD . Esta es la gama de objetos bim y sirve como punto de entrada al modelo.

    Importe el modelo actual del módulo bricscad:

    desde bricscad.bim importar modelo_actual
  3. Ahora, puede consultar el modelo con estas declaraciones de ejemplo.
    # Mostrar información sobre las longitudes de los muros en el modelo 
     lengths = [wall.prop('Length') para pared en current_model().filter(Type='Wall')] 
    print(f'longitudes de pared. máx: {max(longitudes)}, promedio: {suma(longitudes)/len(longitudes)}') 
    # Crear una selección e imprimir los objetos 
     modelo_actual().filter(Type='Wall', IsExternal=True).select() 
    para muro en bim_model.filter(Type='Wall', IsExternal=True, Longitud=max(longitudes)):
     impresión(pared) 

Los mapeadores de bricscad.bim.Objects son encadenables. Este es un ejemplo para obtener las partes del techo que están cerca de una pared:

# Obtener todas las partes del techo dentro del rango de 40 cm de todas las paredes 
 Roof_parts = current_model().filter(Type='Roof').parts() 
 Roof_parts_close_to_wall = current_model().filter(Type='Wall').within_distance(40 , 'cm', rango_búsqueda=partes_del_techo) 

Mientras que este es un ejemplo de una declaración de función para filtrar:

# Filtrar partes del techo de más de 50 unidades de proyecto 
 def is_long(obj): 
 return obj.prop('Length') > 50 
 roof_parts.filter(is_long) 

También puede exportar y mostrar datos en varios formatos:

# crear una lista de diccionario 
 wall_info = [ 
 { 'Handle': wall.get_property('Handle'), 
        'Longitud': wall.get_property('Longitud'), 
        'Altura': wall.get_property('Altura') 
    } para pared en current_model().filter(Type='Wall')] 
# exportar a .json 
importar archivo json 
 = open('ruta/al/archivo.json', 'w+') 
 archivo.write(json.dumps(wall_info, indent=4)) 
 archivo.cerrar() 
# trazar un histograma 
 importar matplotlib.pyplot como plt 
 importar pandas como pd 
 df = pd.DataFrame(wall_info) 
 df.hist(); 
 plt.mostrar() 
# exportar a .csv 
df.to_csv(r'ruta/al/archivo.csv', índice = Falso, encabezado=Verdadero) 

Para obtener más información sobre la API de BricsCAD y sus diversas clases, visite el capítulo de la API a continuación.

Procedimiento: ejecutar el script de Python

  1. Abra un archivo nuevo o BricsCAD donde le gustaría ejecutar un script de Python.
  2. Escriba BIMPYTHON en la línea de comando y presione Entrar.
  3. Se muestra un cuadro de diálogo donde solo puede seleccionar un archivo de secuencia de comandos Python (*.py). Selecciónelo y haga clic en Abrir para ejecutar el archivo.


  4. A menos que haya especificado los datos que se exportarán o mostrarán en un programa externo fuera de BricsCAD, BricsCAD informa la salida en la línea de comando.

Referencia

Clases y sintaxis

get_property(prop_name)
Devuelve el valor de la propiedad del Objeto con el nombre dado.
set_property(prop_name, valor)
Establece un valor para el nombre de la propiedad (prop_name).
distancia_a( otro_obj, unidades='mm', modo_distancia='exacta' )
  • Calcular la distancia entre dos Objetos.
  • Opciones para unidades de argumento: cualquier valor de unidad en unidades ('Centímetros', 'Pies', 'Parsecs', etc.) y estas abreviaturas: 'mm', 'cm, 'm', 'km', 'ft'.
  • Opciones para el argumento modo_distancia: 'bbox_center', 'bbox', exacto'.
partes()
Devuelve los subelementos de este objeto.
padre()
Lo contrario de parts(), devuelve el objeto principal de este subelemento.
capas()
Devuelve el objeto iterable Plies asociado.
within_distance( distancia, unidad='mm', modo_distancia='exacto', rango_búsqueda=modelo_bim )
  • Devuelve los objetos que están dentro de la distancia del argumento distancia.
  • Opciones para unidades de argumento: ver distancia_a.
  • Opciones para el argumento modo_distancia: ver distancia_hasta.
aperturas()
Devuelve las aberturas asociadas de este objeto.
espacios()
Devuelve los espacios asociados de este objeto.
delimitando_elementos()
Devuelve los elementos delimitadores asociados de este objeto (espacio).
seleccionar()
Añadir Objeto a la selección.
deseleccionar()
Eliminar Objeto de la selección.
__eq__() y __hash__()
Hace que Objecto sea interoperable con, por ejemplo conjunto de python o diccionario.
clase bricscad.bim.Objects
Define la colección de BricsCAD BIM Objects
filtro ( función )
Filtrando este rango con un parámetro de función.
filtro( **condiciones )
Filtrando este rango con condiciones dadas como argumentos de palabras clave.
partes()
Devuelve las partes de todos los elementos de este rango.
padres()
Devuelve los objetos principales de los elementos de este rango.
within_distance( distancia, unidad='indefinido', modo_distancia='exacto', rango_búsqueda=modelo_bim )
Devuelve aquellos objetos que están dentro de la distancia de cualquier objeto en este rango.
aperturas()
Devuelve las aberturas asociadas de estos objetos.
espacios()
Devuelve los espacios asociados de estos objetos.
delimitando_elementos()
Devuelve los elementos delimitadores asociados de estos objetos (espaciales).
seleccionar()
Agrega objetos a la selección.
deseleccionar()
Elimina objetos de la selección.
__len__ ()
Devuelve el número de objetos en este rango.
bricscad.bim.list_properties(obj)
Devuelve la lista de propiedades disponibles de la entidad o capa pasada.
bricscad.bim.current_model()
Devuelve los Objetos en el espacio modelo del documento activo.
clase bricscad.bim.Plies
Contenedor indexado y divisible de objetos Ply .
__iter__()
__getitem__( índice )
__getitem__( rebanada )
__len__()
clase bricscad.bim.Ply
Objeto de capa individual.
get_property(prop_name)
Devuelve el valor de propiedad del objeto Ply con el nombre indicado.