以流水账的形式记录一下实现过程
1、需求介绍
现有钢结构图纸,需按图纸建模
Rhino模型
部分图纸
2、技术路线
2.1、整理坐标点
2.1.1通过文字识别,从PDF图纸中提取坐标
01主楼外网节点定位图.pdf
复制到excel中,校正数据(可能出现的问题有:123.456被识别为123,456;338被识别为33B)
2.1.2 确定建模原点,平移获取的坐标点,并将单位从m改为mm。
这里取(680.077,405.080,178.928)为坐标原点。处理后的坐标如下,另存在csv中
02主楼外网节点.csv
2.1.3 按图纸顺序整理钢构件起点-终点编号。目前没有特别好的办法整理出起点—终点,只能一个个核对。
将起点—终点编号另存为:
03主楼外网节点竖挺点.csv
2.2、创建竖挺
2.2.1 打开Dynamo,导入坐标数据
2.2.2 创建竖挺
2.3、旋转竖挺
2.3.1 从PDF中提取主楼竖挺法线定位点
04 S-W-SG026_主楼及连桥竖梃法线定位图.pdf
2.3.2 在Dynamo中导出竖挺起点终点坐标
05 Dynamo导出主楼竖挺点.csv
2.3.3 计算竖挺旋转角度
06 Dynamo计算竖挺角度主楼.csv
以上文件来自如04整理结果和05的组合
07 Dynamo计算结果-主楼竖挺角度.csv
2.3.4 导入旋转角度
3、Python节点内容
# 启用 Python 支持和加载 DesignScript 库
import clr
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
import math
doc=DocumentManager.Instance.CurrentDBDocument
clr.AddReference ("System")
from System.Collections.Generic import *
elements = UnwrapElement(IN[0])
#angle = IN[1]
listangles = IN[1]
i = 0
angle = []
for e in elements[0]:
ref_location = e.Location.Curve
angles = math.radians(listangles[0][i])
TransactionManager.Instance.EnsureInTransaction(doc)
ElementTransformUtils.RotateElement(doc, e.Id, ref_location, -angles)
TransactionManager.Instance.TransactionTaskDone()
angle.Add(angles)
i +=1
OUT = angle