乐筑天下

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

从getreal中选择的点

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-4-26 09:48:23 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-4-26 10:18:58 | 显示全部楼层
谢谢Keith
但是如果我必须翻译这一点(绿点有效),我想我得到的是Ucs点而不是Wcs点。
这确实让人困惑。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-4-26 11:40:19 | 显示全部楼层
不,你得到的是一个WCS点,但是放置的对象将插入点解释为一个UCS点。
这只是与AutoCAD编程的另一个不一致之处。试试这个例子...
设置一个非WCS的UCS并获取任意点。那将是WCS。采用WCS点并将其应用到新的(或编辑的)实体,您提供的点将被解释为相对于UCS,而不是WCS。然而,一旦创建了对象,您将发现对象的插入点不再与WCS点匹配,因为先前的点将在读取实体时自动转换为WCS。
简而言之,当修改或创建插入点时,您必须使用UCS点,但是当您从对象中读取该插入点时,它将被读取为WCS,因此转换函数
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2006-4-26 11:51:09 | 显示全部楼层
啊哈!实际上是GetEntity的文档出错了。它不返回WCS坐标中的点。它以UCS坐标返回。
输入和输出坐标没有使用相同的坐标系来表示,这仍然很愚蠢。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-4-26 13:07:30 | 显示全部楼层
谢谢伙计们。
我有一个小pickpoint函数,可以将点转换为plines elevtion。我刚刚把它从使用当前视口viewdirection(需要保存才能更新)改为使用viewdir setvar。这是一个行为古怪,所以我有一个地狱的时间追查问题。我以为是在twistangle。但现在,它似乎通过输入翻译后的varpick来工作。我还在追查。这是在一个类中,所以有很多情况下,我可以得到混淆的翻译。
  1. Private Function PickPointToPolyElevation() As Variant
  2. 'Ax+ By + Cz + d = 0 formula for a plane where d=-oPline.Elevation
  3. 'pickpoint is line of sight to a ucs point w/ z=zero
  4.     Dim v, N, Dir
  5.     Dim newV(2) As Double
  6.     Dim dist As Double
  7.     Dim dViewtwist As Double
  8.     Dim dOrigin As Variant
  9.     N = oPline.Normal 'A 3D normal unit vector in WCS. Being a unit vector it's length=1
  10.     v = VarPick
  11.     addpt v, , 8
  12.     Dir = ThisDrawing.GetVariable("viewdir")
  13.     dist = (oPline.Elevation - (v(0) * N(0)) - (v(1) * N(1)) - (v(2) * N(2))) _
  14.                         / ((Dir(0) * N(0)) + (Dir(1) * N(1)) + (Dir(2) * N(2)))
  15.     newV(0) = v(0) + dist * Dir(0)
  16.     newV(1) = v(1) + dist * Dir(1)
  17.     newV(2) = v(2) + dist * Dir(2)
  18.    
  19.     PickPointToPolyElevation = newV
  20.    
  21.    ' dViewtwist = ThisDrawing.GetVariable("Viewtwist")
  22.     'If dViewtwist  0 Then
  23.    ' Dim dAng As Double
  24.     'dAng = Tan
  25.     'End If
  26. End Function

现在我想知道entsel函数是否应该总是转换选择点
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-4-26 13:13:27 | 显示全部楼层
是的,这让我有点上当了。返回的拾取点始终与当前坐标系相关,因此这意味着在将对象添加到图形数据库时,会使用该点添加对象,从而将对象放置在与wcs相关的点上。
这意味着您必须反转当前的ucs矩阵,并通过它推动该点,以获得在世界cs中的真实位置。
真正有趣的是,当您在不同的坐标系中选取具有不同“z”值的2个点(例如,绘制一条线)并将这些点放在正确的位置时,包括线的法线!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 15:59 , Processed in 0.638668 second(s), 75 queries .

© 2020-2025 乐筑天下

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