您好,欢迎来到六九路网。
搜索
您的当前位置:首页基于AutoCAD VBA的曲面面积计算功能开发

基于AutoCAD VBA的曲面面积计算功能开发

来源:六九路网
维普资讯 http://www.cqvip.com 机械设计与制造 —.46—. Machinery Design& Manufacture 第7期 2006年7月 文章编号:1001—3997(2006)07—0046—02 基于AutoCAD VBA的曲面面积计算功能开发 苏旭武 吴斌方 游达章e^ 李 奕(湖北工业大学机械工程学院。武汉430068) Development of surface area calculation function based on VBA for AutoCAD SU Xu—WU,WU Bin—fang,YOU Da—zhang,LI Yi (School of Mechanical Engin.。Hubei Univ.of Technology。Wuhan 430068。China) 【摘要】基于AutoCAD VBA技术为AutoCAD开发了曲面面积计算功能。由于AutoCAD中曲面 均采用线框模型多边形网格,面积查询命令不能计算。根据多边形网格的特点,将其分解为小面片, 然后计算小面片面积之和近似曲面的面积,并研究了提高精度的方法。实践证明,该方法具有一定 精度,能够满足工程需要。 关键词:曲面;面积计算;VBA;AutoCAD 【Abstract】A surface area calculation function is developed based on VBA for AutoCAD.Because surfaces in AutoCAD are wire—frame—modeled Polygonmeshs,the area query command AREA can not apply to them.According to charac ̄ristics of Polygonmesh,it is exploded to little face ̄.Then all te hfacets’areas are add up for approximation to surfce araea.The meaas for improving accuracy are also studied.Practiceproved that this method has certain accuracy and can meet the needs ,l engineering. Key words:Surface;Area calculation;VBA:AutoCAD 中图分类号:TP391.7文献标识码:A 1 AutoCAD VBA技术简介【 】【 】 AutoCAD软件能够长盛不衰的一个重要原因就是它有很 强的定制和二次开发能力。它提供的开发工具有AutoLISP、 ObjectARX、ActiveX、VBA等。其中,VBA(Visual Basic for Appli. cations)具有一系列优点:完全内嵌的Visual Basic集成开发环 境简单易学;VBA与AutoCAD在同一进程空间中运行,程序执 行快;图形界面和对话框的构造简洁高效;工程既可以,也 可以嵌入到图形中,便于发布。 VBA通过AutoCAD ActiveX Automation接口将消息发送到 AutoCAD,进而访问各种丰富的AutoCAD ActiveX对象,如直线、 圆弧、线型、图层、标注、属性等。通过VBA可以创建、修改Ac. 图1边界曲面 Fig.1 Bo ̄er surface (d) tiveX对象,实现参数化绘图等高级CAD功能,或者提取图形信 2.2提高曲面计算精度的措施 措施之一:提高网格密度。这需要在生成曲面之前,修改系 息用于复杂的数据处理,如优化设计、特征识别等。 2曲面面积计算原理 2.1 AutoCAD中的曲面表示方法 统变量SURFrAB1和SURFrAB2的数值。可以根据计算精度要 求,选择面片的大小,再用曲面的二维轮廓尺寸分别除以面片 的二维尺寸得到SUR兀 B1和SURFrAB2。图1(b)是 AutoCAD中的曲面建模方法生成的全部是多边形网格对 SURFrAB1=SURFTAB2=10时的边界曲面。 象(PolygonMesh),一个多边形网格有M xN个顶点。M代表行 措施之二:通过拟合并提高插值密度。AutoCAD中的多边 方向的点数,N代表列方向的点数。系统变量SURFrAB1和 形网格曲面有四种类型:简单无拟合曲面、二次B样条拟合曲 SURFTAB2分别决定了M、N方向的线框段数,其初始值均为6, 面、三次B样条拟合曲面和Bczier拟合曲面。拟合之后,曲面的 所以在默认情况下,M、N均为7。如图1(a)所示的7 X7顶点边 平滑程度提高,且不再通过M X N个顶点。这时的曲面片数由另 界曲面,实际上是由6 X6个空间四边面片组成,面片的四条边 外两个系统变量SURFU和SURFV决定,它们分别控制M和N 均为直线。因此曲面的面积可以通过计算各面片的面积之和近 方向插值密度,其初始值均为6。同样可以根据需要提高其数 似得到,但精度较低。 ★来稿日期:2005—09—19 值。图1(c)是在(b)基础上修改SURFU=SURFV=10的二次B 维普资讯 http://www.cqvip.com 第7期 苏旭武等:基于AutoCAD VBA的曲面面积计算功能开发 一47一 样条拟合曲面,(d)是三次 ThisDrawing.SetVariable“SURFU”,Val(TextBox1.Text) B样条拟合曲面。 ThisDrawing.SetVariable“SURW”,Val(TextBox2.Text) 2.3曲面的离散化 AREA=0 在合理地选择面片大 polymeshtype(0)=acSimpleMesh’简单无拟合 小、拟合方式、插值密度并 polymeshtype(1)=acQuadSurfaceMesh’二次样条 polymeshtype(2)=acCubicSurfaceMesh’三次样条 生成曲面后,需要将曲面 polymeshtype(3)=acBezierSurfaceMesh’Bezier拟合 离散化为小面片,以便计 ’隐藏对话框,选择曲面 算小面片的面积。AutoCAD UserForm 1.Hide 提供了一个命令“分解” ThisDrawing.Utility.GetEntity surface,basePnt,“Select an surface” (Explode)可以实现该功 surface.Update 能。经分解后,多边形网格 If surface.EntityName。“AcDbPolygonMesh’’Then 变成许多的小面片(三维 I- ̄ ̄110.Caption=“对象选择不符要求,请重选!” 面)。面片不能继续“分 UserForm1.Show 解”,其面积可以转化为两 Else 个三角形面积之和。 ’根据指定曲面类型参数重设曲面类型 3程序实现 surface.Type=polymeshtype(ComboBox1.Listlndex) surface.update’曲面更新 3.1程序流程(图2) facets=surface.Explode’曲面分解 由于网格密度也就是 Dim i As Integer 图2程序框图 曲面的M×N个顶点在曲 Fig.2 Frame of process Dim points As Variant 面生成后不能动态改变,所以对于简单无拟合曲面只能事先设 ’遍历分解后的面片阵列 Fori=0 To UBound(facets) 定好系统变量SURFTAB1和SURFTAB2。而曲面经过拟合,就可 facets(i).update 以通过改变SURFU和SURFV变量动态地改变曲面的面片数 ’取顶点坐标属性 量,调整计算精度。曲面分解后生成一个面片阵列,待执行完计 opints=facets(i).Coordinates 算后将该阵列删去,对原曲面没有影响,仍然可以调整参数重复 farea=calcarea(points) 计算。 AREA=AREA+farea 3.2 VBA主要代码及界面 ’计算完后删除面片 本程序的主界面如图3。 facets(i).Delete Next TextBox3.Text=Str(AREA) UserForIn1.Show End If End Sub ’面片面积计算函数 Private Function calcarea(ByVal pxyz As Variant)As Double ’定义面片四个顶点坐标 Dim plx,ply,plz As Double Dim p2x,p2y,p2z As Double 图3主界面 Dim p3x,p3y,p3z As Double Fig.3 Maininterface Dim p4x,p4y,p4z As Double 主要代码如下: ’定义四条边和对角线 Private Sub CommandButton1 click() Dim el,e2,e3,e4,djx As Double Dim surface As AcadPolygonMesh Dim sl,s2 As Double’定义半周长 Dim facets As Varlant ’定义两个三角形面积 Dim basePnt As Variant Dim areal,area2 As Double Dimfarea As Double ’从面片的坐标阵列中提取各顶点坐标 ’定义曲面类型数组 plx:pxyz(O):ply=pxyz(1):plz=pxyz(2) Dim polymeshtype(0 To 3)As Integer p2x=pxyz(3):p2y:pxyz(4):p2z=pxyz(5) Dim AREA As Double p3x=pxyz(6):p3y=pxyz(7):p3z=pxyz(8) On Error Resume Next p4x=pxyz(9):p4y:pxyz(10):p4z=pxyz(11) ’霞新设置插值密度系统变量 ’计算各边长,对角线长度,三角形半周长及面积 维普资讯 http://www.cqvip.com 机械设计与制造 ——48—— Machinery Design& Manufacture 第7期 2006年7月 文章编号:1001—3997(2006)07—0048—03 零件多源图像特征提取和识别的研究呋 夏庆观温秀兰盛党红(南京工程学院,南京210013) Research on features extraction and recognition of parts multi——source image XIA Qing—guan,WEN Xiu—lan,SHENG Dang—hon(Nanjing Institute of Technology,Nanjing 210013,China) 【摘要】提出了基于小波变换的零件多源图像融合和提取零件图像特征的方法。首先,应用小波变 换对多源图像进行多尺度分解,利用小波分解系数融合零件多源图像。然后,对融合图像进行多尺度 边缘检测,被检测的图像分成若干个子区域并分别统计其中的边缘像素量,各区域中的相对边缘像素 系数作为零件图像特征。最后,应用神经网络和网络技术,进行远程零件多源图像识别。实验结果表 明,文中提出的方法是有效的。 关键词:像素;小波变换;特征提取;网络 【Abstract】A method tofuse part multi—source image and to extract part iagefeatmure based on wavelet transform is presented.Firstly,the part multi——source iage msi analyzed using wavelet multi——scale transform to obtain the coeficifents ofwavelet transform,whichfuses apart multi——scale image.Then,te edgehsf ̄om fused part multi——source iage ims detected using wavelet multi——scale edge detection,edge iage dimvides into several areas and coun ̄edgepixels in teseh areas,the ratio fedogepixels in an area to totalpixels in the area ispart iagefeaturme.Fialnly,thepart multi——source iagem is realizedpattern recognition using neural net.- works and network technology.Experientm results that the proposed method can efifciently recognize multi—— sourceparts. Key words:Pixel;Wavelet transform;Features extraction;Network 中图分类号:TP391 文献标识码:A 1弓f言 环境因素的影响,难以获取图像较完整的信息,不利于零件图 图像传感器在获取零件图像时,由于传感器固有的缺陷、 像的特征提取和零件的识别,为了提高识别精度,常采用多传 ★来稿日期:2005—09—26★基金项目:江苏省教育厅自然科学研究研项目(O5}(JB460036) el=Sqr((plx—p2x) 2+(ply—p2y) 2十(plz—p2z) 2) e2=sqr((p2x—p3x)‘2+(p2y—p3y) 2十(p2z—p3z) 2) e3=Sqr((p3x—p4x) 2+(p3y—p4y)‘2十(p3z—p4z) 2) e4=sqr((p4x—plx)‘2+(p4y—ply)‘2+(p4z—plz) 2) djx=Sqr((p3x—plx) 2+(p3y—ply) 2+(p3z—plz) 2) sl=(el+e2+djx)/2 s2=(e3+e4+djx)/2 areal=Sqr(sl★(sl—e1)★(sl—e2)★(sl—djx)) “一vbaload”“surfarea.一dvb”))。 通过定制AutoCAD的工具栏文件和菜单文件,还可以在工 具栏和菜单里执行“宏”功能,具体参阅文献…。 4结语 利用AutoCAD VBA技术开发曲面面积计算功能弥补了 AutoCAD面积查询功能的不足。虽然采用了非数学的方法,但本 程序方法新颖简便,在合理设置计算参数的情况下,计算结果具 area2=Sqr(s2-k(s2一e3)★(s2一e3)★(s2一ajx)) cslcare8=are8 1+8re8 2 End Function 有一定的精度,能够满足工程上的需要。 参考文献 1 Autodesk公司,ActiveX和VBA开发人员指南,AutoCAD2005 随机文档. 3.3 VBA的加载 】 加载VBA工程文件★.dvb文件然后运行其中的“宏”。也可以 VBA程序通常编成“宏”的形式发布、运行。一般可以手工 2 Autodesk公司,AetiveX and VBA Reference。AutoCAD2005随机 文档. 在每次启动绘图任务时自动加载VBA,方法是在acad.1sp文件 3李绍彬,AutoCAD 2000中基于VBA的二次开发…,重庆师范 中编写如下Autolisp语句:(defun s::STARTUP()(command 学院学报(自然科学版),2003,20(1):35—38. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务