第十章 实体造型中的基本算法及特征造型
实体造型技术的研究

实体造型技术的研究实体造型技术的研究可以追到溯到六十年代初期,不过,直到六十年代后半期,有关实体造型的报道仍然很少。
七十年代初期,出现了一些实体造型系统,如英国剑桥大学的BUILD-1系统,德国柏林工业大学的COMPAC系统,日本北海道大学的TIPS-1系统和美国罗切斯特大学的PADL-1、PADL-2系统等。
这些早期的实体造型系统有一个共同的特点:不支持精确的曲面表示,用多面体表示形体。
多面体模型的优点是数据结构相对简单,集合运算、明暗图的生成和显示速度快。
但是,同一系统中存在两种表示:精确的曲面表示和近似的多面体逼近,违背了几何定义唯一性原则;而且,曲面形体使用多面体模型只是近似表示,存在误差,若要提高表示精度时,就需要增加离散平面片的数量,庞大数据量影响计算速度和计算机的存储管理,也是难以接受的。
显然,要为了解决这个问题,就需要在几何造型系统中采用精确的形体表示模型。
六、七十年代,雕塑曲面的研究取得了很大的进展,Coons曲面、Bezier曲线和曲面、B样条曲线和曲面等设计方法相继提出,并在汽车、航空和造船等行业得到了广泛的应用。
曲面造型系统由于缺乏面片的连接关系,不仅使曲面的交互修改非常复杂,而且也难于构造封闭的形体。
实体造型系统则由于不能有效地处理复杂曲面,也使其几何造型的覆盖域受到了很大的限制。
自然,如何构造能够精确表示形体的几何造型系统,成了人们研究的目标。
1978年,英国Shape Data公司推出了实体造型系统Romulus,并首次引入了精确的二次曲面,二次曲面的表示采用了代数方程的形式。
八十年代末,出现了NURBS曲线曲面设计方法,已有的曲线曲面表示方法,如Bezier方法、B样条方法等,可以用NURBS方法统一表示,且能精确表示二次曲线曲面。
由于NURBS的强大的表示能力,能够精确表示形体的几何造型系统,纷纷采用了NURBS方法,国际标准化组织也已将NURBS作为定义工业产品形状的唯一数学方法。
十讲实体造型ppt课件共18页文档

人的差异在于业余时间
四叉树(显示用)
• 四叉树由连续将二维区域分成四等分而得。
• 三维空间的八叉树编码过程是二维空间中 编码方法的扩展,即四叉树编码的扩展。
• 分层结构,称作八叉树,用于在某些图形 系统中表示实体。利用空间相关性来减少 三维物体的存储需要,并提供存储有关物 体内部信息的便利表示。
koch曲线
根据下列规则,构造一个Koch曲线: 1.三等分一条线段; 2.用一个等边三角形替代第一步划分三等分的中间
部分; 3.在每一条直线上,重复第二步
Koch曲线是经以上步骤无限重复的极限结果。
分形的分类
• 自相似(self-similar)分形
– 用于模拟树、灌木和其它植物。
• 自仿射(self-affine)分形
Thank you
• 用二叉空间分割树(Binary SpacePartitioning) ,每次将一景物用任意位置和任 意方向的平面分为二部分。在八叉树中,每 次将景物用平行于笛卡尔坐标平面的三个两 两垂直的平面分割。
• 对使用空间细分法而言,BSP树提供了一种 更有效的分割,因为可将分割平面的位置和 方向按适合于物体的空间属性来确定。
• 尽管从定义上分形物体有无限细节, 但我们运用 有限次变换函数。
• 包含在最终物体显示中的细节数量依赖于重复执行 的次数和显示系统的分辨率(我们不可能显示比象 素大小还小的细节变化)。
不同方法级中的山外形开叉情况
• 如果放大一连续的欧式形状,不管其多复杂,最终可 得出光滑的放大图象。但若在分形物体中放大,则连 续地看到如同在原图中出现的更多的细节。从越来越 近的位置观察山,会明显地看到类似的锯齿状。
• 与八叉树相比,可以减少景物树表示深度, 这样减少搜索树的时间。另外BSP树用来识 别可视面和用光线追踪算法的空间分割。
特征造型

a)
b)
选择的棱边
选择陡峭边
倒圆半径 a)
棱边 倒圆半径
选择棱边 a) 陡峭边倒圆 相交
相切 b)
b)
Blend3.prt(陡峭边)
c)
球面 e)
球面 f)
变半径倒圆
• 选中所有要倒圆的棱边 • 在不同的控制点输入半径
R1 倒圆
R=0.4
R2
未输入半径
R=0.1
倒圆结果
面倒圆
• 面圆角功能:在两组面之间倒圆,并对 面进行修剪操作。
拉伸特征
拉伸方向
回转特征
管道特征
扫掠向导特征
拉伸距离
拉伸特征
• 拉伸的截面曲线是什 么?(来自于哪里? 决定了基本形状)
• 拉伸的方向是什么? (向哪个方向拉伸)
• 拉伸的偏置是多少? (截面方向的拉伸厚 度)
• 拉伸高度是多少?( 拉多高)
一个例子
• 对于相对于某些棱边的等距槽或者凸台均可选择这 种方法。
终点角度
最小 DY
顶点
焦点
最大 DY 旋转角度
对称轴
焦距长度 b)
一般二次曲线
切矢
切矢
扫描特征-由曲线生成实体
•扫描特征:是一种利用二维轮廓生成三维实体的有效方法。 基本原理是二维截面轮廓(曲线、草图)沿一条引导线运 动扫掠得到实体。 •引导线:直线(拉伸)、圆弧(旋转体)、任意曲线
拉伸实体
截面线
• 基准特征:基准特征是一个非常有用的 辅助设计工具,借助于基准特征,可以 完成特定的功能。
• 操作特征:在实体上进行的以操作为特 点的各种特征。
特征分类
• 操作特征:
特征分类
特征造型

图9 自动特征识别
三、特征造型方法
(3)基于特征设计(Design by Feature)。利用特征进行零件设 基于特征设计 。 即在设计阶段就调入形状特征造型, 计,即在设计阶段就调入形状特征造型,逐步把几何信息和特 征信息存入数据库中,建立零件的特征数据模型。 征信息存入数据库中,建立零件的特征数据模型。
特征造型
特征造型基本概念; 特征造型基本概念; 特征表达与特征关系; 特征表达与特征关系; 特征造型方法; 特征造型方法; 举例—应用 应用Pro/E进行特征造型; 进行特征造型; 举例 应用 进行特征造型 思考题。 思考题。
一、特征造型基本概念
特征造型的提出; 1 特征造型的提出; 2 特征定义; 特征定义; 3 特征分类; 特征分类; 参数化特征; 4 参数化特征; 特征造型的优点。 5 特征造型的优点。
二、特征表达与特征关系
●
特征关系表达
特征关系现在还无统一的表达方法,一般分为两类: 特征关系现在还无统一的表达方法,一般分为两类:一为特征定 位关系表达, 位关系表达,二为特征连接关系表达
图5 零件的定位关系图
图6 特征的连接关系
三、特征造型方法
以特征作为造型基本元素描述产品的方法叫做基于特征的造型 技术。 技术。 (1)交互特征标定(Interactive Feature Definition) 交互特征标定 通过交互方式人工辅助识别特征,输入工艺信息,建立起零件 通过交互方式人工辅助识别特征,输入工艺信息, 描述的数据结构,这种方法效率低,易出错。已经很少使用。 描述的数据结构,这种方法效率低,易出错。已经很少使用。
图4 特征的布尔运算
二、特征表达与特征关系
2.基于B Reps(边界表示模型)的特征表达: 2.基于B-Reps(边界表示模型)的特征表达: 基于 将特征定义为相互联系的面的集合,称为“面特征” 将特征定义为相互联系的面的集合,称为“面特征”,BReps模型是基于图的 所有的几何(拓扑) 模型是基于图的, Reps模型是基于图的,所有的几何(拓扑)信息显式的表达 在面、 顶点表中,可以与属性值(如表面粗糙度、材料、 在面、边、顶点表中,可以与属性值(如表面粗糙度、材料、 尺寸和公差等)联系在一起。 尺寸和公差等)联系在一起。 3.基于混合CSG/B-Reps的特征表达: 3.基于混合CSG/B-Reps的特征表达: 基于混合CSG/B 的特图11 拉伸扫描特征
3-特征造型

特征造型
SW 二次开发VB讲座
四.扫描语句
1.随路径变化
Part.Extension.SelectByID2 ("草图1", "SKETCH", 0, 0, 0, False, 1, Nothing, 0) Part.Extension.SelectByID2 ("3D草图1", "SKETCH", 0, 0, 0, True, 4, Nothing, 0) Part.FeatureManager.InsertProtrusionSwept3(False, False, 0, False, False, 0, 0, False, 0, 0, 0, 0, True, True,True, 0, True)
6.成形到一面拉伸切除
Part.Extension.SelectByID2 ("", "FACE", 0.1167617, 0.0393075, 0.0186552, True, 1, Nothing, 0) Part.FeatureManager.FeatureCut (True, False, True, 4, 0, 0.01, 0.01, False, False, False, False, 0, 0, False, False, False, False, False, True, True)
4.完全贯穿拉伸切除
Part.FeatureManager.FeatureCut (True, False, True, 1, 0, 0.115, 0, False, False, False, False, 0, 0, False, False, False, False, False, True, True)
第十讲三维实体造型

二、三维几何造型 1.造型环境设置 .
用户坐标系UCS( 用户坐标系UCS(User Coordinate System)。 System)
1.1 用户坐标系的建立
UCS命令建立用户自定义坐标系。 UCS命令建立用户自定义坐标系。 命令执行过程: 命令执行过程: 启动UCS命令后,AutoCAD在命令行提示用户: 启动UCS命令后,AutoCAD在命令行提示用户: 当前UCS名称: 当前UCS名称:当前值 输入选项[ 新建(N)/移动 (M)/正交 (G)/上一个(P)/恢复(R)/ 输入选项 [ 新建(N)/ 移动(M)/ 正交(G)/ 上一个(P)/ 恢复(R)/ 保存(S)/删除(D)/应用(A)/?/世界(W)]<世界> 保存(S)/删除(D)/应用(A)/?/世界(W)]<世界>:
2 .三维实体的表示方法
2.1 体素构造表示法(CSG树表示法) 体素构造表示法(CSG树表示法 树表示法) 正则三维物体 形体是由封闭表面围成的维数一致的有效空间——正则 形体是由封闭表面围成的维数一致的有效空间——正则 体。 存在孤立“悬边”、“悬面”的体是维数不一致的形 存在孤立“悬边” 悬面” 体——非正则体。 ——非正则体。
三维实体的阵列(命令: DARRAY) 7.2 三维实体的阵列(命令:3DARRAY)
创建矩形阵列: 创建矩形阵列:在上面的提示中输入“R” 创建环形阵列: 创建环形阵列:输入“P” :
7.3 三维实体的镜像(命令:MIRROR3D) 三维实体的镜像(命令:MIRROR3D)
沿指定的镜像平面镜像对象。 沿指定的镜像平面镜像对象。 命令执行过程: 选择对象: 选择要进行镜像操作的对象) 选择对象:(选择要进行镜像操作的对象) 指定镜像平面的第一个点( 三点) 指定镜像平面的第一个点 ( 三点 ) 或 [ 对象 (O)/最近的 对象(O)/ 最近的 (L)/Z轴 (Z)/视图 (V)/XY平面(XY)/YZ平面(YZ)/ZX平面 (ZX)/ (L)/Z 轴 (Z)/ 视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/ 三点( )]<三点> 三点(3)]<三点>:
第十章实体造型中的基本算法及特征造型资料

由于所有小面都表示平面多边形,则一个环(Loop)可指定为“外部”边 界,而其他则表示小面的“孔”。这可用两个指向Loop节点的指针实现 。一个指向“外部”边界,而另一个指向该面的所有环(Loop)组成的双向 链表的首环(Loop)。通常遵循一个约定,称带孔的环(hole loops)为内环 (rings)。
union nodes { Solid s; Face f; Loop l; HalfEdge h; Vertex v; Edge e; };
/*return values and misc constants*/ #define ERROR 1 # define SUCCESS 2 #define PI 3.141592653289793
⑤ Vertex 节点Vertex包含一个由4个浮点数表示的向量,它以齐 次坐标形式表示三维空间的一个点。该节点指向后继顶点和前驱顶 点。
图10.1 半边数据结构节点间的层次关系
使用附加的节点类型Edge来记录信息
① Edge 节点Edge使两个半边相互联系。直观地讲,它将一个全边的 两半组合在一起。它由指向“左”半边和“右”半边的指针组成。边的 双向链表通过指向后继边和前驱边的指针来实现。
where->prv->nxt=he;
he->prv=where->prv;
where->prv=he;
he->nxt=where;
}
he->edg=e; he->vtx=v; he->wloop=where->wloop; if(sign==PLUS) e->he1=he; else e->he2=he; return(he); }
2022年第十章D实体造型

• 在AutoCAD中,上下左右的定义如左后
X
O
前
左下
西
东
南
图 上下左右的定义 图 东南西北的定义
▪ 2、模型的消隐
• 消隐操作用来隐藏图形中被前景对象遮掩的背景 对象,使三维图形的显示更加简洁,结构更加清 晰,但消隐模型不够逼真,消隐操作只是用来检 查建模的正确性。 【菜单】[View]→[Hide] 【工具栏】Render工具栏 → 【命令行】hide
四、切割实体——Slice
▪ 【功能】将三维实体切割获得新的实体结构。 ▪ 【菜单】[Draw]→[Solids]→[Slice] ▪ 【工具栏】Solids工具栏 →
一、基本体素的定位 ——三维编辑
▪ 1、3D移动 ▪ 2、3D旋转 ▪ 3、3D镜像 ▪ 4、3D阵列 ▪ 5、3D对齐
二、基本体素的组合 ——布尔操作
一、面域
▪ 面域是由封闭的边界构成的二维封闭区域。 ▪ 在三维空间中就象是一张纸,没有厚度,但不透明,
可以遮挡其它物体;并且可以挖孔。 ▪ 其边界可以是一条图线对象或一系列相连的图线对
象,组成边界的对象可以是直线、圆、圆弧、椭圆、 椭圆弧、样条曲线等。 ▪ 这些对象要求自行封闭形成封闭区域,或与其他对 象首尾相接形成封闭区域。 ▪ 如果边界对象内部相交,就不能生成面域。 ▪ 在AutoCAD中,面域不论有多少图线组成,其都是 一个对象。
• 实体模型常见的造型方法有 体素法 扫描法
1、体素法
▪ 先将实体分解成系统已经提供的基本体素或者可以由系统生 成的基本体素。
▪ 然后将基本体素依次定位,再使用连接操作进行组合。连接 操作包括: • 加连接(并集∪) • 减连接(差集-) • 相交连接(交集∩)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.2 半边数据结构
当实体以边界模型存储时,翼边结构较好地描述了点、边、面 之间的拓扑关系,但它也存在着一些缺陷。因此,人们提出了 一种更完善的数据结构——半边数据结构,简称半边结构。
10.2.1 半边数据结构描述
10.2.2 半边结构程序描述 10.2.3 半边数据结构的具体算法
10.2.1 半边数据结构描 *addhe(e,v,where,sign) Edge *e;
Vertex *v; HalfEdge *where; int { HalfEdge *he; if(where->edg==NULL) he=where; else { sign;
he=(HalfEdge*)new(HALFEDGE,NULL
5种节点Solid、Face、Loop、HalfEdge和Vertex的描述:
① Solid 节点Solid构成一个半边结构引用的根节点。在任意时刻,会 存在几个数据结构引用,为了存取其中的一个,需要指向其Solid节点 的指针。通过指向3个双向链表的指针,Solid节点给出对该模型的面、 边和顶点的访问。所有实体被链接到一个双向链表中,这个表通过指 向该表的后继和前驱实体的指针来实现。
);
where->prv->nxt=he; he->prv=where->prv; where->prv=he; he->nxt=where; } he->edg=e; he->vtx=v; he->wloop=where->wloop; if(sign==PLUS) e->he1=he; else e->he2=he; return(he); }
struct face { Id faceno; /*face identifier*/ Solid *fsolid; /*back pointer to solid*/ Loop *flout; /*pointer to outer loop*/ Loop *floops; /*pointer to list of loops*/ vector feq; /*face equation*/ Face *nextf; /*pointer to next face*/ Face *prevf; /*pointer to previous face*/ }; struct loop { HalfEdge *lege; /*pointer to ring of halfedges*/ Face *lface; /*back pointer to face*/ Loop *nextl; /*pointer to next loop*/ Loop *prevl; /*pointer to previous face*/ };
struct solid { Id Solidno; /*solid identifier*/ Face *sfaces; /*pointer to list faces*/ Edge *sedges; /*pointer to list of vertices*/ Vertex *sverts; /*pointer to list of solid*/ Solid *nexts; /*pointer to next solid*/ Solid *prevs; /*pointer to previous solid*/ };
⑤ Vertex 节点Vertex包含一个由4个浮点数表示的向量,它以齐 次坐标形式表示三维空间的一个点。该节点指向后继顶点和前驱顶 点。
图10.1 半边数据结构节点间的层次关系
使用附加的节点类型Edge来记录信息
① Edge 节点Edge使两个半边相互联系。直观地讲,它将一个全边的 两半组合在一起。它由指向“左”半边和“右”半边的指针组成。边的 双向链表通过指向后继边和前驱边的指针来实现。 ② Half Edge 每个半边包含一个指向其他边的附加指针。 ③ Vertex 每个顶点包含一个附加指针来指向起源于它的某一个半边。 为了表示顶点的标识,以某特殊点做角点的所有小面必须(通过环和半边) 引用那个点对应的Vertex节点。
10.3 欧拉操作
已知多面体的欧拉不变性定理,即对于一个顶点数为v、面数 为f、边数为e的多面体,恒有如下性质: ve+f = 2 (欧拉公式)
为了适应在数据结构中对各数据项的操作,在欧拉公式中引入 另外3个参数: s:实体的个数。 h:实体所含孔的个数。 r:实体中面所含孔(内环)的个数。 于是,欧拉公式扩展为 ve+f=2(sh)+r (扩展的欧拉公式)
10.2.3.2 边上的存取
重要的,有用的宏定义: #define mate(he) ((he= =he->edg->he1)?he->edg>he2:he->edg->he1)
10.2.3.3 半边结构中数据的增删算法 (1) 增加结点new例程
unsigned nodesize[ ]= { sizeof(Solid), sizeof(Face), sizeof(Loop), sizeof(HalfEdge), sizeof(Edge), sizeof(Vertex), 0; };
图10.2 半边的标识法
10.2.2 半边结构程序描述
ypedef float vector[4]; typedef float matrix[4][4]; typedef short Id; typedef struct solid Solid; typedef struct face Face; typedef struct loop Loop; typedef struct halfedge HalfEdge; typedef struct vertex Vertex; typedef struct edge Edge; typedef union nodes Node;
③ Loop 节点Loop描述前面讨论的一个用于连接的边界。它具有一个 指向其他面的指针,一个指向构成边界的半边(Half Edge)之一的指针, 和指向该面的后继Loop和前驱Loop的指针。
④ Half Edge 节点Half Edge表示一个Loop的一条线段。它由在Loop 方向上一个指向其他Loop的指针和一个指向该线段起始顶点的指针 组成。指向Half Edge前驱和后继的指针实现一个Loop的半边(Half Edge)的双向链表,这样,线段的最后顶点可用做后继半边(Half Edge) 的起始顶点。
struct vertex { Id vertexno; /*vertex identifier*/ HalfEdge *vedge; /*pointer to a halfedge*/ vector vcoord; /*vertex coordinates*/ Vertex *nextv; /*pointer to next vertex*/ Vertex *prevv; /*pointer to previous vertex*/ }; /*return values and misc constants*/ union nodes #define ERROR 1 { # define SUCCESS 2 Solid s; #define PI 3.141592653289793 Face f; Loop l; /*node type parameters for memory allocation routines*/ HalfEdge h; # define SOLID 0 Vertex v; # define FACE 1 Edge e; # define LOOP 2 }; # define HALFEDGE 3 #define EDGE 4 #define VERTEX 5
第十章 实体造型中的基本算法 及特征造型
10.1 10.2 10.3 10.4 10.5 10.6 概述 半边数据结构 欧拉操作 基本体元的生成 实体的布尔操作 特征造型
10.1 概述
计算机辅助设计的发展:
1. 二维绘图软件的发展 2. 分离的详细设计软件的发展,并向 CAM延伸 3. 全关联的并行设计软件的发展,并 向初步设计阶段延伸
struct edge { HalfEdge *he1; /*pointer to right halfedge*/ HalfEdge *he2; /*pointer to left halfedge*/ Edge *nexte; /*pointer to next edge*/ Edge *preve; /*pointer to previous edge*/ };
如图10.3(a)中,v=8、e=12、f=6、s=1、h=0,满足扩展的欧拉 公式。图10.3(b)中,v=14、e=21、f=9、s=1、h=1、r=2,也满 足扩展的欧拉公式。
图10.3 两个实体
10.3.1 基本欧拉操作
符号说明: M(make):增加 K(kill):删除 V(vertex):顶点 E(edge):边 F(face):面 S(solid):实体 H(hole):孔 R(ring):环
struct halfedge { Edge *edg; /*pointer to parent edge*/ Vertex *vex; /*pointer to starting vertex*/ Loop *wloop; /*back pointer to loop*/ HalfEdge *nxt; /*pointer to next halfedge*/ HalfEdge *prv; /*pointer to previous halfedge*/ };
基本欧拉操作一般包括如下5对: MVFS; Mev;Mef; Mekr; Kfmrh; KVFS; KEV; KEF; KEMR; MFKRH;
1.
MVFS
MVFS生成一个solid,它只包含一个顶点和一个面,没有环和 边。这个面包在顶点的外面。MVFS是用于创建一个实体的初 操作。