找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 723|回复: 3

[求助] [求助]:怎样约束用户输入的点必须在一个多义线上

[复制链接]
发表于 2008-4-14 09:48:09 | 显示全部楼层 |阅读模式

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

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

×
让用户输入一个点,要求必须在图中的某条多义线上,我只能想到两种不太好的做法:
1.告诉用户必须在这条线上选点,如果用户输入的点不合要求就让他重新输入.
2.用Grread跟踪鼠标,算出离鼠标最近的位于线上的点,再用Grdraw动态地画个标记.
办法1得算不负责任,办法2我又觉得编程复杂而且对用户来说也不直观.
有什么好办法?求大侠们提供点思路.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-4-14 18:06:49 | 显示全部楼层
按你的思路编的...

[php]
(defun c:test1 (/ ent gr pt lin)
  (setq lin (ssget ":E:S" '((0 . "LWPOLYLINE"))))
  (if lin
    (progn
      (prompt "\n请选择线上的点:")
      (while (and (setq gr (grread 5 5 1)) (= (car gr) 5))
        (setq pt (test-near (cadr gr) lin))
        (setq ent (test-redraw pt))
      )
      (setq ent (subst (cons 40 30) (assoc 40 ent) ent))
      (entmod ent)
    )
  )
  (princ)
)


(defun test-near (p1 l / obj rel)
  (setq        obj (vlax-ename->vla-object (ssname l 0))
        rel (vlax-curve-getclosestpointto obj p1)
  )
)

(defun test-redraw (p1 / rel)
  (if p1
    (if        (null ent)
      (progn
        (entmake (list (cons 0 "CIRCLE")
                       (cons 10 p1)
                       (cons 40 10)
                 )
        )
        (setq rel (entget (entlast)))
      )
      (progn
        (setq rel (subst (cons 10 p1) (assoc 10 ent) ent))
        (entmod rel)
      )
    )
  )
  rel
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-18 11:28:39 | 显示全部楼层
多谢二楼费心,居然帮我把程序都写了。好人呀。不过不要再替我写程序了,真是不好意思得很,这显得我太懒惰了。
想想也是,第二个思路大概就是最好的办法了。您是用一个圆圈来做动态标记的,我本来想用GRVECS 来模仿ACAD的自动捕捉,用一个类似于”最近点“捕捉标记的东西来实现,让用户看起来好象标准的捕捉动作一样。按这样做的话就得为屏幕缩放、图形旋转等因素准备矩阵参数,还要让那个标记的颜色、大小都跟用户设置的捕捉标记一样,太费心。
所以我盼着能有一种简单的办法,最好能有个偷懒的函数一设置,就限制了只使用最近点捕捉,还限制在只捕捉这一条线上,那该多好。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-4-18 21:05:59 | 显示全部楼层
操千曲而后晓声。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 19:24 , Processed in 0.184185 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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