一种基于Civil3d+Revit+Dynamo的改进三维地质建模的方法
技术领域
本发明涉及三维地质建模技术领域,具体为一种基于Civil3d+Revit+Dynamo的改进三维地质建模的方法。
背景技术
勘察设计是工程建设的重要环节,勘察设计的好坏不仅影响建设工程的投资效益和质量安全,其技术水平和指导思想对城市建设的发展也会产生重大影响。
现有技术中,传统的勘察设计报告主要以柱状图、平面图等二维形式展示,不具备良好的直观性,很难充分表达复杂地质体空间的分布规律。同时,随着近几年建筑信息模型(BIM)技术的迅速发展,将BIM技术引入勘察设计,以解决复杂地质层的岩土设计及工程评价问题。
但是,利用BIM技术创建三维地质模型的方法主要有以下两种:①利用Civil3d+Revit+Dynamo来创建三维地质模型(Civil3d为主体)②利用Revit+Dynamo来创建三维地质模型(Dynamo为主体)。但是这两种方法都有的缺陷是:受地质钻探点数量的影响,不仅会影响生成地质曲面的效果,更重要的是会造成地质曲面不贴合实际,不够精确。甚至由于钻探点稀疏,利用方法②创建三维地质模型时还会出现生成失败的情况。
发明内容
本发明的目的在于提供一种基于Civil3d+Revit+Dynamo的改进三维地质建模的方法,以解决上述背景技术中提出的传统三维地质模型制作方法效果不佳且生成失败的问题。
为实现上述目的,本发明提供如下技术方案:一种基于Civil3d+Revit+Dynamo的改进三维地质建模的方法,包括以下步骤:
坐标整理,根据地质勘察报告,按每一地层统计每一勘察点数据,将数据按照X,Y,Z坐标整理至Excel表格中;
曲面制作,将Excel表格中的点,按照每一层地质数据,导入到civil3d中,然后利用这些点生成曲面,每一层都生成一个曲面;
原始数据处理,打开Dynamo软件,利用节点Data.ImportExcel将Excel表格中统计的数据导入到Dynamo中进行处理得到每一个点的X、Y、Z坐标值并在Dynamo中重新组合成一个新的坐标点;
地形曲面制作,利用Dynamo中原生节点Topography.ByPoints通过点创建地形曲面,可以生成地形曲面,利用Dynamo中外部节点包中的ToNurbsSurface.By Points Matrix节点对生成的曲面利用插值法进行平滑处理;
组标点分量提取,针对于原始数据处理步骤中得到的坐标点,提取坐标点的X分量与Y分量;
数值提取,针对于组标点分量提取步骤中得到的X分量与Y分量,分别利用节点List.MinimumItem和List.MaximumItem分别提取X分量与Y分量的最小值和最大值;
添加节点,添加节点Code Block,并在其中输入“a..b..#c”,可以在节点CodeBlock中得到三个输入点,分别为a输入点、b输入点、c输入点;
节点连接,a输入点与数值提取步骤中的X分量的最小值输出端相连,b输入点与数值提取步骤中的X分量的最大值输出端相连;重复数值提取步骤和添加节点步骤,使a输入点与数值提取步骤中的Y分量的最小值输出端相连,b输入点与数值提取步骤中的Y分量的最大值输出端相连
坐标变量提取,添加Dynamo中原生节点List.UniqueItems,使其输入端与组标点分量提取步骤中的X分量的输出端相连,得到所有坐标点中不重复的X变量;同理,继续创建一个自定义节点A,使其输入端与组标点分量提取步骤中的Y分量的输出端相连,得到所有坐标点中不重复的Y变量;
坐标变量数目提取,利用Dynamo中原生节点List.Count,使其输入端与坐标变量提取步骤中节点List.UniqueItems的输出端相连,得到所有坐标点中不重复的X变量的数目;同样的方式,亦可以得到所有坐标点中不重复的Y变量的数目;
方向点获取,添加一个Dynamo中原生节点Integer Slider,整数值的范围为1—5,作为添加点的阶数;添加一个Dynamo中原生节点Code Block,在节点中输入“a*b”,输入之后节点会添加两个输入端口,a输入端口与Integer Slider节点的输出端口相连,b输入端口与坐标变量数目提取步骤中X变量的输出端口相连,得到在XY平面内,X轴方向更多的点,点的数目是原始数据X轴上数据的2倍、3倍、4倍、5倍甚至更多;同样的方式得到Y轴方向上更多的点;添加一个Dynamo中原生节点Point.ByCoordinates,并将该节点的连缀方式改为叉积,该节点的X输入端与X变量的Code Block输出端相连,Y输入端与Y变量的Code Block输出端相连,这样就在XY平面内创建了是原始数据4倍、9倍、16倍、25倍甚至更多的点;
地形曲面点投影,添加一个Dynamo中原生节点“Surface.Project Input Onto”,该节点surface输入端口与地形曲面制作步骤中的输出端口相连,geomotryToProject输入端口与方向点获取步骤中Point.By Coordinates节点的输出端口相连,ProjectinonDirection输入端口与节点Vector.ZAxis,Z轴方向向量相连,得到XY平面上的点投影到处理后的地形曲面上的点,而且点的数目足够多;
曲面空间坐标值获取,添加Dynamo中原生节点Point.X、Point.Y、Point.Z,分别与地形曲面点投影步骤中节点Surface.ProjectInputOnto的输出端口相连,分别得到曲面空间点的X、Y、Z坐标值;
获取新列表,添加Dynamo中原生节点List.AddItemToFront,在item输入端口中输入自己想要在列表表头添加的内容,例如X轴,list输入端口与曲面空间坐标值获取步骤中的节点Point.X相连,得到列表第一行为X轴的新列表,同样的方式,可以得到列表第一行为Y轴的新列表,以及列表第一行为Z轴的新列表;
新地形曲面制作,添加Dynamo中原生节点Data.ExportExcel,将获取新列表步骤得到的列表输出到指定的一个Excel表格中,将输出的Excel导入到civil3d中,然后利用这些点生成新的地形曲面,此时生成的曲面就会更加光滑,更加贴近实际;其余地层曲面的生成步骤是循环原始数据处理步骤到新地形曲面制作步骤,只需在原始数据处理步骤中更改输入表格的路径,或者重新指定一个新的工作表名称;每一层地形曲面生成以后,利用“提取实体”命令,生成第一层到第二层之间的地形实体,并将实体单独保存到一个新的文件夹,以此类推,生成每一层的地形实体;
图形转化模型获取,利用Revit软件中的“链接CAD”将原始数据处理步骤中的dwg文件逐个导入到Revit中,新建一个Dynamo文件,添加一个Dynamo的原生节点Select ModelElements,从Revit文件中选择多个图元,添加之后,打开Revit工作界面,框选新添加的dwg文件,添加一个Dynamo的原生节点Element.Geometry,获取与该对象关联的所有几何图形,输入端口与新建Dynamo文件输出端相连,添加一个外部节点包中的节点:Springs.FamilyInstance.ByGeometry,该节点的geometry输入端口与Dynamo的原生节点的输出端相连确定输出的图形,familyTemplatePath输入端口与Dynamo中原生节点File Path的输出端相连,确定图形输出的族样板路径,familyname输入端口可以与Dynamo中原生节点CodeBlock的输出端口相连,节点Code Block中输入每一地层的族名称,输入格式为[“A”,“B”,“C”,“D”,“E”],按照层数的多少逐层输入,Category输入端口与Dynamo中原生节点Categories的输出端口相连,选择族类别为常规模型,即可将DWG文件转为Dynamo中可识别的图形文件,在将Dynamo中的图形文件转为Revit中具有属性的模型文件。
优选的,曲面制作步骤中,生成的曲面的点很稀疏,而且不够平滑,需要对原始数据进行处理。
优选的,地形曲面制作步骤中,生成的地形曲面,点与点之间是通过直线进行连接的。
与现有技术相比,本发明的有益效果是:
本发明提出的基于Civil3d+Revit+Dynamo的改进三维地质建模的方法通过原始数据处理以及方向点获取解决了受地质钻探点数量的影响,不仅会影响生成地质曲面的效果,更重要的是会造成地质曲面不贴合实际,不够精确,甚至由于钻探点稀疏的问题,且通过新地形曲面制作以及图形转化模型获取解决了创建三维地质模型时还会出现生成失败的情况的问题。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种技术方案:一种基于Civil3d+Revit+Dynamo的改进三维地质建模的方法,包括以下步骤:
坐标整理,根据地质勘察报告,按每一地层统计每一勘察点数据,将数据按照X,Y,Z坐标整理至Excel表格中;
曲面制作,将Excel表格中的点,按照每一层地质数据,导入到civil3d中,然后利用这些点生成曲面,每一层都生成一个曲面,此时生成的曲面的点很稀疏,而且不够平滑,需要对原始数据进行处理;
原始数据处理,打开Dynamo软件,利用节点Data.ImportExcel将Excel表格中统计的数据导入到Dynamo中进行处理得到每一个点的X、Y、Z坐标值并在Dynamo中重新组合成一个新的坐标点;
地形曲面制作,利用Dynamo中原生节点Topography.ByPoints通过点创建地形曲面,可以生成地形曲面,生成的地形曲面,点与点之间是通过直线进行连接的,利用Dynamo中外部节点包中的ToNurbsSurface.By Points Matrix节点对生成的曲面利用插值法进行平滑处理;
组标点分量提取,针对于原始数据处理步骤中得到的坐标点,提取坐标点的X分量与Y分量;
数值提取,针对于组标点分量提取步骤中得到的X分量与Y分量,分别利用节点List.MinimumItem和List.MaximumItem分别提取X分量与Y分量的最小值和最大值;
添加节点,添加节点Code Block,并在其中输入“a..b..#c”,可以在节点CodeBlock中得到三个输入点,分别为a输入点、b输入点、c输入点;
节点连接,a输入点与数值提取步骤中的X分量的最小值输出端相连,b输入点与数值提取步骤中的X分量的最大值输出端相连;重复数值提取步骤和添加节点步骤,使a输入点与数值提取步骤中的Y分量的最小值输出端相连,b输入点与数值提取步骤中的Y分量的最大值输出端相连
坐标变量提取,添加Dynamo中原生节点List.UniqueItems,使其输入端与组标点分量提取步骤中的X分量的输出端相连,得到所有坐标点中不重复的X变量;同理,继续创建一个自定义节点A,使其输入端与组标点分量提取步骤中的Y分量的输出端相连,得到所有坐标点中不重复的Y变量;
坐标变量数目提取,利用Dynamo中原生节点List.Count,使其输入端与坐标变量提取步骤中节点List.UniqueItems的输出端相连,得到所有坐标点中不重复的X变量的数目;同样的方式,亦可以得到所有坐标点中不重复的Y变量的数目;
方向点获取,添加一个Dynamo中原生节点Integer Slider,整数值的范围为1—5,作为添加点的阶数;添加一个Dynamo中原生节点Code Block,在节点中输入“a*b”,输入之后节点会添加两个输入端口,a输入端口与Integer Slider节点的输出端口相连,b输入端口与坐标变量数目提取步骤中X变量的输出端口相连,得到在XY平面内,X轴方向更多的点,点的数目是原始数据X轴上数据的2倍、3倍、4倍、5倍甚至更多;同样的方式得到Y轴方向上更多的点;添加一个Dynamo中原生节点Point.ByCoordinates,并将该节点的连缀方式改为叉积,该节点的X输入端与X变量的Code Block输出端相连,Y输入端与Y变量的Code Block输出端相连,这样就在XY平面内创建了是原始数据4倍、9倍、16倍、25倍甚至更多的点;
地形曲面点投影,添加一个Dynamo中原生节点“Surface.Project Input Onto”,该节点surface输入端口与地形曲面制作步骤中的输出端口相连,geomotryToProject输入端口与方向点获取步骤中Point.By Coordinates节点的输出端口相连,ProjectinonDirection输入端口与节点Vector.ZAxis,Z轴方向向量相连,得到XY平面上的点投影到处理后的地形曲面上的点,而且点的数目足够多;
曲面空间坐标值获取,添加Dynamo中原生节点Point.X、Point.Y、Point.Z,分别与地形曲面点投影步骤中节点Surface.ProjectInputOnto的输出端口相连,分别得到曲面空间点的X、Y、Z坐标值;
获取新列表,添加Dynamo中原生节点List.AddItemToFront,在item输入端口中输入自己想要在列表表头添加的内容,例如X轴,list输入端口与曲面空间坐标值获取步骤中的节点Point.X相连,得到列表第一行为X轴的新列表,同样的方式,可以得到列表第一行为Y轴的新列表,以及列表第一行为Z轴的新列表;
新地形曲面制作,添加Dynamo中原生节点Data.ExportExcel,将获取新列表步骤得到的列表输出到指定的一个Excel表格中,将输出的Excel导入到civil3d中,然后利用这些点生成新的地形曲面,此时生成的曲面就会更加光滑,更加贴近实际;其余地层曲面的生成步骤是循环原始数据处理步骤到新地形曲面制作步骤,只需在原始数据处理步骤中更改输入表格的路径,或者重新指定一个新的工作表名称;每一层地形曲面生成以后,利用“提取实体”命令,生成第一层到第二层之间的地形实体,并将实体单独保存到一个新的文件夹,以此类推,生成每一层的地形实体;
图形转化模型获取,利用Revit软件中的“链接CAD”将原始数据处理步骤中的dwg文件逐个导入到Revit中,新建一个Dynamo文件,添加一个Dynamo的原生节点Select ModelElements,从Revit文件中选择多个图元,添加之后,打开Revit工作界面,框选新添加的dwg文件,添加一个Dynamo的原生节点Element.Geometry,获取与该对象关联的所有几何图形,输入端口与新建Dynamo文件输出端相连,添加一个外部节点包中的节点:Springs.FamilyInstance.ByGeometry,该节点的geometry输入端口与Dynamo的原生节点的输出端相连确定输出的图形,familyTemplatePath输入端口与Dynamo中原生节点File Path的输出端相连,确定图形输出的族样板路径,familyname输入端口可以与Dynamo中原生节点CodeBlock的输出端口相连,节点Code Block中输入每一地层的族名称,输入格式为[“A”,“B”,“C”,“D”,“E”],按照层数的多少逐层输入,Category输入端口与Dynamo中原生节点Categories的输出端口相连,选择族类别为常规模型,即可将DWG文件转为Dynamo中可识别的图形文件,在将Dynamo中的图形文件转为Revit中具有属性的模型文件。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。