找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 827|回复: 12

[求助]:好像记得以前有个讨论过PLINE线插入点的算法

[复制链接]
发表于 2003-10-18 20:01:04 | 显示全部楼层 |阅读模式

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

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

×
现在找不到;了,不知道哪位可以帮忙的,就是给定一个点和一条PLINE线,用什么算法找出这个点位于哪两个点之前或是在其中一个端点的一边,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-10-18 23:50:09 | 显示全部楼层
测量点的位置
(vlax-curve-getDistAtParam curve param)与
(vlax-curve-getdistatpoint curve pointt) 对比就知道是第几个点了
要求在哪个断点的一边,除了用以上方法还可以用 osnap 中的 end 直接找出,与pl线数据库对比就知道
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-19 07:53:56 | 显示全部楼层
利用下面的程序可以确定你选取的点位于开始点第N点(0开头)后:
(defun c:test ()
  (vl-load-com)
  (setq ent (entsel "\nPick the Segment of Pline: "))
  (setq p (cadr ent)
      obj (vlax-ename->vla-object (car ent))
       pp (vlax-curve-getclosestpointto obj (trans p 1 0))
        n  (fix (vlax-curve-getparamatpoint obj pp)))
  n
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-20 15:07:04 | 显示全部楼层
那我要想做到那个点不在那条线上呢?主要是想要实现这个~,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-21 09:29:14 | 显示全部楼层
defun c:Aee ( / en el EL1 el2 et oldos pt PT1 PT2  test1 TEST2)
(while
(not
  (eq "LWPOLYLINE" (setq en(car(entsel "\n请选择LWPOLYLINE"))
                        el(entget en)
                        et(cdr (assoc 0 el))))))
(redraw en 3)
(setq OLDOS (getvar "OSMODE"))
(setvar "OSMODE" 1)
(setq PT1 (getpoint "\n请选择第一个点")
      PT2 (getpoint "\n请选择第二个点")
      TEST1 (cons 10 (list (car PT1)(cadr PT1)))
      TEST2 (cons 10 (list (car PT2)(cadr PT2)))      
      EL2 (member TEST2 EL))
(if(member TEST1 EL2)(setq PT PT1 PT1 PT2 PT2 PT TEST TEST1 TEST1 TEST2 TEST2 TEST))
(setq EL1(reverse(member TEST1 (reverse EL)))
      EL2(member TEST2 EL)
      PT (getpoint "\n请输入要增加的点"))
(setq EL (append EL1 (list(cons 10 (list (car PT)(cadr PT))))  EL2))   
(entmod EL)
(entupd EN)
(setvar "OSMODE" OLDOS))
LISP程序]:删除顶点,用于LWPOLYLINE,能多选。   9pt 10pt 11pt 12pt 13pt 15pt  

(defun c:dee ( / en el et oldos pt test1 EL1 el2 )
(while
(not
(eq "LWPOLYLINE" (setq en(car(entsel "\n请选择LWPOLYLINE"))
el(entget en)
et(cdr (assoc 0 el))))))
(redraw en 3)
(setq OLDOS (getvar "OSMODE"))
(setvar "OSMODE" 1)
(while
(setq PT (getpoint "\n请选择在LWPOLYLINE上将要删除的点")
TEST1 (cons 10 (list (car PT)(cadr PT)))
EL1(reverse(cdr(member TEST1 (reverse EL))))
EL2(cdr(member TEST1 EL)))
(while (and EL2(not (equal (car(car EL2)) 10)) )
(setq EL2 (cdr EL2)))
(setq EL (append EL1 EL2))
(entmod EL)
(entupd EN))
(setvar "OSMODE" OLDOS))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-22 10:24:27 | 显示全部楼层
谢谢上面的青马,不过我要的不是这个意思,我是要不用提交两个点,直接提交一条线和一个点,然后判断这个点是在这条线的哪一个位置~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-22 13:04:13 | 显示全部楼层
d对不起,我很笨,还是不理解你要干什么
不如贴个图瞧瞧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-10-22 22:05:13 | 显示全部楼层
5楼看一下3楼的,会写出更好的来。

3楼的以前谁贴过的.很好的一个方法.

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

使用道具 举报

发表于 2003-10-22 23:42:25 | 显示全部楼层
操作是简单了但是如果这个pline是一个封闭的,那么问题就来了,我们点在了这个封闭的pline里面那就很难确定这个点会加在pline的哪条边上了,对吧,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-23 03:06:10 | 显示全部楼层
最初由 青马 发布
[B]操作是简单了但是如果这个pline是一个封闭的,那么问题就来了,我们点在了这个封闭的pline里面那就很难确定这个点会加在pline的哪条边上了,对吧, [/B]


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

使用道具 举报

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

使用道具 举报

发表于 2003-10-24 00:46:45 | 显示全部楼层
这不是pl线插点么? 论坛以前有讨论过.好像有不止一个程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-10-24 12:00:22 | 显示全部楼层
我以前好像看到过的呀,不过就是找不到了,搜也搜不到
有没有谁有这个代码呀,可以给我看么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 17:23 , Processed in 0.520198 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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