您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页VBA坐标变换浅析

VBA坐标变换浅析

来源:欧得旅游网
IT技术SCIENCE&TECI-INOLOOYINFORMA节ON2007N0.05V日A坐标变换浅析(重庆工业职业技术学院属性等结合实例进行了分析。关键词:VBA坐标变换UCS方法中图分类号:TP31文献标识码:A黄晓敏重庆400050)摘要:本文首先介绍了AUTOCAD的坐标系统,然后阐述了坐标变换的必要性及实现方法,并对在AUTOCAD中用到的程序方法、文章编号:1672-3791(2007)02(b卜0071-011前言AUTOCAD自面世以来,好评如潮,被称之为革命性的设计工具,这除了AUTOCAD所提供的多文档操作环境、一体化打印体系、更强大的三维功能等诸多更强大的功能之外,它所提供的更为灵活的二次开发工具如VisualLisp,AUTOCADAc-tiveX/VBA接口则同样是其成功的重要因素。环境,它和MicrosoftVBAVisualBasic是一个面向对象的编程一样具有很强大的开发能力,可为AUTOCAD提供智能和快速的编程环境。VBA通过AUTOCADActiveXAutomation接口向AUTOCAD发送消息,并与AUTOCAD同时运行。它不但可以控制AUTOCAD对象,而且可以从其他应用程序发送数据或接受数据。下面我们就主要论述一下在AUTOCADVBA中进行二次开发时实现坐标变换的方法。2坐标系统简介在AutoCAD中有两个坐标系统:世界坐标系(简称WCS)和用户坐标系(简称UCS)。2.1世界坐标系WCS世界坐标系(WorldCoordinateSystem),它是一个参考坐标系。所有其他坐标系都相对干WCS定义,该坐标系恒定不变。相对于WCS测量的值可以稳定地转换到其他坐标系中。除非另行指定,ActiveX方法和特性传入和传出的所有点都以WCS表示。2.2用户坐标系UCS用户坐标系(UserCoordinateSystem),它是一个工作坐标系。用户可以指定UCS以方便执行绘图任务。所有传递到AutoCAD命令的点,包括从AutoLISP程序和外部函数返回的点,都是当前UCS中的点(除非用户于命令提示中在点之前加上了*)。我们知道AUTOCAD通常是在WCS(也即世界坐标系)中工作的,但WCS是固定不变的,而我们的设计工作又必须经常使用用户坐标系(即UCS),那么WCS,UCS之间的坐标变换就成了我们必须解决的一个问题。3坐标变换的实现方法UCS用户坐标系可以创建一个或多个,甚至可以根据需要改变它的方向和位置。UCS一旦被创建,AutoCAD就保留了它与WCs之间的相互关系,用户做图时无需再考虑WCs,只要在UCS下用以往的法绘图、编辑即可。如果希望应用程序以WCs,OCS或DCS向AutoCAD命令发送坐标,必须先调用DimucsAsAcadUCSTranslateCoordinatesDimorigin(OTo2)AsDouble换为UCS。下面分别说明如下。方法,将这些坐标转DimxA(OTo2)AsDouble3.,UCS的创建DimyA(OTo2)AsDouble对于这个问题的解决,首先要了解一下origin(0)=4#:origin(1)=4#:origin在AUTOCADVBA中如何创建UCS。用(2)=0#户坐标系是用集合的形式组织的,创建UCSxA(O)=8#:xA(I)=8#:xA(2)=要使用add方法,并指定4个参数:UCS名0#称、原点、X轴正向上一点、Y轴正向上yA(O)=0#:yA(1)=8#:YA(2)=0#一点。用到的语法是:Setucs=Thisdrawing.ThisDrawing.UserCoordinateSystems.UseCoordinateSystems.Add(origin,xA,ADD(原点,X轴,Y轴,UCS名称)yA,\"TEST\")3.2坐标变换ThisDrawing.ActiveUCS=ucs要实现坐标变换则必须使用Utility对象,求出坐标变换矩阵的TranslateCoordinates方法将点或位移矢量DimucsMatAsVarant从一个坐标系变换到另一个坐标系,语法如ucsMat=ucs.GetUCSMatrix下:TranslateCoordinates(originalPoint,,坐标变换From,To,Disp[,OCSNormal])DimIAsInteger各参数意义如下:For二OToThisDmwing.ModelSpace.OriginalPoint要变换的点或矢量.Count-1From和To指定了两个坐标系,表示从ThisDrawing.ModelSpace(i).FromTransformBy(ucsMat)Disp变换到为布尔型数据,为To坐标系。TRUE表示NextOriginalPoint为矢量,为FALSE则表示ZoomExtentsOriginalPointEndSubOCSNormal为点坐标,为可选参数,指明对象坐标系的法线方向。5结语创建一个ucs用户坐标系,得到两个坐坐标变换在CAD制图及各种复杂形体建标系间的关系:模等过程中,应用相当广泛,熟练掌握UCSSubUcsOrg2Wcs()及坐标变换能使这项看似复杂甚至不可能实DimUCSPnt(0To2)AsDoubleDimWCSPntAsVariant现的工作变得可行,还可以大大提高工作效率,其原理在机械零件设计制造行业应用相WCSPnt=ThisDrawing.Utility.当广泛。TranslateCoordinates(UCSPnt,acUCS,acWorld,False)MsgBoxWCSPnt(0)&”,”&WCSPnt参考文献(1)&”,”&WCSPnt(l),vbCritical[1]张帆,郑立楷,卢择临.等编写.AutoCADVBA二次开发教程清华大学出版社.EndSub3.3同时必须要用到两个坐标变换的方法[2]伶士悬.邢芳芳.夏齐霄编写.AutoCAD一GETUCSMatrix:用于求出UCS的变ActiveX\\VBA二次开发技术基础及应用换矩阵,该矩阵为一个4x4的2维数组;实例国防工业出版社,[31张国宝编著.AutoCAD2000VBA开发技的参数,一TransformBy:对实体进行矩阵变换,将实体变换到将变换矩阵作为自己术.清华大学出版社.用户坐标系中。4坐标变换实例及程序例如:我们创建一个UCS,原点为(4,4,0),X轴正方向450、Y轴正方向1350,将当前坐标系的所有实体变换到该UCS中来的VBA代码如下:Subenttoucs(),创建UCS科技资讯SCIENCE&TECHNOLOGYINFORMATION71

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

Copyright © 2019- ovod.cn 版权所有

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

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