【Dynamo学习笔记】Dynamo for Revit建模基础

本文介绍了如何在Revit中使用Dynamo进行图元选择、参数读写,如创建轴网、结构柱和墙体,以及如何通过自定义节点简化操作流程。详细讲解了模型的层级结构和关键节点功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:
(1) 罗嘉祥,宋姗,田宏钧. 《Autodesk Revit炼金术——Dynamo基础实战教程》,同济大学出版社
(2)【Dynamo学习笔记】基础入门

前言

为了能和Revit进行交互,Dynamo中内置了很多Revit的节点,包含一系列用于选择、创建、编辑、查询等操作,帮助用户简化建模的过程,提高工作效率,拓展模型的应用。

1 Revit模型的结构

在Revit中,模型结构按照Category-Family-Type-Instance四个层级进行存储。

  • Category——类别,是最高层级。
  • Family——族,是某一类别中图元的类,是根据参数(属性)集的共用、使用上的相同和图形表示的相似来对图元进行的分组。
  • Type——族类别,是某一种族中图元的类,是根据尺寸、规格等参数对图元进行的分组。
  • Instance——图元,是Revit中的某一个示例,是Revit模型结构中最小的单元。

2 图元的操作

2.1 图元的选择

图元的选择主要通过Selection下面的节点来实现。
选择当前Revit项目中的类别——Categories
在这里插入图片描述
选择当前Revit项目中的族——Family Types
在这里插入图片描述

选择图元对象——Select Model Element。如果没有图元被选定,那么这个节点就是黄色。
在这里插入图片描述

2.2 图元参数的读取和写入

图元参数的读取——Element.GetParameterValueByName
在这里插入图片描述
图元参数的写入——Element.SetParameterByName
在这里插入图片描述

2.3 图元的创建

2.3.2 创建轴网

——Grid.ByStartPointEndPoint
在这里插入图片描述
这时候我们发现,轴网的编号并不是从“1”开始的,所以我们可以用Element.SetParameterByName节点,设置轴网的编号。
在这里插入图片描述
在这里插入图片描述

2.3.2 创建结构柱

有了轴网作为定位参照之后,可以使用节点FamilyInstance.ByPointAndLevel在给定坐标点处放置族实例。

在这里插入图片描述
创建结果如下:
在这里插入图片描述
这里需要注意一下列表的连缀属性(Lacing)。连缀属性定义的是使用该列表作为输入项的节点,使用其中一种连缀方式,使用列表中的项与其他输入的列表进行匹配运算。由“最短”、“最长”和“叉积”三种。
在这里插入图片描述
设列表A为[a1, a2, a3, a4, a5],表示X方向的轴线数量;设列表B为[b1, b2, b3, b4],表示y方向的轴线数量。

列表的连缀属性含义示例
最短将列表A和列表B的前4个(因为最短的列表的数量为4)进行一一计算,运算完成后停止。在这里插入图片描述
最长将列表A和列表B的前5个(因为最短的列表的数量为5)进行一一计算,运算完成后停止。这里因为列表B只有4个,所以列表A的第5个与列表B的最后一个进行运算。在这里插入图片描述
叉积将列表A中的每一项与列表B中的每一项依次匹配进行运算。在这里插入图片描述

根据需要使用不同的连缀状态,可以帮助用户简化Dynamo程序,实现各种列表之间的灵活运算。

2.3.3 创建结构框架

在这里插入图片描述
在这里插入图片描述

2.3.4 创建墙体

通过给定曲线。底面标高和顶面标高创建墙体——Wall.ByCurveAndLevels
在这里插入图片描述
通过给定曲线、墙体高度和底面标高创建墙体——Wall.ByCurveAndHeight
在这里插入图片描述

3 自定义节点

为了简化程序,我们可以将一些通用的节点流程编组封装成自定义节点。首先,我们选中我们需要封装的节点组,在空白处点击右键,选择创建自定义节点
在这里插入图片描述
然后,我们定义好该节点的特性:
在这里插入图片描述
这时候,我们上面创建墙的程序可以简化成如下所示,只要输入选择的轴线,即可完成后续的操作:
在这里插入图片描述

### 结合YOLOv8与PaddleOCR进行目标检测和文字识别 #### 数据准备 为了使YOLOv8能够有效地定位图像中的车牌位置,需先准备好标注好的训练集。这些数据应包含不同环境下的车辆图片以及对应的标签文件,用于指示每张图里车牌的具体坐标。 #### 模型配置 对于YOLOv8而言,在`yolov8.yaml`配置文档内指定输入尺寸、锚框参数等超参设置;而针对PaddleOCR,则无需额外调整其默认设定即可满足大多数场景需求[^3]。 #### 代码实现 下面给出一段Python脚本片段来展示怎样串联起这两个组件: ```python from ultralytics import YOLO from paddleocr import PaddleOCR def detect_and_recognize(image_path): # 加载YOLOv8模型并执行预测操作 model = YOLO('path/to/yolov8.pt') results = model.predict(source=image_path, conf=0.25) ocr = PaddleOCR(use_angle_cls=True, lang='en') final_result = [] for result in results: boxes = result.boxes.cpu().numpy() for box in boxes: cropped_image = crop_box_from_image(image_path, box) # 自定义函数裁剪区域 ocr_results = ocr.ocr(cropped_image, cls=True) recognized_text = ''.join([line[1][0] for line in ocr_results]) final_result.append({ 'bbox': list(map(int, box[:4])), 'text': recognized_text, 'confidence': float(box[-1]), }) return final_result ``` 此段程序首先利用YOLOv8完成对给定路径下图片的目标检测任务,随后依据所得边界框信息截取出可能含有字符的部分送入至PaddleOCR作进一步的文字解析工作,最终返回融合后的结构化输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值