CN111079211B - 一种基于可视化编程工具Dynamo的翼角圆椽建模 - Google Patents
一种基于可视化编程工具Dynamo的翼角圆椽建模 Download PDFInfo
- Publication number
- CN111079211B CN111079211B CN201911080045.3A CN201911080045A CN111079211B CN 111079211 B CN111079211 B CN 111079211B CN 201911080045 A CN201911080045 A CN 201911080045A CN 111079211 B CN111079211 B CN 111079211B
- Authority
- CN
- China
- Prior art keywords
- rafter
- plane
- point
- round
- rafters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/08—Construction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T90/00—Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
Abstract
本发明提供了一种基于可视化编程工具Dynamo的翼角圆椽建模,包括正身圆椽的模型的建立、圆椽的自动切削、撑头木的形成和飞椽的生成;本发明一种基于可视化编程工具Dynamo的翼角圆椽建模使用可视化编程工具Dynamo可以实现翼角椽的完全参数化生成及椽尾自动削切,可以并且能够对施工过程起到指导性的作用。它可以通过输入关键参数来确定翼角椽的造型,同时可以利用生成出的椽子模型导出到SAT文件,可以被数控机床软件使用而方便后期加工,亦可以导出每根圆椽需要下料的长度,精确化地指导施工不至产生浪费。同时,提高了建模的效率,防止了人工建模不准确现象的发生。
Description
技术领域
本发明涉及翼角圆椽建模领域,具体是指一种基于可视化编程工具Dynamo的翼角圆椽建模。
背景技术
中国古建筑屋顶的一个显著特点是有翼角,它出挑深远,反宇向阳,檐口两端渐渐翘起,让中国古建筑的屋顶造型及其优美生动。翼角是古代工匠在长期的建筑实际中卫解决四坡顶屋面檐口转角问题而设计的特殊构造形式。它从出现到形成经历了一个很长的历史过程。由于这部分椽子的排列特点和向上翘起的形状与展开的鸟翼十分相似,人们形象地称它为“翼角。”如明长陵祾恩殿、明楼(明代前期官式建筑)的翼角形式。
从《清式营造则例图版》我们也可以看到,从立面看,翼角部分的檐口从正身椽子开始,逐渐向上翘起呈曲线形,从平面看则又是一条向45度斜角方向逐渐伸出的自然的缓和的曲线。对于古建筑而言,古代工匠在长期实践中摸索出来一套制作和安装翼角的专门技术,形成了一套传统的规矩和做法。
根据马炳坚先生所著《中国古建筑木作营造技术》,对于翼角椽的设计、放线均有专门的规定,尤其是在施工过程当中,翼角椽通常在施工过程根据现场的举架和步架等得出一个大概但不十分准确的长度,很难精确,在下料的时候为了保证不出错误经常要多算一些尺寸,此外,翼角椽圆椽的尾部削切更是有很多需要遵循的做法,比如要制作搬增板和卡具。对于经验不够丰富的木匠而言,这所有的过程每一个过程的失误都会带来结果的失之准确。通常而言,椽子要放到木架上试验过找到不合适的地方进行二次加工,从而使得施工工期滞后,不仅如此,传统的做法做好之后,翼角的施工质量也会受到不同程度的影响,更需工匠的小心翼翼才能保证翼角加工的准确性。
因此,通过计算机辅助来准确得到翼角椽的精确造型,精确求出每根翼角椽尾部的合理削切方式的方法成为了古建施工领域一项能够及大地提高古建施工质量和效率的方法。
发明内容
本发明要解决的技术问题是现有技术中的在施工过程当中,翼角椽通常在施工过程根据现场的举架和步架等得出一个大概但不十分准确的长度,很难精确,在下料的时候为了保证不出错误经常要多算一些尺寸,此外,翼角椽圆椽的尾部削切更是有很多需要遵循的做法,比如要制作搬增板和卡具。对于经验不够丰富的木匠而言,这所有的过程每一个过程的失误都会带来结果的失之准确,造成工期时间长等问题。
为解决上述技术问题,本发明提供的技术方案为:一种基于可视化编程工具Dynamo的翼角圆椽建模,包括正身圆椽的模型的建立、圆椽的自动切削、撑头木的形成和飞椽的生成,的模型的建立包括以下建模步骤:
(1)先定位各椽子的定位线,为了准确定位,使用Point.ByCoordinates(x,y,z)节点,将檐步距加上第一根正身椽和下金檩的水平距离之和赋予该节点的X值,该值再加上椽当和椽子直径再赋予相同节点,得到A0和B0点,同理,将步架和偏移距离赋予该节点的x,y值,将举高赋予z值,得到圆椽的上顶点A1,B1.通过三角函数的计算,利用相似三角形关系,挑檐檩和金檩的距离以及平出值,使用CodeBlock工具,将上述参数的关键值代入变量,即可得到圆椽延申至飞椽下方的点的坐标值,加上z值向上的偏移量就可以得到飞椽头下顶点A3、B3,再输入圆椽平出值,得到圆椽的下顶点A2,B2;
(2)利用冲出值与平出等距离得到Q1、Q3两个点的水平值,配合A2、A3的z值与圆椽和飞椽各自的起翘值(圆椽到老角梁上皮,飞椽到仔角梁安装大连檐的下皮),得到圆椽起翘控制点Q1(穿过圆心)、飞椽起翘控制点Q3;
(3)使用Arc.ByStartPointEndPointStartTangent节点,将B2-A2形成的向量赋予StartTangent节点,A2作为起点,Q1作为重点生成一道与正身椽头连线相切的圆弧,此圆弧在水平面上、垂直面上观察均为一道从正身椽伸出的自然曲线,这条线就作为翼角圆椽椽头的控制线;
(4)使用通过坐标原点的线A1-Q1,将其中任意一个点使用Geometry.Translate节点在Z方向偏移任意一个值得到一点,使用该点联合线条,用Plane.ByLineAndPoints得到垂直于A1-Q1的平面,使用Plane.Offset命令,将角梁宽度的1/4赋予dist值,(实际就是从角梁1/4宽位置开始等分圆弧)得到一个新平面(有工匠是选择将距离角梁最近的一根椽子的边缘与角梁的距离控制为2指约5cm的距离范围之内,可以通过调整程序设置来改变这个控制点的位置),将该平面和控制线赋予Geometry.Intersect命令得到平面与圆椽椽头的控制线的交点Q2,使用Curve.SplitByPoints节点,将圆椽椽头控制线输入Curve,Q2输入Point,将该圆弧打断后,将长的那一段使用Curve.PointsAtEqualChordLength,将椽子数量输入得到圆椽的下顶点;
(5)回到原来的垂直平面,再使用Plane.offset命令,这次偏移值为1/2角梁宽度,得到角梁的外皮平面,与A2-A1线相交得到JA点,与圆椽弧线控制线相交得到Q4点,JA与Q4的连线就为翼角椽椽尾的控制线,使用Curve.TrimByStartParameter节点,输入起始参数0.05,(这个值可以根据实际情况的不同进行微调)得到椽尾控制线,使用Curve.PointsAtChordLengthFromPoint,从该线条的起点开始,每隔0.8椽径打一个点,然后根据椽子数量,从第一个点开始,使用List.GetItemAtIndex命令提取相应数目的椽尾点;
(6)利用起点和终点生成的方向(Vector.ByTwoPoints)作为Geometry.translate节点的direction,Geometry则为椽子的尾部定位点,distance则由PythonScript节点写入一个循环,生成一个等差递增比例的数列,这就可以将将靠近角梁的椽子尾部延伸地更长,这是为了将来椽子还需要在角梁的位置斜切一个面方便固定的需要。得到的结果则为最终定位终点,最终可以将各起点重点连线,连线的长度可以直接指导翼角椽施工的画线长度;使用ExportExcel则可以直接输出到Excel文件之中;
(7)使用Cylinder.ByPointsRadius输入上述起点、终点,将椽子的半径赋予radius,则可以得到圆椽的模型。同理,利用A1-A2,B1-B2同样的方式可得到正身圆椽的模型;
所述圆椽的自动削切包括以下步骤:
(1)将生成的椽子做成两个列表,假设它们是LIST0:[C1,C2,C3……Cn]这样的集合,那将LIST0去掉首根椽C1,得到新列表LIST1:[C2,C3,C4……Cn],将LIST0去掉尾部的一个椽子得到列表LIST2[C1,C2,C3……C(n-1)],将LIST1每一项与LIST2对应项匹配,对应结果应该是[C2-C1,C3-C2,C4-C3……Cn-C(n-1)],使用Geometry.Intersect命令处理各对,得到两根椽子之间相交的交集形体。
(2)然后用Geometry.Explode命令分解上述形体,使用列表处理命令得到分解形体的一个侧面,用Surface.PerimeterCurves得到面上的曲线,再将两椽相交的曲线提取,使用Curve.PointsAtEqualSegmentLength得到按照弧长等分的点,其中divisions决定了取点的密度,也最终决定了削切平面的精细度。最后使用Plane.ByBestFitThroughPoints生成通过各点的削切平面,将最初的椽子列表先从C1开始用生成的平面依次对应削切,然后将结果从C2开始再进行削切,就得到了两头都被削切的椽尾,经过角梁平面的削切处理后,可以间断提取生成好的椽子观察效果;
(3)可以再次借助PythonScript节点,利用Python循环代码和Geometry.ExportToSAT节点将每根翼角椽输出SAT文件,SAT文件则可以被数控机床编程软件使用进行加工。
进一步地,所述撑头木的形成包括以下步骤:
(1)利用圆心到椽子中心的切点的距离是已知的这一条件,我们可求得从通过檩条正心位置的垂直于XY平面的面与正身椽的交点向下偏移多少就得到圆心点,使用圆心和半径,通过此点平行于YZ平面垂直于XY平面的面上画圆;
(2)然后使用Curve.Project将圆心沿着反X轴方向投影到角梁平面上,利用这两个轮廓即可生成正心檩和挑檐檩,同样利用三角函数关系,和撑头木的厚度,则可以在前述檩条圆形线上求出撑头木的前后下顶点;
(3)利用这两个点生成平行于XZ的平面与椽子的定位线相交得到两组点,再将这两组点生成轮廓,然后将两个轮廓使用Solid.ByLoft生成撑头木的原始形状,这次可以使用Solid.Difference减去椽子的形状得到撑头木的实体形状。
进一步地,所述飞椽的生成包括以下步骤:
(1)利用圆椽的定位线生成垂直于定位线的平面,将平面向前向后分别偏移半椽径得到每根飞椽两侧的控制平面;
(2)根据飞椽的侧立面特征使用函数生成正身飞椽的控制点,然后再生成角梁上的五个控制点,使用Arc.ByStartPointEndPointStartTangent节点生成各飞椽的关键控制线,与前述平面相交得到关键控制点;
(3)然后利用几何关系将椽头的点沿着椽身方向改变位置到垂直于椽身方向的面上最终得到飞椽的外轮廓点,每根飞椽由左右两个轮廓使用Solid.ByLoft生成。
发明与现有技术相比的优点在于:本发明一种基于可视化编程工具Dynamo的翼角圆椽建模使用可视化编程工具Dynamo可以实现翼角椽的完全参数化生成,只要输入控制翼角椽的关键参数即可生成出翼角椽造型。可以并且能够对施工过程起到指导性的作用。它可以通过输入关键参数来确定翼角椽的造型,同时可以利用生成出的椽子模型导出到SAT文件,可以被数控机床软件使用而方便后期加工,亦可以导出每根椽子(圆椽)需要下料的长度,精确化地指导施工不至产生浪费。对设计人员而言,古建筑设计合适的翼角造型会变得极大地方便其设计流程,从而考虑合适的翼角造型,因为并不是所有的古建筑翼角都符合“冲三翘四”的规则的。同时,提高了建模的效率,防止了人工建模不准确现象的发生。
附图说明
图1是本发明的操作示意图一;
图2是本发明的获取椽尾点的操作示意图二;
图3是本发明用来求取椽子尾部适当延伸的算法操作示意图三;
图4是本发明的求取翼角椽尾部削切平面生成的相交形体示意图四;
图5是本发明的求取翼角椽尾部削切平面生成的线的示意图五;
图6是本发明的求取翼角椽尾部削切平面生成的点的示意图六;
图7是本发明的翼角椽尾部削切计算结果示意图七;
图8是本发明的翼角椽尾部削切计算结果示意图八;
图9是本发明计算得到的撑头木的实体形状;
图10是本发明的效果图。
图11是本发明与BIM木结构的匹配效果。
图12是本发明使用的Dynamo节点布置图。
具体实施方式
下面结合附图对本发明做进一步的详细说明。
结合附图,对本发明进行详细介绍。
本发明在具体实施时提供了一种基于可视化编程工具Dynamo的翼角圆椽建模,包括正身圆椽的模型的建立、圆椽的自动切削、撑头木的形成和飞椽的生成,的模型的建立包括以下建模步骤:
(1)先定位各椽子的定位线,为了准确定位,使用Point.ByCoordinates(x,y,z)节点,将檐步距加上第一根正身椽和下金檩的水平距离之和赋予该节点的X值,该值再加上椽当和椽子直径再赋予相同节点,得到A0和B0点,同理,将步架和偏移距离赋予该节点的x,y值,将举高赋予z值,得到圆椽的上顶点A1,B1.通过三角函数的计算,利用相似三角形关系,挑檐檩和金檩的距离以及平出值,使用CodeBlock节点,将上述参数的关键值代入变量,即可得到圆椽延申至飞椽下方的点的坐标值,加上z值向上的偏移量就可以得到飞椽头下顶点A3、B3,再输入圆椽平出值,得到圆椽的下顶点A2,B2;
(2)利用冲出值与平出等距离得到Q1、Q3两个点的水平值,配合A2、A3的z值与圆椽和飞椽各自的起翘值(圆椽到老角梁上皮,飞椽到仔角梁安装大连檐的下皮),得到圆椽起翘控制点Q1(穿过圆心)、飞椽起翘控制点Q3;
(3)使用Arc.ByStartPointEndPointStartTangent节点,将B2-A2形成的向量赋予StartTangent节点,A2作为起点,Q1作为终点生成一道与正身椽头连线相切的圆弧,此圆弧在水平面上、垂直面上观察均为一道从正身椽伸出的自然曲线,这条线就作为翼角圆椽椽头的控制线;
(4)使用通过坐标原点的线A1-Q1,将其中任意一个点使用Geometry.Translate节点在Z方向偏移任意一个值得到一点,使用该点联合线条,用Plane.ByLineAndPoints得到垂直于A1-Q1的平面,使用Plane.Offset命令,将角梁宽度的1/4赋予dist值,(实际就是从角梁1/4宽位置开始等分圆弧)得到一个新平面(有工匠是选择将距离角梁最近的一根椽子的边缘与角梁的距离控制为2指约5cm的距离范围之内,可以通过调整程序设置来改变这个控制点的位置),将该平面和控制线赋予Geometry.Intersect命令得到平面与圆椽椽头的控制线的交点Q2,使用Curve.SplitByPoints节点,将圆椽椽头控制线输入Curve,Q2输入Point,将该圆弧打断后,将长的那一段使用Curve.PointsAtEqualChordLength,将椽子数量输入得到圆椽的下顶点;
(5)回到原来的垂直平面,再使用Plane.offset命令,这次偏移值为1/2角梁宽度,得到角梁的外皮平面,与A2-A1线相交得到JA点,与圆椽弧线控制线相交得到Q4点,JA与Q4的连线就为翼角椽椽尾的控制线,使用Curve.TrimByStartParameter节点,输入起始参数0.05,(这个值可以根据实际情况的不同进行微调)得到椽尾控制线,使用Curve.PointsAtChordLengthFromPoint,从该线条的起点开始,每隔0.8椽径打一个点,然后根据椽子数量,从第一个点开始,使用List.GetItemAtIndex命令提取相应数目的椽尾点;
(6)利用起点和终点生成的方向(Vector.ByTwoPoints)作为Geometry.translate节点的direction,Geometry则为椽子的尾部定位点,distance则由PythonScript节点写入一个循环,生成一个等差递增比例的数列,这就可以将将靠近角梁的椽子尾部延伸地更长,这是为了将来椽子还需要在角梁的位置斜切一个面方便固定的需要。得到的结果则为最终定位终点,最终可以将各起点重点连线,连线的长度可以直接指导翼角椽施工的画线长度;使用ExportExcel则可以直接输出到Excel文件之中;
(7)使用Cylinder.ByPointsRadius输入上述起点、终点,将椽子的半径赋予radius,则可以得到圆椽的模型。同理,利用A1-A2,B1-B2同样的方式可得到正身圆椽的模型;
所述圆椽的自动削切包括以下步骤:
(1)将生成的椽子做成两个列表,假设它们是LIST0:[C1,C2,C3……Cn]这样的集合,那将LIST0去掉首根椽C1,得到新列表LIST1则为[C2,C3,C4……Cn],将LIST0去掉尾部的一个椽子得到列表LIST2[C1,C2,C3……C(n-1)],将LIST1每一项与LIST2对应项匹配,对应结果应该是[C2-C1,C3-C2,C4-C3……Cn-C(n-1)],使用Geometry.Intersect命令处理各对,得到两根椽子之间相交的交集形体。
(2)然后用Geometry.Explode命令分解上述形体,使用列表处理命令得到分解形体的一个侧面,用Surface.PerimeterCurves得到面上的曲线,再将两椽相交的曲线提取,使用Curve.PointsAtEqualSegmentLength得到按照弧长等分的点,其中divisions决定了取点的密度,也最终决定了削切平面的精细度。最后使用Plane.ByBestFitThroughPoints生成通过各点的削切平面,将最初的椽子列表先从C1开始用生成的平面依次对应削切,然后将结果从C2开始再进行削切,就得到了两头都被削切的椽尾,经过角梁平面的削切处理后,可以间断提取生成好的椽子观察效果;
(3)可以再次借助PythonScript节点,利用Python循环代码和Geometry.ExportToSAT节点将每根翼角椽输出SAT文件,SAT文件则可以被数控机床编程软件使用进行加工。
作为本发明的进一步阐述,所述椽子尾部的削切需要考虑椽子要伸进去角梁而且进去的尺寸是从上往下逐渐变浅的情况。
作为本发明的进一步阐述,所述撑头木的形成包括以下步骤:
(1)利用圆心到椽子中心的切点的距离是已知的这一条件,我们可求得从通过檩条正心位置的垂直于XY平面的面与正身椽的交点向下偏移多少就得到圆心点,使用圆心和半径,通过此点平行于YZ平面垂直于XY平面的面上画圆;
(2)然后使用Curve.Project将圆心沿着反X轴方向投影到角梁平面上,利用这两个轮廓即可生成正心檩和挑檐檩,同样利用三角函数关系,和撑头木的厚度,则可以在前述檩条圆形线上求出撑头木的前后下顶点;
(3)利用这两个点生成平行于XZ的平面与椽子的定位线相交得到两组点,再将这两组点生成轮廓,然后将两个轮廓使用Solid.ByLoft生成撑头木的原始形状,这次可以使用Solid.Difference减去椽子的形状得到撑头木的实体形状。撑头木形成的过程中一定要求出檩条的圆心位置,可以通过檐步距和举高的三角函数关系,利用圆心到椽子中心的切点的距离是已知的这一条件,继续获得其它数据;
作为本发明的进一步阐述,所述飞椽的生成包括以下步骤:
(1)利用圆椽的定位线生成垂直于定位线的平面,将平面向前向后分别偏移半椽径得到每根飞椽两侧的控制平面;
(2)根据飞椽的侧立面特征使用函数生成正身飞椽的控制点,然后再生成角梁上的五个控制点,使用Arc.ByStartPointEndPointStartTangent节点生成各飞椽的关键控制线,与前述平面相交得到关键控制点;
(3)然后利用几何关系将椽头的点沿着椽身方向改变位置到垂直于椽身方向的面上最终得到飞椽的外轮廓点,每根飞椽由左右两个轮廓使用Solid.ByLoft生成。飞椽的生成,核心思路即,由于飞椽的宽度正好等于圆椽的椽径,利用圆椽的定位线生成垂直于定位线的平面,将平面向前向后分别偏移半椽径得到每根飞椽两侧的控制平面
本发明在使用时,需要以下翼角造型的关键参数,给予椽子的檐步、举高、挑檐檩到正心檩的水平距离、椽子的平出、椽子数量、椽子直径、角梁宽度、冲出、起翘值、圆椽起翘值、撑头木宽度为主要参数。
椽子的檐步和椽子的举高直接决定了正身圆椽在侧立面上的斜率,利用这个斜率可以求得在椽子中心线上的点,檐步同时还决定了角梁与正身椽的位置关系。
正身椽的平出是相对于挑檐檩而言的。挑檐檩到正心檩的水平距离加上平出才是椽子从正心檩向外挑出的水平距离。
椽子数量决定了翼角椽的数目,翼角椽在明代很多已存建筑实物中发现是存在偶数数量的翼角椽的,在明代决定翼角椽数目的关键问题是椽当距要和正身椽保持基本一致,而不是刻意追求奇数。因此程序的设计也没有将椽子数目限定为奇数。
椽子的平出则决定了飞椽椽头至挑檐檩的水平距离。
圆椽的平出决定了圆椽椽头至挑檐檩的水平距离。一般情况下圆椽的平出为飞椽平出的2/3。
椽子的直径不仅决定了椽子的直径本身,而且决定了正身椽的椽当,由椽当值为参考则可以推算出翼角椽应当采取的大致根数(对于椽当要求均布的时期,比如明代)
角梁的宽度则决定了翼角椽上尾的削切位置(还要在角梁外皮向内削切一个凹槽的深度)也决定了上尾定位的点。也决定翼角第一根椽子的定位情况。
冲出、起翘的值、圆椽冲出、起翘的值则直接决定了角梁上起翘点的控制点(飞椽、圆椽起翘点),这个点配合翼角旁第一根正身飞椽、圆椽,使用数学方法可以得到翼角各椽头形成的弧线。
图11是将翼角椽载入到前期搭设的BIM模型中,因为本例所示的BIM模型已经完全按照计算机模型尺寸被加工成为了建筑实体;因此,只要调整程序的参数得到适应于此木架模型匹配的翼角椽造型,那么此例的翼角椽就一定能运用于实际的施工指导过程之中。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
Claims (4)
1.一种基于可视化编程工具Dynamo的翼角圆椽建模,其特征在于:包括正身圆椽的模型的建立、圆椽的自动切削、撑头木的形成和飞椽的生成,正身圆椽的模型的建立包括以下建模步骤:
(1)先定位各椽子的定位线,为了准确定位,使用Point.ByCoordinates(x,y,z) 节点,将檐步距加上第一根正身椽和下金檩的水平距离之和赋予该节点的X值,该值再加上椽当和椽子直径再赋予相同节点,得到A0和B0点,同理,将步架和偏移距离赋予该节点的x,y值,将举高赋予z值,得到圆椽的上顶点A1、B1,通过三角函数的计算,利用相似三角形关系,得到挑檐檩和金檩的距离以及平出值,使用CodeBlock工具,将上述参数的关键值代入变量,即可得到圆椽延申至飞椽下方的点的坐标值,加上z值向上的偏移量就得到飞椽头下顶点A3、B3,再输入圆椽平出值,得到圆椽的下顶点A2,B2;
(2)利用冲出值与平出等距离得到Q1、Q3两个点的水平值,配合A2、A3的z值与圆椽和飞椽各自的起翘值,圆椽的起翘值是圆椽到老角梁上皮的高度差,飞椽的起翘值是飞椽到仔角梁安装大连檐的下皮的高度差,得到圆椽起翘控制点Q1,圆椽起翘控制点Q1穿过圆心,飞椽起翘控制点Q3;
(3)使用Arc.ByStartPointEndPointStartTangent节点,将B2-A2形成的向量赋予StartTangent节点,A2作为起点,Q1作为终点生成一道与正身椽头连线相切的圆弧,此圆弧在水平面上、垂直面上观察均为一道从正身椽伸出的自然曲线,这条线就作为翼角圆椽椽头的控制线;
(4)使用通过坐标原点的线A1-Q1,将其中任意一个点使用Geometry.Translate节点在Z方向偏移任意一个值得到一点,使用该点联合线条,用Plane.ByLineAndPoints得到垂直于A1-Q1的平面,使用Plane.Offset命令,将角梁宽度的1/4赋予dist值,从角梁1/4宽位置开始等分圆弧,得到一个新平面,将该平面和控制线赋予Geometry.Intersect命令得到平面与圆椽椽头的控制线的交点Q2,使用Curve.SplitByPoints节点,将圆椽椽头控制线输入Curve,Q2输入Point,将该圆弧打断后,将长的那一段使用Curve.PointsAtEqualChordLength,将椽子数量输入得到圆椽的下顶点;
(5)回到原来的垂直平面,再使用Plane.offset命令,这次偏移值为1/2角梁宽度,得到角梁的外皮平面,与A2-A1线相交得到JA点,与圆椽弧线控制线相交得到Q4点,JA与Q4的连线就为翼角椽椽尾的控制线,使用Curve.TrimByStartParameter节点,输入起始参数0.05,这个值根据实际情况的不同进行微调得到椽尾控制线,使用Curve.PointsAtChordLengthFromPoint,从该线条的起点开始,每隔0.8椽径打一个点,然后根据椽子数量,从第一个点开始,使用List.GetItemAtIndex命令提取相应数目的椽尾点;
(6)利用起点和终点生成的方向作为Geometry.translate节点的direction,Geometry则为椽子的尾部定位点,Vector.ByTwoPoints指的是利用空间中的起点和终点两个点创建一个向量,distance则由PythonScript节点写入一个循环,生成一个等差递增比例的数列,这就将靠近角梁的椽子尾部延伸地更长,这是为了将来椽子还需要在角梁的位置斜切一个面方便固定的需要,得到的结果则为最终定位终点,最终将各起点终点连线,连线的长度直接指导翼角椽施工的画线长度;使用ExportExcel则直接输出到Excel文件之中;
(7)使用Cylinder.ByPointsRadius输入上述起点、终点,将椽子的半径赋予radius,则得到圆椽的模型;同理,利用A1-A2,B1-B2同样的方式可得到正身圆椽的模型;
所述圆椽的自动削切包括以下步骤:
(1)将生成的椽子做成两个列表,假设它们是LIST0:[C1,C2,C3……Cn]这样的集合,那将LIST0去掉首根椽C1,得到新列表LIST1则为[C2,C3,C4……Cn],将LIST0去掉尾部的一个椽子得到列表LIST2[C1,C2,C3……C(n-1)],将LIST1每一项与LIST2对应项匹配,对应结果应该是[C2-C1,C3-C2,C4-C3……Cn-C(n-1)],使用Geometry.Intersect命令处理各对,得到两根椽子之间相交的交集形体;
(2)然后用Geometry.Explode命令分解上述形体,使用列表处理命令得到分解形体的一个侧面,用Surface.PerimeterCurves得到面上的曲线,再将两椽相交的曲线提取,使用Curve.PointsAtEqualSegmentLength得到按照弧长等分的点,其中divisions决定了取点的密度,也最终决定了削切平面的精细度;最后使用Plane.ByBestFitThroughPoints生成通过各点的削切平面,将最初的椽子列表先从C1开始用生成的平面依次对应削切,然后将结果从C2开始再进行削切,就得到了两头都被削切的椽尾,经过角梁平面的削切处理后,间断提取生成好的椽子观察效果;
(3)再次借助PythonScript节点,利用Python循环代码和Geometry.ExportToSAT节点将每根翼角椽输出SAT文件,SAT文件则被数控机床编程软件使用进行加工。
2.根据权利要求1所述的一种基于可视化编程工具Dynamo的翼角圆椽建模,其特征在于:所述撑头木的形成包括以下步骤:
(1)利用圆心到椽子中心的切点的距离是已知的这一条件,可求得从通过檩条正心位置的垂直于XY平面的面与正身椽的交点向下偏移多少就得到圆心点,使用圆心和半径,通过此点平行于YZ平面垂直于XY平面的面上画圆;
(2)然后使用Curve.Project将圆心沿着反X轴方向投影到角梁平面上,利用这两个轮廓即可生成正心檩和挑檐檩,同样利用三角函数关系和撑头木的厚度,则在前述檩条圆形线上求出撑头木的前后下顶点;
(3)利用这两个点生成平行于XZ的平面与椽子的定位线相交得到两组点,再将这两组点生成轮廓,然后将两个轮廓使用Solid.ByLoft生成撑头木的原始形状,这次使用Solid.Difference减去椽子的形状得到撑头木的实体形状。
3.根据权利要求2所述的一种基于可视化编程工具Dynamo的翼角圆椽建模,其特征在于:所述撑头木为檩条上的垫木。
4.根据权利要求1所述的一种基于可视化编程工具Dynamo的翼角圆椽建模,其特征在于:所述飞椽的生成包括以下步骤:
(1)利用圆椽的定位线生成垂直于定位线的平面,将平面向前向后分别偏移半椽径得到每根飞椽两侧的控制平面;
(2)根据飞椽的侧立面特征使用函数生成正身飞椽的控制点,然后再生成角梁上的五个控制点,使用Arc.ByStartPointEndPointStartTangent节点生成各飞椽的关键控制线,与前述平面相交得到关键控制点;
(3)然后利用几何关系将椽头的点沿着椽身方向改变位置到垂直于椽身方向的面上最终得到飞椽的外轮廓点,每根飞椽由左右两个轮廓使用Solid.ByLoft生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911080045.3A CN111079211B (zh) | 2019-11-07 | 2019-11-07 | 一种基于可视化编程工具Dynamo的翼角圆椽建模 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911080045.3A CN111079211B (zh) | 2019-11-07 | 2019-11-07 | 一种基于可视化编程工具Dynamo的翼角圆椽建模 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111079211A CN111079211A (zh) | 2020-04-28 |
CN111079211B true CN111079211B (zh) | 2023-04-07 |
Family
ID=70310953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911080045.3A Active CN111079211B (zh) | 2019-11-07 | 2019-11-07 | 一种基于可视化编程工具Dynamo的翼角圆椽建模 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111079211B (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000170307A (ja) * | 1998-12-03 | 2000-06-20 | Asahi Chem Ind Co Ltd | 屋根パネルの製造方法及び屋根パネルの設計装置 |
CN108038287A (zh) * | 2017-11-30 | 2018-05-15 | 王曦 | 一种殿堂式大木作屋架层的建模方法及计算机设备 |
-
2019
- 2019-11-07 CN CN201911080045.3A patent/CN111079211B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111079211A (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE49149E1 (en) | Method for detecting two dimensional sketch data from source model data for three dimensional reverse modeling | |
CN112257137B (zh) | 一种基于Revit的建筑结构BIM正向自动设计方法 | |
US20070285425A1 (en) | Reverse modeling method using mesh data as feature | |
CN108875177B (zh) | 基于bim模型创建单波束测点下内河航道疏浚图形的方法 | |
CN107869249B (zh) | 弧形结构高支模施工方法 | |
CN109531062A (zh) | 不均匀弯扭箱形梁旋转梯制作方法 | |
CN112001016B (zh) | 一种基于元模型和建构逻辑的建筑信息模型自动建模方法 | |
CN110706348A (zh) | 装配式钢结构建筑的参数化建模方法 | |
CN111914338B (zh) | 一种参数化隧道明洞衬砌结构bim模型建立方法 | |
CN104951632A (zh) | 用于圆台表面混凝土结构的三维布筋方法 | |
CN103310042A (zh) | 用于布置三维角筋的方法 | |
CN111395520A (zh) | 一种基于CAD与WebGl的装配式结构预制柱和叠合梁深化设计方法 | |
CN111709078B (zh) | 基于bim技术的走廊可视化建模方法 | |
WO2024000762A1 (zh) | 基于Revit的桥梁下部结构建模方法、系统及装置 | |
CN114638034A (zh) | 一种钢筋建模方法及装置 | |
CN111079211B (zh) | 一种基于可视化编程工具Dynamo的翼角圆椽建模 | |
CN113432572B (zh) | 一种基于三维扫描的复杂结构最优测点规划方法 | |
CN104834797B (zh) | 一种仿古建筑砼翼角基于计算机辅助设计及施工方法 | |
CN114912172A (zh) | 一种快速得出基础基坑开挖控制点坐标与高程的方法 | |
CN115048707A (zh) | 一种基于建筑信息模型的边缘构件拆分方法 | |
CN111608332B (zh) | 现浇砼屋面翼形角飞檐的施工方法 | |
CN110399679B (zh) | 一种地基基础位置优化设计方法 | |
CN108491645B (zh) | 基于Autodesk Inventor Professional软件的拱肋放样操作方法 | |
CN114357576B (zh) | 一种基于Revit和Dynamo变截面桥梁栏杆立柱的创建方法 | |
CN109325317B (zh) | 一种古建筑飞檐的参数化建模方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |