命令: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环境
打开要在其中运行Python脚本的新文件或THCAD文件。
在命令行中键入BimActivatePython,然后按Enter。
将提示您: BIMACTIVATEPYTHON的新当前值[1表示ON / 0表示OFf] <1表示ON>:
默认情况下,该值应显示<1 for ON>。这意味着Python环境已被激活。
但是,如果值显示<0 for OFf>,请在命令行中键入1并按Enter确认。
或者
打开要在其中运行Python脚本的新文件或THCAD文件。
访问设置 对话框。
在BIM中的“常规”子类别下的“激活Python ”框内打钩。
- 关闭对话框以确认您的更新设置。
过程:使用BimPython模块设置Python脚本
- 在获得对API的访问权限之前,请导入或“调用”您希望在脚本中拥有的任何所需模块。如果它们不是Python Standard库的一部分,请确保事先将它们分别安装。
例如,您可以“导入”标准模块,例如。数学和“导入为”外部函数,例如Pyplot,它是Matplotlib程序包中函数的集合:导入数学
导入matplotlib.pyplot作为plt - 进入所需的库后,下一步就是访问API,以便查询THCAD模型中的元素。这是bim对象的范围,并用作模型的入口点。
导入briqpy.bim_model:从briqpy导入bim_model
- 现在,您可以使用这些示例语句查询模型。
#显示壁的模型中的长度信息
的长度= [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脚本
- 打开要在其中运行Python脚本的新文件或THCAD文件。
- 在命令行中键入BimPython,然后按Enter。
- 显示一个对话框,您只能在其中选择一个Python脚本文件(* .py)。选择它,然后单击“打开”以执行文件。
- 除非您指定要导出或显示在THCAD外部程序中的数据,否则THCAD将在命令行面板中报告输出。
API字典
类和语法
briqpy.Object类-定义THCAD BIM对象
支柱(prop_name)
- 返回具有给定名称的Object的属性值。
distance_to(other_obj,units ='mm',distance_mode ='exact')
- 计算两个对象之间的距离。
- 参数单位的选项:任何单位值的形式均为insunits(“厘米”,“ Feet”,“ Parsecs”等)以及以下缩写:“ mm”,“ cm,“ m”,“ km”,“ ft”。
- 参数distance_mode的选项:“ bbox_center”,“ bbox”,“精确”。
部分()
- 返回包含此对象子元素的ObjectRange。
父母()
- 与parts()相反,返回此子元素的父对象。
inside_distance(distance,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_distance(distance,unit ='mm',distance_mode ='exact',search_range = bim_model)
- 返回与该范围内的任何对象都在距离之内的对象的ObjectRange。
选择()
- 将对象添加到选择中。
取消选择()
- 从选择中删除对象。
__len__ ()
- 返回此范围内的对象数。