Dynamo对于没有编程经验的Civil 3D使用者来说,可能是一个比较容易入门的、直观的工具,用于一些枯燥的重复性工作。通过把一些叫做“节点”的块拖拖拉拉,用线连起来,就可以完成一小段程序,解决“最后一公里”的难题。
如下面的Dynamo的图标所示,它就像一个瑞士军刀,并不是用来建造高楼大厦,而是把一些边角的东西修修补补,让生活更加轻松。
下面是几个我能想到的,适合用Dynamo来解决的问题,各位老师可以补充一下:
- 从Excel/CSV文件中读入点,然后生成对象,或者根据Excel中的数据对dwg图形对象进行批量属性更新
- 沿道路放置对象这样的,可能需要动态调整的场景
- 批量预处理dwg图形
- 自动化地形处理
- 实现复杂形状
其中第一个,借助Excel的强大编辑能力,可以把Civil 3D中非常难以调整的某些属性进行快速更新。
一个场景是,SheetSet字段的更新,用Civil 3D的话,一次修改一个,要打开点击很多次。但如果和Excel建立起连接的话,只需要改动Excel内容就好了。
学习资源
- Dynamo从零入门的话,官网的中文教程自然是不二法门。没有编程基础的话,到最终能做出自己想要的东西之前可能要稍微花点时间。不过按照例子应该能很快见到一些效果,这对初学者来说可以快速增强信心。总之Dynamo比传统编程语言更能迅速搭建一个可以工作的东西,学习曲线平缓得多。
- 摘自官网的一些学习资源
- 资源 | 简体中文 | Dynamo (dynamobim.org)
- Civil 3D 帮助
- Dynamo 论坛
- 欧特克大师汇 的一些链接,因为太长我就不放了,可以在上面的链接中找到。
- 书籍
- 其他在线视频教程,网海浩瀚,大家自行搜索吧。不过建议在完成上面的学习之后再漫天撒网,否则会和我一样浪费很多不必要的时间。
- 资源 | 简体中文 | Dynamo (dynamobim.org)
话说上面的资源我自己也没有全部用到,尤其是大师汇和书籍,是今天在编辑这个帖子的时候才发现,感觉捡到宝了。
所以,建议大家也多分享一些心得,其实也是在帮助自己。
一点个人心得和踩的坑:
- Dynamo和传统的编程语言最大的区别,就目前我的有限的经验来讲,是它的循环遍历机能不太一样,就是没有For语句。 它的循环是通过把list(可以理解为数组)赋给相应的Node来实现的。比如Point.ByCoordinates这个Node,输入是X,Y,Z坐标,乍一看以为是只接收三个数字作为坐标,然后创建一个点。 而实际上,可以把三个List作为输入给它,从而实现循环功能,一次创建多个点。
- 同样是上面的循环功能,如果是嵌套list,就不好对子list实现循环,因为你需要通过指定levels来取到子list。可能是我学艺不精,目前尚未找到不用编码的解决办法。
- 还是List,需要深入学习理解它的用法。基本上很多时候都需要设计它的操作。程序比人工强大的原因之一,就是它的循环遍历,根据条件选择需要的对象,然后对其进行(批量)操作。而它的基础就建立在对List的理解和操作上。 对于其他语言,用循环语句就可以了。
- Dynamo的短板,可以用Python Script来弥补,中文叫做代码块,比如我就不得不用Python Script来对嵌套的List进行循环处理,然后再传递给下一个Node。
- 这个有我刚刚花了几天时间学习到的:
- 在Python Script内部创建的对象,如果不放在OUT中输出,就无法反映在Civil 3D中。现象就是程序看上去正常运行了,但什么也看不到。
- Python Script中有些用法非常容易导致Civil 3D崩溃,很多时候可能只是语法错误,甚至打错字也会引发同样的后果。特别坑爹的地方是,这不是一般的崩溃,而是需要把Civil 3D整个重启。所以昨天和今天有很多时候我为了摸索某个对象的正确用法,不得不花很多时间在重启Civil 3D。对此持怀疑态度的同学,我可以告诉你我在Civil 3D 2022/2023/2024上都体验过了。唯一没有尝试的,是重新建一个Python Script节点。对此,我的建议是,尽量把上面的基础知识学得扎实一些,如果你有时间的话。我的时间不多,所以只能快速尝试排错,取得一点突破,后果就是走了很多弯路。
- 这个有我刚刚花了几天时间学习到的:
关于 Civil 3D API 下面有一个视频,我用Chrome 插件 Glarity ChatGPT这个插件做了一个总结贴在下面,希望有所帮助:
### Summary
本次演讲介绍了Dynamo和Civil 3D的API,包括以下几个方面:
1. API是如何工作的,以及如何在Dynamo中使用Python节点访问API。
2. 介绍了AutoCAD和Civil 3D各自的API结构和层级关系。
3. 演示了如何使用Python代码访问和修改Civil 3D对象的属性。
4. 分享了一些调试和错误处理的技巧。
### Highlights
- :钥匙: API(应用程序编程接口)是程序之间交互的方式,可以是进程内或进程外集成。Dynamo使用.NET API与AutoCAD和Civil 3D进行交互。
- :文件夹: AutoCAD和Civil 3D有各自独立的API,需要分别引用相应的DLL文件。可以在帮助文档中查找API的详细信息。
- :扳手: 使用Python节点可以更快地进行API开发和迭代,但需要注意版本兼容性。
- :向左倾斜的放大镜: 在使用API时,需要先获取活动文档、数据库,然后开启事务来安全地读写数据。可以使用try-except块来处理错误。
- :随机播放按钮: 可以通过unwrap方法访问API对象的底层实现,并对其进行修改,如更改corridor的名称。
### Keywords
- Dynamo
- Civil 3D
- API
抱歉下载的视频前两天删除了,请移步到我的论坛帖子观看:链接在此
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.