找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: st788796

[每日一码] 判断一个 WCS 点是否和 LWPOLYLINE 在一个平面上

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-5 18:08:37 | 显示全部楼层

应该是相对 世界坐标系的吧, 0,0,0太多了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2017-8-5 18:10:14 | 显示全部楼层

当然是指 WCS (0 0 0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-5 18:12:03 | 显示全部楼层
如果用 点 和 平面原点 组成的直线 是否在平面上判断,更确切些吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2017-8-5 18:16:14 | 显示全部楼层
本帖最后由 st788796 于 2017-8-5 18:17 编辑

按 Autodesk 给的说明应该用 (trans p 0 e) 转换到 ECS,实际测试中发现 (trans p e 0) 在这个应用中效果相同,也许是一个 Bug,也许是一个巧合
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-5 18:19:31 | 显示全部楼层
基本概念

空间内一点到平面内一点的最小长度叫做点到平面的距离。

特别的,当点在平面内,则点到平面的距离为0。



折叠编辑本段向量法

设平面外那个点为P,平面内任意一点为A,任意一点都行。

则距离为 向量PA点乘法向量再除以法向量的模。

当d≠0时,根据d的符号,可以判断点Q在平面的哪一侧。假设平面法向量n的方向与图中一致,

且该方向指向平面的外侧,那么






测试点与平面内任意一点组成的向量 和 平面的法向向量 点积  ,然后求摸,值就是点到平面的距离。 =0, 在平面上。




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2017-8-5 18:21:56 | 显示全部楼层


数学方法没错,既然在 Autocad 下有实体就用实体方法 trans ,简单
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2017-8-5 18:24:13 | 显示全部楼层
比如说使用 autolisp 或者 vla 方法给 lwpolyline 增加一个节点,这个点要和 lwpolyline 一个平面上才可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-8-5 18:28:54 | 显示全部楼层

从理论上,应该是只有唯一的一个解是正确的吧,其他的只是某种情况下的特例。

如果什么情况下,(trans pt e 0) 和 (trans pt 0 e)都相等,那这个方法就没必要了。

那,到底哪个才是理论上对的方法呢,哪个又是某种特例下才相等的? 这个特例又是什么情况?

请大师给分析下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-8-5 18:35:22 | 显示全部楼层

点到平面的距离在在空间上是明确的,但在acad中却有些绕人,就是表现在那个210组码,仅仅从多段线节点本身是难解的,令人气愤的是acad中一个点也是有方向的,而210组码我是看得头大。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2017-8-5 18:38:05 | 显示全部楼层

这个没有太多时间详细研究 Autocad 下这些转换,不过有个现象,UCS 命令 中有个 OB 选项,你点 Pline 中不同段会有不同 UCS,如果是点一个三维实体,点在不同的面上也会是不同的UCS,这些 UCS 的 Z 方向是统一的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-5 18:44:05 | 显示全部楼层
本帖最后由 marting 于 2017-8-5 18:46 编辑

LWPOLYLINE本身是二维对象, 加上 法线210,和 高程 elev ,确定在空间什么位置。

法线和ELEV确定LWPOLYLINE所在的平面,法线确定和WCS平面的转角,高程ELEV确定从WCS平面的平移多少。

LWPOLYLINE这么定义,是早期内存和硬盘空间少,为了减少数据定义占内存和磁盘空间考虑的。


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2017-8-5 18:47:30 | 显示全部楼层

按 Autocad 文档,任意 UCS 下(Z 轴不要 0,0,1) 绘制一个 lwpolyline ,这时候 Lwpolyline 的 dxf 组码,10 表示 OCS 坐标(二维),38 保存的是 Z(即 vla-get-elevation 获取的值),210 不知道怎么说了。

回到 WCS,重新建立一个 UCS,使用 ZA 选项

命令:
UCS
当前 UCS 名称: *世界*
指定 UCS 的原点或 [面(F)/命名(NA)/对象(OB)/上一个(P)/视图(V)/世界(W)/X/Y/Z/Z 轴(ZA)] <世界>: za
指定新原点或 [对象(O)] <0,0,0>:
在正 Z 轴范围上指定点 <0.0000,0.0000,1.0000>: (cdr (assoc 210 (entget (car (entsel)))))
选择对象: (1.66533e-016 0.49878 0.866729)


这时候再看 lwpolyline 就是一条平行当前 UCS XY平面的,Z 等于 code38  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-5 18:57:35 | 显示全部楼层
210 不知道怎么说了


210 应该就是 绘制LWPOLYLINE时候 UCS的Z轴向量。

看看UCS的Z是否是LW的210

  1. (xd::vec:vxv (getvar "ucsxdir")(getvar "ucsydir"))



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 02:26 , Processed in 0.292424 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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