1.背景介绍
建筑体参数化设计是一种利用计算机辅助设计(CAD)软件和参数化建模工具来创建、分析和修改建筑设计的方法。这种方法的核心在于使用参数和算法来定义建筑元素之间的关系,从而使得设计过程更加灵活、高效,并且能够快速响应设计变更。
参数化设计在建筑领域的应用越来越广泛,它不仅提高了设计效率,还为设计师提供了更多的创新空间。通过参数化设计,建筑师可以探索更加复杂和动态的建筑形式,同时确保设计的可行性和可持续性。随着计算机技术的发展,参数化设计工具和方法也在不断进步,为建筑设计带来了革命性的变化。
参数化几何建模的核心思想是将几何模型的表达式与一组参数相关联,通过改变这些参数的值来动态地改变模型的形状。这种方法可以极大地提高建模的灵活性和效率。现有参数化几何建模造型方案通常是,使用参数化方法来构建和操纵几何形状的技术。这些方案通常依赖于数学表达式和约束求解器来定义和调整模型的几何属性。
常用的参数化几何建模造型方案:
- 参数化曲线和曲面:使用数学函数(如多项式、样条函数等)来定义曲线和曲面。这些函数的系数可以作为参数进行调。
- 基于特征的建模:通过定义几何特征(如顶点、边、面)及其相互关系来构建模型。调整这些特征或关系即可改变模型的几何造型。
(3)几何约束求解器:在参数化建模中,约束求解器用于解决几何约束问题,例如保持线段的垂直性、平行性或长度比例等。
几何约束求解器:它是一种算法或软件工具组件,用于在满足特定约束条件的情况下找到变量的最优解。在几何建模中,这些约束可能包括:
- 几何约束:点、线、面的位置和方向关系(例如,垂直、平行、相等、共线等)。
- 尺寸约束:长度、角度、面积和体积等尺寸限制。
- 拓扑约束:定义元素之间的连接关系(例如,固定点、边或面的连接)。
基于几何约束求解器的构件参数化几何造型是目前主流的构件参数化方案。
该方案依赖几何约束求解器组件这个关键组件,其中几何约束求解器存在如下缺陷:
- 稳定性:对于一些非线性或高度耦合的约束,求解器可能难以找到稳定解或者收敛速度慢。
- 易用性:对于非专业用户来说,配置和优化求解器可能比较困难,易用性可能不佳。
- 未定义行为:在几何约束求解中,如果约束定义不明确或存在逻辑错误,求解器可能无法处理这些问题。
- 条件逻辑:无法处理一些布尔逻辑及循环逻辑等非几何计算逻辑,例如if条件判断逻辑,for循环,ceiling,floor逻辑等。
- 非几何信息:无法处理一些非几何信息的参数化,例如字符串等。
-
2.技术方案
-
为解决上述存在的技术问题,该方案采用一种基于Lua的JIT引擎技术的快速获取构件参数化实体模型。它首先获取构件参数定义,创建参数引用关系图,获取求解顺序, 构造参数求解驱动脚本,依次运行参数脚本和构件模型脚本,即可获取构件的参数化几何造型BRep表示。
Lua是一种轻量级的脚本语言,运行速度快,内存占用少,可以很方便地嵌入到其他程序中。
-
本方技术案分三个步骤来完成。
(1)首先,需要完成参数化构件的定义,构件定义包括包括如下信息:
- 构件的分组信息
- 构件的类别信息
- 构件的族类别信息
- 构件的族参数信息
- 构件族实例参数列表
- 族模型的驱动文件
-
-
-
(2)构件参数的求解,根据参数计算公式,计算参数间的引用关系,构造求解顺序,求解构件参数列表,获取参数列表求解结果。
-
省略
-
(3)根据求解参数列表,使用Lua运行JIT引擎运行模型驱动脚本,获取参数化几何模型信息。
-
图4-构件参数化几何造型求解算法-省略
-
3.具体实现
-
首先,实现Lua脚本语句中数学计算、基础几何、基础几何造型等基础功能,然后创建构件参数定义信息,创建构件参数化驱动脚本。接着根据定义的构件参数信息,进行构件参数列表求解,然后将参数求解结果输入构件参数管理器,最后运行构件造型驱动脚本,获取构件的参数化几何造型。
-
以下是具体实施步骤:
(1)定义构件信息
- 构件分组信息
- 构件类别信息
- 构件族类别信息
- 构件的族参数信息
- 构件族实例参数列表
-
根据构件参数定义,定义构件实例参数表,采用本地数据库表来存储,构件族实例的表的名称与族类型定义表名称一致。另外,规定参数列表中构件实例名称是必须字段。
- 族模型的驱动文件
模型驱动文件是可以运行的LUA脚本语句组成的,为了完成参数化构件几何造型生成,我们需要定义如下5种功能类型Lua脚本语句:
- 数学计算功能
A.矩阵计算类:LuaMatrix4d
完成矩阵的常用操作,例如旋转,移动,镜像,设置等
B.方向计算类:LuaVector3d
完成矩阵的常用操作,例如加、减、乘、除、dot、cross等
(1)方向计算工具类:LuaVector3dUtils
完成角度计算,平行、垂直判断、二分角方向等
(2)基础几何功能
A.直线类:LuaLineBuilder
完成直线定义以及长度、求交、旋转等基础操作。
B.圆弧类:LuaArcBuilder
完成圆弧的定义以及圆弧求交等基础操作。
C.几何点类:LuaPointBuilder
完成几何点的定义、投影、旋转、距离等基础操作
(3)构件参数功能
参数管理器:LuaParamManager
完成不同类型值参数新增,参数值查询等,参数类型包括整型,字符串,浮点数,布尔等。
(4)基础实体造型功能
A.拉伸截面定义类:LuaProfileBuilder
它定义了添加Line,Arc等基础几何对象来定义轮廓截面,同时定义轮廓截面的拷贝,移动,镜像和旋转功能,返回一个封闭的WireBody对象,被用来完成几何三维实体的生成。
B.拉伸路径定义类:LuaPathBuilder
它定义了添加Line,Arc等基础几何对象来定义路径,同时定义路径的拷贝,移动,镜像和旋转功能,返回一个封闭的WireBody对象,被用来完成几何三维实体的生成。
C.三维实体定义类:LuaBodyBuilder,返回一个封闭的Body对象
它定义了如下几种基础形体的创建:
- 圆柱体Cylinder
- 空心管道Tube
- 圆台Cone
- 圆环Torus
- 分段圆环SegmentTorus
- 球体Sphere
- 扫掠体SweepBody
- 拉伸体ExtrudeBody
- 放样体Loft
- 剪切平面CutPlane
- 布尔Boolean
(5) 三维形体管理功能:
LuaGRepBuilder管理生成的基础形体,返回构件的最终参数化几何造型
(6)模型驱动文件生成
用户可以基于以上定义的基础形体功能语句,可以采用手写模型驱动文件,也可采用可视化工具辅助生成。
扫掠体生成算法
首先定义点,点之间通过参数约束表达式建立关系,例如:
Local DirA = cbim.Vector3d(0.00,0.00,1.00)
Local PointB = PointA + DirA * LengthA
然后通过这些参数化的点定义Curve,通过这些定义的Curve来定义拉伸截面和扫描路径,使用这些定义的拉伸截面和扫描路径,接着LuaBodyBuilder:AddLoft生成三维参数化扫掠体造型.
依照上述类似的方法可以生成参数化的各种基础几何造型,例如圆柱体、空心管道体、球体和圆台体等,然后使用布尔boolean操作成复杂形状的参数化几何造型。
标签:定义,求解,造型,三维,建模,参数,几何,构件 From: https://blog.csdn.net/ljemailbox/article/details/94435104