布尔运算失败的原因及解决方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
布尔运算失败的原因及解决方法
在实体建模的过程中,理解下列ANSYS所用的数学操作是很有帮助的。
这些知识在遇到实体退化和不连续处尤为有用。
例如,在实体模型布尔运算中遇到退化的错误提示。
数学术语知识对克服这样的错误会有帮助。
实体模型图元的内在数学表现为经修整过的参数表面。
修整过的参数化表面包括两部分:参数的几何形状和拓扑结构。
参数化几何形状定义模型的基本表面。
参数项是指数学上代表几何空间的参数空间。
图为几何模型与参数模型的关系。
非均匀有理B样条或NURBS用来定义参数的几何形状。
拓扑是指围成模型的几何形状的修整表面。
●退化
布尔运算可能会由于实体退化而失败。
退化由几何形状或拓扑结构所引起。
ANSYS程序将退化(引起了布尔运算失败)归结为参数的(几何形状)或拓扑结构的退化。
Degenerate entities are those whose length, area or volume degenerate to ze ro because of the coincidence of one or more points or vertices.
用基本参数空间来表示几何空间进会产生参数的退化。
当参数所表示的“阴影区”与真实的几何模型的维数不一致时,就会产生退化。
例如圆锥体的顶点,几何模型上的单个点却由参数空间体现为一个边。
这样的一个点称为一个退化边,或简称为退化。
这种退化本身并没有危害。
包含退化的模型仍可用来进行布尔运算,可以成功地进行网格划分,并产生良好的分析结果。
只有当退化使布尔运算出现问题时才需要注意它的存在。
▪从图形上识别单元退化
用下列所述方法可以验证面或体的退化。
如果使用命令输入方法,包括DEGEN命令在内,会在退化的关键点处出现红星。
•显示面的退化:
命令:APLOT, , , ,DEGE
GUI : Main Menu>Preprocessor>Operate>Show Degeneracy>Plot Degen Areas
•显示所选体的退化:
命令:VPLOT, , , ,DEGE
GUI : Main Menu>Preprocessor>Operate>Show Degeneracy>Plot Degen Volus
▪退化的关键点列表
可以选择退化的关键点列表:
•面中参数退化的关键点列表:
命令:ADGL
GUI : Main Menu>Preprocessor>Operate>Show Degeneracy>List Degen Areas
•体中参数退化的关键点列表:
命令:VDGL
GUI : Main Menu>Preprocessor>Operate>Show Degeneracy>List Degen Volus
另一种退化可在布尔运算要生成退化的边界时被发现。
退化的边界是不完全或零面积的圈,或是不完全或零体积的壳。
这种退化一般指拓扑退化。
如果发现这种退化,布尔运算会产生错误信息。
拓扑退化由于在进行布尔运算前并不存在所以不能画出。
拓扑退化的例子如图和所示。
布尔运算失败的例子如图所示。
在这个例子中,不能从长方体中切去〔VSBV〕三棱柱,因为在长方体的上表面形成退化线。
其它的布尔运算命令诸如VAD D、VOVLAP等对这个体也会因出现这种退化而失败。
▪不连续
一般来讲,不连续是实体图元中的尖的转折点,是由具有不同切线的合并线〔LCOMB〕或从IGES输入所引起的。
图为包含不连续的图元的示意图。
许多实体模型操作支持包含不连续的图元。
但是布尔运算不能直接支持不连续。
在进行布尔运算之前将图元在不连续点处或沿不连续线处将图元分开。
例如,图表示在进行布尔减操作的不连续面。
在进行布尔减运算之前将1面沿线1和线3的不连续处分开。
注意:不连续与切线向量的方向和大小有关
●布尔运算失败的其它原因
除退化外还有其它原因使布尔运算失败。
例如,切点处的相交区域有时对于布尔运算是难以处理的,尤其是对非体素构造的模型。
而且共享边界的图元(如两体的相接面的共同表面)在进行布尔运算时会有潜在的问题。
几何中包含了高曲率的小区域或有尖角转接的区域也会引发这样的问题。
●建议采取的一些正确措施
如果布尔运算失败,可用下列程序对此问题做工作。
构造模型时不必总是遵循这些指导,可用任何用户想要的方法来构造模型,而不会遇到布尔运算失败。
这些准则提供了挽回布尔运算失败的途径。
调整输入几何形状,利用如下准则:
•尽可能地使用几何体素来生成实体模型。
对于非体素生成的模型布尔运算的结果有的不够准确和高效。
•如果退化发生在可能相交曲线上,尽量避免生成包含退化的几何体,这样几何体的一些特殊例子包括:
─未削平的圆锥体
─三边面既不是平面的也不是在激活的坐标系下的一个有常数坐标的表面。
─逐渐减少为一个点的倒角面〔AFILLT〕
─两条以上引导线相交的蒙皮面〔ASKIN〕
─通过绕轴旋转〔AROTAT,VROTAT〕生成的面或体并与任何输入图元相交。
─通过沿一有弯曲中心的路径拖拉生成的面或体与任何输入图元相交
•尽量避免对相切的图元执行布尔运算。
类似地,避免对碰巧有相同边界的图元进行布尔运算。
•布尔运算包括两个以上输入图元,将操作分解为一系列的对更少输入图元的操作。
例如,用命令集(AADD,1,2;AADD,5,3;AADD,1,4)代替命令AADD,ALL。
(这样做就必须对一系列命令产生输出图元记录布尔运算的编号。
•如果一系列布尔运算失败,尝试改变操作的次序。
例如,将系列(AADD,1,2;AADD,5,3;AADD,1,4)替换为重新编号的系列(AADD,4,3;AADD,5,2;AADD,3,1)。
•如果布尔运算失败,会得到一个建议用户放宽(增加)缺省的1.0E-4公差值的错误信息。
公差影响布尔运算执行的精度。
有时候简单地改变公差并重新执行布尔运算命令就足够了。
而有时需要反过来,在成功地进行布尔运算之前,利用修改的公差还原布尔运算的输入图元。
可用BTOL,PTOL命令放宽公差,PTOL是新的公差:
命令:BTOL,PTOL
GUI : Main Menu>Preprocessor>Operate>Settings
一旦用户放宽了公差并重新成功地执行了布尔运算,应将公差变为缺省值,这样可使后续的建模工作的布尔运算精度得到保证。
●避免穿过自身的区域
必须谨慎不要定义穿过自身的面或体。
(例如,用ADRAG或VDRAG命令不可逆地生成这样的图元)ANSYS程序中并不总是在划分网格前能发现这一缺陷,但穿过自身的面或体在划分网格失败就会揭示其缺陷。
●使用ANSYS参数
ANSYS参数尺寸是可变的并有许多小数。
一遍又一遍地输入诸如2.8574639这样的数字是乏味的且容易导致输入错误。
●布尔运算命令的代替
适当情况下,对布尔运算命令的合理代替可以克服布尔运算失败或减少运行时间。
(例如,拖拉或旋转与布尔运算构造模型相比要优越一些。
)
●用低维结构造模型
如果用低维图元进行布尔运算,就运行时间和存贮要求而言,建模过程有时会更高效。
例如,将线体相减〔LSBV〕代替为一系列的线面相减〔LSBA〕和删除〔LDELE〕可能会以更小的代价获取同样的结果。
当然,要权衡简便的损失与获得的收效。
转换为低维操作可能并不合算,除非遇到内存不足的错误,极长的运行时间及其它这类问题。
逐步地生成复杂模型
有前处理(PREP7)中考虑将复杂的模型分块生成并利用RESUME命令(GUI 途径Utili ty Menu>File>Resume from)和CDREAD命令(Main Menu>Preprocessor >Archive Mode l>Read) 将它们合并。
下面是这一程序的例子:
/PREP7
RESUME,MODEL1,DB
CDWRITE,SOLID !Write out just solid model (to file.iges)
RESUME,MODEL2,DB !Note that this 2nd RESUME clears MODEL1 from the
!database and reads MODEL2
CDREAD,SOLID !Reads in the solid model (from file.iges)
!Solid models from MODEL1 and MODEL2 are now
!in the current database
SAVE,MODEL3,DB !Save combined model to separate file
FINISH
CDREAD命令自动地将新图元重新编号以避免与已在数据库中存在其它实体模型冲突。
而且,这个命令自动地执行NUMMRG,KP命令合并重复的实体图元。
●棋盘形布置的错误
尽管可能性不大,但在建立实体模型外还是有可能遇与下列错误信息:
*** WARNING ***
Error in surface tessellation for area N. This area can only be displayed with
/FACET,WIRE, and cannot be part of a V, VA, VSUM, or ASUM operation.
棋盘形布置是为显示(即表面网格)面积计算(ASUM)和体积积分(V,VA或VSUM)将
面进行的细分。
棋盘型布置错误产生一个警告信息而不是一个错误信息,因为一个面不能以棋盘型布置仍可以成功地进行网格划分。
可以引起棋盘布置错误的情形有:面带有尖刃边,面有太多的孔或面在极其扭曲的表面处有孔。
注意:对于过窄的面或过细的体,最小尺寸与最大尺寸之比小于0.01的情况,ASUB和VSUM令会产生错误面或体的信息。
为保证计算的准确性,要保证对面和体的细分并使最小尺寸与最大尺寸之比至少为0.05。