找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2392|回复: 17

[求助] 如何通过点选多段线来找到线上的两点

[复制链接]

已领礼包: 268个

财富等级: 日进斗金

发表于 2014-10-29 17:00:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我想通过点选多段线来找到线上的两点,并且做标记,请问各位大神如何实现PS:希望能用纯LISP解决
=============================================

执行命令 点选这个矩形多段线上面那条边
1.PNG



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

已领礼包: 2963个

财富等级: 家财万贯

发表于 2014-10-29 18:00:04 | 显示全部楼层
本帖最后由 819534890 于 2014-10-29 18:20 编辑

这个不难:
1、获取多段线上点选的点;
2、获得多段线的顶点坐标;
3、逐一判断点选的点与相邻两个顶点是否三点共线,如果是,那么该相邻的顶点就是你所需要的,标记顶点。
方法二:
1、获取多段线的顶点坐标;
2、点选的点 到 相邻顶点之间组成的直线 的最短距离就是你所需要的那一段,标记顶点

点评

关于方法一: 点选出这个点的问题,我是用entsel得到这个多段线图元和一个点的坐标,但是这个点不一定会和多段线的坐标三点共线吧。好像会存在偏差,也就是这个坐标并不在多段线上。请问有其他点选的方式吗? 关于  详情 回复 发表于 2014-10-29 22:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-29 18:25:46 来自手机 | 显示全部楼层
vlax-curce-getparamatpoint
fix
1+

点评

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

使用道具 举报

已领礼包: 9829个

财富等级: 富甲天下

发表于 2014-10-29 18:32:46 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setvar "CMDECHO" 0)
  3.   (if (and (setq s1 (entsel "\n选择多段线: "))
  4.         (setq ent (entget(car s1)))
  5.         (wcmatch (cdr(assoc 0 ent)) "*POLYLINE")) (progn
  6.     (command "EXPLODE" s1)
  7.     (setq pt (cadr s1))
  8.     (setq pt1 (osnap pt "NEAR"))
  9.     (setq ss (ssget "c" pt1 pt1))
  10.     (setq ent1 (entget(ssname ss 0)))
  11.     (setq pt2 (cdr(assoc 10 ent1)))
  12.     (setq pt3 (cdr(assoc 11 ent1)))
  13.     (command "U")
  14.   ))
  15.   (setvar "CMDECHO" 1)
  16.   (list pt2 pt3)
  17. )

点评

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

使用道具 举报

已领礼包: 268个

财富等级: 日进斗金

 楼主| 发表于 2014-10-29 22:58:01 | 显示全部楼层
819534890 发表于 2014-10-29 18:00
这个不难:
1、获取多段线上点选的点;
2、获得多段线的顶点坐标;

关于方法一:
点选出这个点的问题,我是用entsel得到这个多段线图元和一个点的坐标,但是这个点不一定会和多段线的坐标三点共线吧。好像会存在偏差,也就是这个坐标并不在多段线上。请问有其他点选的方式吗?
关于方法二:
最短距离方法的我试过,存在BUG,对于有两个最短距离的多段线就没办法了。
点选PT1和PT2之间的线段时,有可能选中PT3和PT4这两点。这个有办法解决吗?
3.png

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-29 23:13:59 | 显示全部楼层
jyc1118 发表于 2014-10-29 22:58
关于方法一:
点选出这个点的问题,我是用entsel得到这个多段线图元和一个点的坐标,但是这个点不一定会 ...

怕有偏差你就near一下咯。

点评

之前没用过osnap这个函数,原来还能这么用,那除了NEAR还有其他的捕捉形式,是用哪些英文来表示的?  详情 回复 发表于 2014-10-29 23:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 268个

财富等级: 日进斗金

 楼主| 发表于 2014-10-29 23:14:35 | 显示全部楼层

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

使用道具 举报

已领礼包: 268个

财富等级: 日进斗金

 楼主| 发表于 2014-10-29 23:16:32 | 显示全部楼层
XDSoft 发表于 2014-10-29 23:13
怕有偏差你就near一下咯。

之前没用过osnap这个函数,原来还能这么用,那除了NEAR还有其他的捕捉形式,是用哪些英文来表示的?

点评

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

使用道具 举报

已领礼包: 268个

财富等级: 日进斗金

 楼主| 发表于 2014-10-29 23:38:26 | 显示全部楼层
iLisp 发表于 2014-10-29 18:25
vlax-curce-getparamatpoint
fix
1+

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-10-30 00:13:43 | 显示全部楼层
jyc1118 发表于 2014-10-29 23:38
这个函数没用过 研究研究

  1. (defun getpts (curve p / pam)
  2.   (setq        pam (vlax-curve-getparamatpoint
  3.               curve
  4.               (vlax-curve-getclosestpointto curve p)
  5.             )
  6.   )
  7.   (list        (vlax-curve-getpointatparam curve (fix pam))
  8.         (vlax-curve-getpointatparam curve (1+ (fix pam)))
  9.   )
  10. )

点评

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-10-30 08:12:01 | 显示全部楼层
XD::Polyoine:-Index+ 晓东论坛函数,也可以根据这个自己写出来,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 13:26 , Processed in 0.212821 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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