找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 858|回复: 5

[求助] [求助]:能否一选中一个矩形便得到四个角点坐标?

[复制链接]
发表于 2006-12-14 21:28:08 | 显示全部楼层 |阅读模式

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

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

×
矩形的四个角点都是(10 .数值)
请问有没有办法把四个角点的数值依次求得。。。。
一般只能取得一个角点。。如下:
  1. (setq ss (ssget))
  2.           (setq na (ssname ss 0))
  3.           (setq data (entget na))
  4.           (setq faq (cdr (assoc '10 data)))


扩展开来。就是有没有办法求出如果有多个
(code value)中的code相同的时不同的value值。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-12-15 03:32:15 | 显示全部楼层
[php]
(defun c:test ()
  (setq rec (car (entsel "pick rectangle:")))
  (acet-geom-vertex-list rec)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-12-15 08:06:43 | 显示全部楼层

  1.   [FONT=courier new]
  2. ;;; ==================================================================
  3. ;;; 求多義線所有頂點.返回所有頂點表.(晓东上收集的,好象是XYP大师和狂刀写的)
  4. ;;; ==================================================================
  5. (defun th1-get-allvertexs (ename / plist pp n)
  6.   (setq obj (vlax-ename->vla-object ename))
  7.   (setq plist (vlax-safearray->list (vlax-variant-value
  8.                                                         (vla-get-coordinates obj)
  9.                                     )
  10.               )
  11.   )
  12.   (setq n 0)
  13.   (repeat (/ (length plist) 2)
  14.     (setq pp (append
  15.                pp
  16.                (list (list (nth n plist) (nth (1+ n) plist)))
  17.              )
  18.     )
  19.     (setq n (+ n 2))
  20.   )
  21.   pp
  22. )
  23. ;;; 二维点表
  24. (defun th2-get-allvertexs (e / n lst)
  25.   (repeat (setq n (fix (1+ (vlax-curve-getendparam e))))
  26.     (setq lst (cons (vlax-curve-getpointatparam e (setq n (1- n))) lst))
  27.   )
  28. )
  29. ;;; 三维点表
  30.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2006-12-15 12:59:13 | 显示全部楼层
[php]
(defun C:test (/ ss ename elist ptlist)
  (setq ss (entsel "\n请选取多段线(或样条曲线): "))
  (setq ename (car ss))
  (setq elist (entget ename))
  (foreach n elist
    (if (= 10 (car n))
      (setq ptlist (cons (cdr n) ptlist))
    )
  )
  (reverse ptlist)
)
[/php]

我给出一段代码,能返回多段线(或者样条曲线)端点列表,也很简单,无须acet函数,无须vlisp函数,适合各种CAD版本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-15 18:18:30 | 显示全部楼层
首先,先谢谢楼上的所有人。。。谢谢。。。
4楼的真的很不错。。因为我现在只会用R14能用的lisp。我想应该可以从ptlist一个点一个点取出来吧。。。。。是什么函数啊??好像有。。呵,当然2和3楼的高手向你们学习。

  1. ;求矩形的四个角点坐标
  2. (defun c:test ()
  3. (setq txtss (ssget))
  4. (setq txts (ssname txtss 0))
  5. (setq txtdate (entget txts))
  6.      (setq tP1 (CDR (assoc '10 txtdate)))
  7.      (setq txtdate (subst (cons 99 '(1000 1000)) (assoc '10 txtdate) txtdate))
  8.      (setq tP2 (CDR (assoc '10 txtdate)))
  9.      (setq txtdate (subst (cons 99 '(1000 1000)) (assoc '10 txtdate) txtdate))
  10.      (setq tP3 (CDR (assoc '10 txtdate)))
  11.      (setq txtdate (subst (cons 99 '(1000 1000)) (assoc '10 txtdate) txtdate))
  12.      (setq tP4 (CDR (assoc '10 txtdate)))
  13.   (prin1)
  14. )

本程序的精华在下面这句:
(setq txtdate (subst (cons 99 '(1000 1000)) (assoc '10 txtdate) txtdate))
呵呵。很有意思的一句。我还不知道不同的code可以替换。我们一般是code相同时来替换
不同的value。。。这是今天刚问公司的学长的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-12-15 21:29:51 | 显示全部楼层
最初由 highflybird 发布
[B][php]
(defun C:test (/ ss ename elist ptlist)
  (setq ss (entsel "\n请选取多段线(或样条曲线): "))
  (setq ename (car ss))
  (setq elist (entget ename))
  (foreach n elist
    (if (= 10 (car n))
... [/B]

  1.   [FONT=courier new]
  2. ;改一下,变为一个通用函数
  3. (defun test (ename / n ptlist)
  4.   (foreach n (entget ename)
  5.     (if        (= 10 (car n))
  6.       (setq ptlist (cons (cdr n) ptlist))
  7.     )
  8.   )
  9.   (reverse ptlist)
  10. )
  11. ;;;这样改一下,应用更广。
  12. (defun th2-massoc (key alist / x nlist)
  13.   (foreach x alist
  14.     (if (eq key (car x))
  15.       (setq nlist (cons (cdr x) nlist))
  16.     )
  17.   )
  18.   (reverse nlist)
  19. );;;用于点对第一项相同的子项的第二项的集合
  20. (defun th4-get-allvertexs (ename )
  21.   (th2-massoc 10 (entget ename))
  22. );;;求顶点坐标集合

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 22:41 , Processed in 0.213517 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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