这篇将介绍如何利用Dynamo自动生成结构柱类型【“T”字形柱】
● 思路
T形柱由8条边组成,有且只有两个顶点(8、3)两侧的顶点(1,7;2,4)的连线的中点(Point1、Point2)位于图形外,且此两点中间只隔两个顶点(1、2)。如下图:
首先,滤出具有八条线的PolyCurve
核心节点:PolyCurve.NumberOfCurves
拾取顶点
核心节点:Curve.StartPoint
顶点排序
核心节点:List.GetItemAtIndex、List.RemoveItemAtIndex
此处无图
顶点隔点连线
核心节点:List.GetItemAtIndex、List.RemoveItemAtIndex
连线取中点
核心节点:Curve.PointAtParameter
以PolyCurve创建Surface
核心节点:Surface.ByPath
判别点是否与Surface相交
核心节点:Geometry.DoesIntersect
滤出有两个点没有与Surface相交的线且无交集
核心节点:List.FilterByBoolMask
值得注意的是:隔点顶点连线的中点在图形外且连线不相交,只有T形。
最后我们就选出了T形的PolyCurve
根据PolyCurve的排序,选取该柱名称,新建T形柱类型。(详上一篇)
核心节点:FamilyType.Duplicate(Clockwork节点包)
T形参数特点
红线未相交的线为宽度
与宽度线平行且最远的线距为深度
宽度相交的线分别为a、a2
与a线相交的且排除宽度线的线为b
首先获取宽度线,并写入参数值【宽度】
核心节点:Geometry.DoesIntersect、Element.SetParameterByName
获取与宽度线平行的线
核心节点:Vector.IsParallel
获取与宽度线最远的线的距离和线长,并写入参数值【深度】【a1】
核心节点:Geometry.DistanceTo、Element.SetParameterByName
获取与宽度线相交的线的长度,并写入参数值【a】【a2】
核心节点:Element.SetParameterByName
取上一个步骤其中一根线【a】,获取与其相交的线,并排除宽度线,将其长度写入参数值【b】
核心节点:Geometry.DoesIntersect
来源:玖辰建筑科技。
作者:黎笑尘
评论0