乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 45|回复: 3

又有问题了!UCS与WCS的夹角

[复制链接]

14

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 2007-10-23 23:08:00 | 显示全部楼层 |阅读模式
因为我想让我的文字在UCS下也能够对齐到我需要的直线,我只能在WCS做到这一点,但是如果能够知道目前UCS和WCS的X轴的夹角,那么也可以做到,可是都不知道怎么求这个角度,之前用了当前UCS的Origin,XVector,YVector属性,可是用这三个点画出来的三角形好怪异,这个三角形的三个边没有一个是与UCS的坐标轴垂直或者平行的,那它这个x向量,y向量到底是指的什么呢??
或者,有什么更好,更便捷的方法,让UCS中文字和一条直线对齐呢?
请大家指教!!!!
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2007-10-24 15:04:00 | 显示全部楼层
很明显你对XVector和YVector的概念理解错了,如果你用XVector,YVector和(0,0,0)画三角形就对了。要求UCS与WCS的夹角应用AngleFromXAxis方法,参数取(0,0,0)和XVector两点
回复

使用道具 举报

14

主题

36

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 2007-10-24 19:37:00 | 显示全部楼层
感谢版主老大!
以后可能还有好多问题,就要麻烦你了!!
回复

使用道具 举报

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2007-10-25 13:00:00 | 显示全部楼层
Function rotateXYangle(ByVal sPoint As Variant, ePoint As Variant, txtEnt As String) As Double
  Dim ll As AcadEntity, Alfa As Double, lll As AcadLine, Rot3D As AcadEntity
  Dim pp(0 To 2) As Double, ppp(0 To 2) As Double
  ''
  pp(0) = 0: pp(1) = 0: pp(2) = 0
  Set Rot3D = ThisDrawing.ObjectIdToObject(txtEnt)
  ''
  Dim x As Double, x1 As Double, y As Double, y1 As Double, z As Double, z1 As Double
  Dim deltaX As Double, deltaY As Double, deltaZ As Double
''
  x1 = sPoint(0): x = ePoint(0)
  y1 = sPoint(1): y = ePoint(1)
  z1 = sPoint(2): z = ePoint(2)
''
  deltaX = x - x1: deltaY = y - y1: deltaZ = z - z1
  Debug.Print deltaX, deltaY
     If deltaX > 0 And deltaY > 0 Then
       rotateXYangle = Atn(deltaY / deltaX)
     ElseIf deltaX  0 Then
       Debug.Print Atn(deltaY / deltaX)
       rotateXYangle = Pi + Atn(deltaY / deltaX)
     ElseIf deltaY  0 And deltaY  0 Then
       rotateXYangle = 0
     ElseIf deltaY = 0 And deltaX  0 And deltaX = 0 Then
       rotateXYangle = Pi / 2
     End If
     
''''
  Alfa = rotateXYangle + Alfa + Pi / 2
''
  ppp(0) = sPoint(0) + 4 * Cos(Alfa): ppp(1) = sPoint(1) + 4 * Sin(Alfa): ppp(2) = sPoint(2)
  Set lll = ThisDrawing.ModelSpace.AddLine(sPoint, ppp)
''
  Rot3D.Move pp, sPoint
  
  
  Rot3D.Rotate3D ppp, sPoint, -Pi / 2
  Rot3D.Rotate3D sPoint, ePoint, -Pi / 2
''
End Function
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 07:13 , Processed in 0.445433 second(s), 61 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表