找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1125|回复: 8

[求助] [求助]:求助:各位大侠,,获取矩形四顶点的lisp语句怎么写?

[复制链接]
发表于 2005-12-2 09:26:57 | 显示全部楼层 |阅读模式

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

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

×
求助:各位大侠,,获取矩形四顶点的lisp语句怎么写?

测试用DWG文件[by xyp1964]:[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-2 10:53:58 | 显示全部楼层
到它的定义数据中找就是了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8157个

财富等级: 富甲天下

发表于 2005-12-2 11:22:47 | 显示全部楼层
(defun MAssoc (Key alist / tmp pts)
      ;(reverse
        ;(progn
           (while (setq tmp (assoc key aList))
             (setq aList (cdr (member tmp aList))
                     pts (cons (cdr tmp) pts)
           ) )
           pts
        ;) ;_ closes progn
      ;) ;_ closes reverse
    ) ;_ closes defun MAssoc

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

使用道具 举报

 楼主| 发表于 2005-12-2 14:07:03 | 显示全部楼层
谢谢Underway楼主!
你的方法我试过了,非常好用!谢谢你教了我一招!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-12-2 20:25:04 | 显示全部楼层
最初由 Underway 发布
[B](defun MAssoc (Key alist / tmp pts)
      ;(reverse
        ;(progn
           (while (setq tmp (assoc key aList))
             (setq aList (cdr (member tmp aList))
                     pts (cons... [/B]


這個函數真是寫得好!

獲取多義線的頂點,摘自明經通道.
[PHP](defun vertexs (ename / plist pp n)        
  (setq obj (vlax-ename->vla-object ename))
  (setq plist (vlax-safearray->list
(vlax-variant-value
  (vla-get-coordinates obj))))
  (setq n 0)
  (repeat (/ (length plist) 2)
    (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
    (setq n (+ n 2))
  )
  pp
) [/PHP]
將樓主的程序如此改一下,與上面的函數所得的點表的次序完全一樣本.[PHP](defun massoc (key alist / tmp pts)
  (while (setq tmp (assoc key alist))
    (setq alist (cdr (member tmp alist))
          pts (cons (cdr tmp) pts)
    )
  )
  (reverse pts)
)[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-2 23:48:58 | 显示全部楼层
最初由 taner 发布
[B][QUOTE]最初由 Underway 发布
[B](defun MAssoc (Key alist / tmp pts)
      ;(reverse
        ;(progn
           (while (setq tmp (assoc key aList))
             (setq aList (cdr (member tmp ... [/B]


;;今天郁闷,我也来写一个玩玩.

  1.   [FONT=courier new]
  2. ;;(massoc 10 (entget(car(entsel))))
  3. (defun massoc (id lst)
  4.   (mapcar 'cdr (vl-remove-if-not '(lambda(x)(= id (car x))) lst))
  5. )
  6. ;;(vertexs (car(entsel)))
  7. (defun vertexs (e / n)
  8.   (repeat(setq n(fix (1+ (vlax-curve-getendparam e))))
  9.     (setq lst(cons (vlax-curve-getpointatparam e (setq n(1- n))) lst))
  10.   )
  11. )
  12.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-12-3 00:19:08 | 显示全部楼层
http://p4.xdcad.net/forum/showthread.php?s=&threadid=463105
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-3 11:07:55 | 显示全部楼层
最初由 Underway 发布
[B](defun MAssoc (Key alist / tmp pts)
      ;(reverse
        ;(progn
           (while (setq tmp (assoc key aList))
             (setq aList (cdr (member tmp aList))
                     pts (cons... [/B]

包括5楼和6楼的massoc函数,都不支持POLYLINE实体,返回值:((0.0 0.0 0.0))。
结论:DXF 组码10 ,不适于POLYLINE实体,只适于LWPOLYLINE实体,通用性差。
狂刀的vertexs函数可用。

  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20051203 (1762)
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. |;

  13. (defun c:test ()
  14.   (setq        ss (ssget '((0 . "*POLYLINE")))
  15.         s1 (ssname ss 0)
  16.   )
  17.   (if (or (= (xyp-get-dxf 70 s1) 1)
  18.           (equal (xyp-get-CurveStartPoint s1)
  19.                  (xyp-get-CurveEndPoint s1)
  20.           )
  21.       )
  22.     (setq ptn (xyp-get-Vertexs s1 3))
  23.   )
  24.   (mkla "坐标标注" 4)
  25.   (if (= (length ptn) 4)
  26.     (foreach pt ptn (xyp-ZB pt))
  27.   )
  28. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-4 11:33:38 | 显示全部楼层
这么多,我试一下啦,看哪个的好点。再发表吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 22:09 , Processed in 0.255265 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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