收藏 分销(赏)

坐标转换.doc

上传人:仙人****88 文档编号:8099629 上传时间:2025-02-04 格式:DOC 页数:5 大小:24.50KB 下载积分:10 金币
下载 相关 举报
坐标转换.doc_第1页
第1页 / 共5页
坐标转换.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
用TranslateCoordinates方法可以将一个点或一段位移由一个坐标系统转换到另一个坐标系统。一个点变量,称为OriginalPoint,可以被视为一个三维点或一个三维位移矢量。这个变量由Boolean变量- Disp来区分。如果Disp变量被设为TRUE的话,OriginalPoint变量就被视为一个位移矢量;反之,则被视为一个点。两个以上的变量可以决定这个OriginalPoint来自哪个坐标系统,也可以决定这个OriginalPoint要被转换到哪个坐标系统。以下的AutoCAD坐标系统可以被指定为From和To变量。 WCS 世界坐标系统即参照坐标系统。其它所有的坐标系统都是相对WCS定义的,WCS是永远不改变的。相对于WCS测量的值可以忽略其它坐标系统的变化。除了特殊说明,所有传进或传出ActiveX方法和属性的点都用WCS表示。 UCS 用户坐标系统即工作中的坐标系统。用户指定一个UCS以便绘图更容易。所有传到AutoCAD命令的点,包括那些从AutoLISP程序和外部功能返回的,都是当前UCS的点(除了在命令提示符后用户在前面加了个*的点)。如果你想用程序将WCS、OCS或DCS坐标传到AutoCAD命令,你必须首先通过调用TranslateCoordinates方法将它们转换成UCS。 OCS 对象坐标系统-由多义线和细多义线对象的某些方法和属性指定的点的值由这种坐标系统表达,与对象有关。这些点通常根据对象的用途被转换成WCS、当前的UCS或当前的DCS。相反的,在WCS、UCS或DCS中的点依靠相同的属性写进数据库之前,必须被转换成OCS。要了解使用该坐标系统的方法和属性,请参看AutoCAD中的"ActiveX 和 VBA 参考"。 当从OCS转换坐标或转换坐标到OCS时,你必须输入TranslateCoordinates方法中的最后一个参数OCS法线。 DCS 显示坐标系统即对象在显示前被转换的坐标系统。DCS的原点是被存在AutoCAD系统变量TARGET中的点,它的Z轴就是视图方向。换句话说,一个视口始终是它的DCS平面图。这些坐标可用于决定物体是从哪里显示给AutoCAD用户的。 PSDCS 图纸空间DCS-该坐标系统只能从当前活动的模型空间视口的DCS转入或转出。这本来是一个二维的转换,如果Disp变量为FALSE,X和Y坐标总是按比例来偏移的。Z坐标也是按比例的但是从不转换。因此,可以用Z坐标来找到两个坐标系统之间的比例因子。PSDCS只能被转换成当前的模型空间视口。如果转来的变量等于PSDCS,那么输出的变量必须等于DCS,反之亦然。 将OCS坐标转换为WCS坐标 以下的例子在模型空间建立了一条多义线。多义线的第一个顶点将同时显示为OCS和WCS坐标。从OCS到WCS的转换要求设置TranslateCoordinates方法的最后一个变量的OCS法线。 Sub Ch8_TranslateCoordinates() ' 在模型空间中创建多义线。 Dim plineObj As AcadPolyline Dim points(0 To 14) As Double ' 定义二维多义线点 points(0) = 1: points(1) = 1: points(2) = 0 points(3) = 1: points(4) = 2: points(5) = 0 points(6) = 2: points(7) = 2: points(8) = 0 points(9) = 3: points(10) = 2: points(11) = 0 points(12) = 4: points(13) = 4: points(14) = 0 ' 在模型空间中创建一细多义线对象 Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points) ' 查找多义线第一个顶点的X和Y坐标 Dim firstVertex As Variant firstVertex = plineObj.Coordinate(0) ' 使用Elevation属性找到多义线的Z坐标 firstVertex(2) = plineObj.Elevation ' 更改多义线的法线便两坐标系统产生明显的差异。 Dim plineNormal(0 To 2) As Double plineNormal(0) = 0# plineNormal(1) = 1# plineNormal(2) = 2# plineObj.Normal = plineNormal 将OCS坐标译成WCS坐标 ' Translate the OCS coordinate into WCS Dim coordinateWCS As Variant coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _ (firstVertex, acOCS, acWorld, False, plineNormal) '显示这个点的坐标 MsgBox "第一个顶点的坐标如下:" _ & vbCrLf & "OCS: " & firstVertex(0) & ", " & _ firstVertex(1) & ", " & firstVertex(2) & vbCrLf & _ "WCS: " & coordinateWCS(0) & ", " & _ coordinateWCS(1) & ", " & coordinateWCS(2) End Sub
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服