页面树结构
转至元数据结尾
转至元数据起始

命令:BimPython

概述:在本课程中,您将学习如何在THCAD BIM中设置和执行Python脚本。

注意:这是测试版功能。尽管Beta版功能新颖且令人兴奋,但仍然可能会出现bug和/或粗糙边缘。因此,在尝试使用它们时,请注意风险,因为事情可能不会按预期进行。

课程目标:

  • 在THCAD中激活虚拟Python环境。
  • 在示例脚本中理解和引用BIMPython模块。
  • 在THCAD中执行Python脚本。



关于BIMPython

新的BimPython命令使您可以使用合适的.py Python脚本从THCAD BIM中的模型查询和管理数据。

Python脚本可以像获取对象和BIM实体的数量和相关属性一样简单,也可以像根据可用的模型参数实现一系列计算一样复杂。

THCAD并未随附Python Shell,因此需要在文本或代码编辑器应用程序中准备脚本。

Python编程语言及其标准库嵌入在THCAD BIM中,因此除非您有希望在脚本中使用的自定义软件包和库,否则无需单独安装它们。

使用BIMPython之前,您需要首先在THCAD中打开虚拟Python环境。



过程:在THCAD中激活Python环境

  1. 打开要在其中运行Python脚本的新文件或THCAD文件。

  2. 在命令行中键入BimActivatePython,然后按Enter。

  3. 将提示您: BIMACTIVATEPYTHON的新当前值[1表示ON / 0表示OFf] <1表示ON>:

  4. 默认情况下,该值应显示<1 for ON>。这意味着Python环境已被激活。

    但是,如果值显示<0 for OFf>,请在命令行中键入1并按Enter确认。

或者

  1. 打开要在其中运行Python脚本的新文件或THCAD文件。

  2. 访问设置 对话框。

  3. BIM中的常规”子类别下的“激活Python ”框内打钩



  4. 关闭对话框以确认您的更新设置。



过程:使用BimPython模块设置Python脚本

  1. 在获得对API的访问权限之前,请导入或“调用”您希望在脚本中拥有的任何所需模块。如果它们不是Python Standard库的一部分,请确保事先将它们分别安装。

    例如,您可以“导入”标准模块,例如。数学和“导入为”外部函数,例如Pyplot,它是Matplotlib程序包中函数的集合:
    导入数学
    导入matplotlib.pyplot作为plt
  2. 进入所需的库后,下一步就是访问API,以便查询THCAD模型中的元素。这是bim对象的范围,并用作模型的入口点。

    导入briqpy.bim_model:
    briqpy导入bim_model
  3. 现在,您可以使用这些示例语句查询模型。
    #显示壁的模型中的长度信息
    的长度= [wall.prop(“长度”)bim_model.filter(类型=“墙”)]
    打印(f'wall长度最大:{最大(长度) },平均:{sum(lengths)/ len(lengths}}')
    #创建的选择和打印对象
    bim_model.filter(类型= '墙',IsExternal =真)。选择()
    bim_model.filter(类型= '墙',IsExternal =真,长度= MAX(长度)) :
    打印(墙)

    briqpy.ObjectRange的映射器是可链接的。这是获取靠近墙壁的屋顶部分的示例:
    #在所有墙壁的40cm范围内获取屋顶的所有部分
    roof_parts = bim_model.filter(Type ='Roof')。parts() roof_parts_close_to_wall = bim_model.filter(Type ='Wall')。within_distance(40,'cm',search_range = roof_parts)

    而这是要过滤的函数语句的示例:
    #过滤长度超过50个项目单位的屋顶零件
    def
    is_long(obj):
    返回obj.prop('Length')> 50
    roof_parts.filter(is_long)

    您还可以导出和显示各种格式的数据:
    #创建字典列表
    wall_info = [ {'Handle':wall.prop('Handle'), '长度':wall.prop('Length'), 'Height':wall.prop('Height') }bim_model.filter(类型= '墙')] #导出到.json 导入json 文件=打开('path / to / file.json','w +') file.write(json.dumps(wall_info,indent = 4)) file.close() #绘制直方图 import matplotlib.pyplot as plt import pandas as pd df = pd.DataFrame(wall_info) df.hist(); plt.show() #导出到.csv df.to_csv(r'path / to / file.csv',index = False,header = True)

有关THCAD API及其各种类的更多信息,请访问下面的API章节。



过程:执行Python脚本

  1. 打开要在其中运行Python脚本的新文件或THCAD文件。
  2. 在命令行中键入BimPython,然后按Enter。
  3. 显示一个对话框,您只能在其中选择一个Python脚本文件(* .py)。选择它,然后单击“打开”以执行文件。



  4. 除非您指定要导出或显示在THCAD外部程序中的数据,否则THCAD将在命令行面板中报告输出。


API字典

类和语法

briqpy.Object-定义THCAD BIM对象

支柱prop_name
  • 返回具有给定名称的Object的属性值。
distance_toother_obj,units ='mm',distance_mode ='exact'
  • 计算两个对象之间的距离。
  • 参数单位的选项:任何单位值的形式均为insunits(“厘米”,“ Feet”,“ Parsecs”等)以及以下缩写:“ mm”,“ cm,“ m”,“ km”,“ ft”。
  • 参数distance_mode的选项:“ bbox_center”,“ bbox”,“精确”。
部分()
  • 返回包含此对象子元素的ObjectRange。
父母()
  • parts()相反,返回此子元素的父对象。
inside_distancedistance,unit ='mm',distance_mode ='exact',search_range = bim_model
  • 返回参数distance范围内的对象的ObjectRange 
  • 参数单位的选项:请参见distance_to。
  • 参数distance_mode的选项:请参见distance_to。
选择()
  • 将对象添加到选择中。
取消选择()
  • 从选择中删除对象。
__eq__() 和__哈希__()
  • 使对象与python集或字典可互操作


briqpy.ObjectRange-定义THCAD BIM对象的集合

筛选功能
  • 使用功能参数过滤此范围。
筛选**条件
  • 使用作为关键字参数给出的条件过滤此范围。
部分()
  • 返回此范围内所有元素的所有部分的ObjectRange。
父母()
  • 返回此范围内元素的所有父对象的ObjectRange。
inside_distancedistance,unit ='mm',distance_mode ='exact',search_range = bim_model
  • 返回与该范围内的任何对象都在距离之内的对象的ObjectRange。
选择()
  • 将对象添加到选择中。
取消选择()
  • 从选择中删除对象。
__len__ ()
  • 返回此范围内的对象数。
  • 无标签