明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2849|回复: 1

[例程]使用UCS坐标系

  [复制链接]
发表于 2002-5-28 20:52 | 显示全部楼层 |阅读模式
Public Sub UseUcs()

    Dim ucsObj As AcadUCS             '声明新的UCS对象变量
    Dim orgPnt(0 To 2) As Double      'UCS原点数组变量
    'X轴和Y轴上的定向点变量
    Dim xPnt(0 To 2) As Double, yPnt(0 To 2) As Double
    '保存当前活动视窗的变量
    Dim cueViewport As AcadViewport
   
    '保存当前活动视窗
    Set curViewport = ThisDrawing.ActiveViewport
   
    '创建一个圆,一开始只能在WCS中实现
    Dim cirObj As AcadCircle
    Dim center(0 To 2) As Double, radius As Double
    center(0) = 25: center(1) = 25: center(2) = 0
    radius = 18
    Set cirObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
   
    ZoomAll
   
    '为UCS的原点和X轴、Y轴上的定向点赋值
    orgPnt(0) = 50: orgPnt(1) = 50: orgPnt(2) = 0
    xPnt(0) = 75: xPnt(1) = 50: xPnt(2) = 0
    yPnt(0) = 50: yPnt(1) = 75: yPnt(2) = 0
   
    '创建一个名为UCS1的用户坐标系
    Set ucsObj = ThisDrawing.UserCoordinateSystems.Add _
                 (orgPnt, xPnt, yPnt, "UCS1")
    '使新创建的UCS1成为活动坐标系
    ThisDrawing.ActiveUCS = ucsObj
    '显示UCS1的图标
    ThisDrawing.ActiveViewport.UCSIconOn = True
    '使UCS1的图标定在原点上
    ThisDrawing.ActiveViewport.UCSIconAtOrigin = True
   
    Dim transMatrix As Variant
   
    '获得UCS相对WCS坐标的变换矩阵
    transMatrix = ucsObj.GetUCSMatrix()
   
    '将WCS中的圆变换到UCS中
    cirObj.TransformBy transMatrix
    cirObj.Update
   
    MsgBox "现在圆已被转换到UCS坐标中了!"
   
    '将当前视窗回复到WCS坐标系中
    ThisDrawing.ActiveViewport = curViewport

End Sub
发表于 2007-5-13 15:37 | 显示全部楼层
本帖最后由 作者 于 2007-5-13 17:56:25 编辑

上面例子说明如何在UCS坐标系中建立圆的方法.

反之在用户坐标系中已经建立了一个实体.如图示所示的圆弧--句柄为A7圆弧实体

如何获得A7实体的UCS信息??

通过获取A7圆弧的属性数据

RetVal = object.AddArc(Center, Radius, StartAngle, EndAngle)

和用户坐标系恢复到图示的句柄 A7实体状态


图片点击可在新窗口打开查看此主题相关图片如下:
图片点击可在新窗口打开查看

采用list 查询两个圆弧属性如下:

 句柄 = A6
              圆心 点,X=   1.0611  Y=   1.0491  Z=   0.0000
              半径    0.2594              起点 角度   269              端点 角度    91            长度    0.8258

句柄 = A7
              圆心 点,X=   1.0558  Y=   1.0491  Z=   0.0054
              半径    0.2594     

 相对于 UCS 的拉伸方向:                   X=  -1.0000  Y=   0.0000  Z=   0.0000
            长度    0.8258
             累计角度    182

问题如下

Sub ls()
  Dim lsArc As AcadArc
  Dim rr As AcadEntity
  For Each rr In ThisDrawing.ModelSpace
    Set lsArc = rr
    Debug.Print lsArc.StartAngle

  Next rr
End Sub
用传统方法获取Arc的属性只能是WCS坐标系下的Arc SartPoint,EndPoint,CenterPoint等属性数据.

我需要的数据是

相对于 UCS 的拉伸方向:                   X=  -1.0000  Y=   0.0000  Z=   0.0000
            长度    0.8258
             累计角度    182

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 15:07 , Processed in 0.522128 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表