Dynamo批量操作之提取族库族参数写入Excel

你好,我是九哥~

今天,来开一个新的系列教程------Dynamo批量操作。

批量操作,可以说是Dynamo最擅长做的事,可以批量改参数值,批量放置族等等,但是批量操作起复杂的数据结构,还是需要一些技巧的,那么,这个系列,我们就理一理,常见的批量操作,带你更高效的使用Dynamo。

好了,今天先开个头,尝试提取族库中所有的族、族参数和参数值,写入到Excel中,作为一个数据库存储。

先看一段演示视频:

此处为语雀视频卡片,点击链接查看:提取族库数据写入Excel.mp4

看视频的演示,是不是很方便,只需要一点,Dynamo就开始自动打开族并提取数据了,最后全部在一个Excel中汇总展示,而且后续提取也很方便。

接下来我们直接进入主题,这里主要用到的节点包还是Orchid:

1、读取指定目录的所有族文件

读取指定目录文件,一般都是直接用FileSystem.GetDirectoryContents节点:

我比较习惯用Orchid节点包,所以直接可以用这里的一套节点,顺便将文件后台打开:

接下来需要获取哪些数据?需要设计一下Excel的格式,我的目标格式如下:

2、获取文件夹名称,作为Excel文件名

由上面的Excel截图,可以看出,我们需要获取文件夹的名称,作为Excel的文件名和Sheet名称,这里有很多方法,我就直接分解路径,提取最后一项,作为Excel文件名了:

3、获取族名称

类似的,族名称,我们直接提取目录下的所有文件的文件名:

4、提取族参数名和参数值

关于族参数,Orchid里也有一套节点,搭配起来基本可以满足所有常规需求,这里我们先获取第一步打开的所有族的族参数和族类型:

得到族类型和参数名以后,就可以获取每个族类型的每一个参数值了:

5、构造Excel文件路径,作为写入的filePath

这一步很简单,就是用族库的路径加上文件夹的名称,然后手动加一个后缀名即可:

6、获取每个族类型的数量,构造序号列表

这一步,根据族类型的数量,构造一列编号,然后在每个列表前面添加"序号",作为表头,然后作为一列数据,可以按列写入Excel第一列中:

7、构造族名称列表,写入Excel中

同样的,根据第三步得到的族名称,按族类型数量,循环一下,得到等长的族名称列表,写入Excel第二列中:

8、族类型名称,写入Excel

根据第四步得到的族类型名称,增加一个"族类型\\参数名"表头,写入Excel第三列中:

9、将参数名和参数值按行写入Excel中

将参数名列表,按族,添加到每个族参数的前面,形成新列表,按行写入Excel中:

正常情况下,这步直接写入就行了,但是我在实际操作的过程中,发现有些注释类的族,没有族类型,那么后面的写入操作,就会出错。

于是,在这里,我们需要对列表进行简单处理:

python 复制代码
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference("DSCoreNodes")
import DSCore
from DSCore import *

l0 = IN[0]
out = []

for i in range(len(l0)):
  if len(l0[i]) == 0:
    out.append([["无"]])
  elif isinstance(l0[i][0],list):
    out.append(l0[i])
  else:
    out.append([l0[i]])

OUT = out

最后,待写入Excel操作完成以后,把后台打开的族关闭即可,根据需求,确定是否保存即可:

经过测试,将文件夹嵌套在一个指定目录下,跑起来会更稳定,可能与我的数据结构有关,没有深入测试。

好了,今天的分享就到这里,先开个头,有时间慢慢填坑~

相关推荐
小刘在重生~16 分钟前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
大汉堡玩测试1 小时前
langfuse测试实战(一): 配置一个简单的项目快速落地
python·测试工具
一位正在转型AI全栈的前端工程师1 小时前
AI 全栈学习之旅 -Week 8:从单 Agent 到多 Agent 协作:LangGraph 实战与记忆持久化
前端·python
长江后浪博客1 小时前
Python + YOLOv8 疲劳驾驶 AI 视觉检测入门:从模型训练到 ONNX 实时摄像头检测完整实战
人工智能·python·yolo·疲劳驾驶检测·onnx·yolov8
hhzz2 小时前
【OpenCV 入门到精通 01】认识 OpenCV 与计算机视觉:从零建立全局认知
人工智能·python·opencv·计算机视觉·开源
一马平川的大草原2 小时前
如何实现SVG转Mermaid图
python·svg·格式转换·mermaid
PFFstronger2 小时前
基于 Dify 知识库 + Ollama 大模型,自动生成测试用例并导出 XMind 的完整方案
人工智能·python·测试用例·xmind
SomeBottle3 小时前
【小记】图片托管从又拍云迁移到腾讯云 EO + COS(兼容图片处理参数)
python·计算机网络·学习笔记·对象存储·cdn·折腾
cts6183 小时前
FDE架构师前端选型指南
python
2601_962293794 小时前
【Python教程:自动化处理文件】
python·自动化·编程·文件处理·os模块