明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3817|回复: 10

[提问] 角落矩形-----LISP------

[复制链接]
发表于 2013-11-3 15:09:50 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-11-4 14:42:44 | 显示全部楼层
不太懂你的意思说具体点
 楼主| 发表于 2013-11-4 16:09:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-11-4 19:26:52 | 显示全部楼层
如果矩形是封闭的PLINE,可以按下面的步骤编程:
1、选择图框(可以是块);
2、计算图框的最小包围框;
3、用上面计算好的包围框选择该范围内的封闭PLINE矩形;
4、循环计算各矩形的四个角点组成表;
5、分别对各矩形角点表排序,先排X后排Y;
6、对各矩形的一个角点排序,方法同上;
7、按顺序输出结果。
 楼主| 发表于 2013-11-5 12:40:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-11-6 08:52:15 | 显示全部楼层
程序未经调试。另外:小数点后可以有零吧。
  1. ;[提取1號矩形左下角點的坐標[X,Y]及X軸長度,Y軸長度,]  X軸55.4 Y軸58. X軸長度52. Y軸長度39.
  2. ;[提取2號矩形右下角點的坐標[X,Y]及X軸長度,Y軸長度,]  X軸2163.7 Y軸60.5 X軸長度72.Y軸長度61.
  3. ;[提取3號矩形左上角點的坐標[X,Y]及X軸長度,Y軸長度,]  X軸2162.3 Y軸870.75 X軸長度45. Y軸長度54.
  4. ;[提取4號矩形右上角點的坐標[X,Y]及X軸長度,Y軸長度,]  X軸53. Y軸869.3 X軸長度36. Y軸長度85
  5. ;55.4 58. 52. 39.
  6. ;2163.7 60.5 72. 61.
  7. ;2162.3 870.75 45. 54.
  8. ;53. 869.3 36. 85.
  9. (defun c:nn()
  10. (setvar "osmode" 0)     
  11. (setq p1 (getpoint "\n 請選擇窗口的第1點:"))
  12. (setq p2 (getcorner p1 "\n 請選擇窗口的第1點:"))
  13. (if (setq ss (ssget "w" P1 P2 '((0 . "LWPOLYLINE") (70 . 1) (90 . 4)))) (progn
  14. (setq n -1)
  15. (setq ptlst (list))
  16. (if (= (sslength ss) 4) (progn
  17. (repeat (sslength ss)
  18. (setq ent (ssname ss (setq i (1+ i))))
  19. (setq plst (list))
  20. (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
  21. (setq plst (vl-sort plst '(lambda (a b) (< (cadr a) (cadr b)))))
  22. (setq plst (vl-sort plst '(lambda (a b) (< (car a) (car b)))))
  23. (setq ptlst (cons plst ptlst))
  24. )
  25. (setq ptlst (vl-sort ptlst '(lambda (a b) (< (cadar a) (cadar b)))))
  26. (setq ptlst (vl-sort ptlst '(lambda (a b) (< (caar a) (caar b)))))
  27. (if (setq fn (findfile "558.txt"))
  28. (setq fp (open fn "a"))
  29. (setq fp (open "558.txt" "w"))
  30. )
  31. (setvar "DIMZIN" 0)
  32. (setq lenlst (list))
  33. (mapcar '(lambda (x) (list (-(car (last x)) (caar x)) (-(cadr(last x)) (cadar x)))) ptlst)
  34. (setq pt1 (caar ptlst)
  35.       pt2 (cadadr ptlst)
  36.       pt3 (cadr(caddr ptlst))
  37.       pt4 (car(last ptlst)))
  38. (setq i 1)
  39. (foreach x lenlst
  40. (setq pt (eval(read(strcat "pt" (itoa i)))))
  41. (print (rtos (car pt) 2 1) fp) (princ " " fp)
  42. (princ (rtos (cadr pt) 2 1) fp) (princ " " fp)
  43. (princ (rtos (car x) 2 1) fp) (princ " " fp)
  44. (princ (rtos (cadr x) 2 1) fp)
  45. )
  46. (close fp)
  47. ))
  48. ))
  49. (princ)
  50. )

点评

哪来的LWPOLYLINE实体?  发表于 2013-11-6 22:10
发表于 2013-11-6 22:03:44 | 显示全部楼层
楼主给的txt文件数据就是错的!
发表于 2013-11-6 23:26:27 | 显示全部楼层
  1. ;; 角落矩形 2013-11-06
  2. (defun c:test1405 ()
  3.   (xyp-CMDLA0)
  4.   (defun xyp-aaa (point ptn aa bb cc / pt ss s1 pt ww hh tx)
  5.     (setq pt (xyp-Get-PtNearPtn point ptn)
  6.           ss (ssget "c" pt pt '((0 . "*polyline")))
  7.           s1 (ssname ss 0)
  8.           pt (xyp-9pt s1 aa)
  9.           ww (distance pt (xyp-9pt s1 bb))
  10.           hh (distance pt (xyp-9pt s1 cc))
  11.           tx (list (car pt) (cadr pt) ww hh)
  12.     )
  13.     (xyp-strcat (mapcar 'xyp-2str tx) " ")
  14.   )
  15.   (setq lst '())
  16.   (if (setq ss (ssget '((0 . "LINE") (62 . 1))))
  17.     (progn
  18.       (setq s0 (entlast))
  19.       (xyp-PeditJoin ss 0)
  20.       (setq ss1        (xyp-SSelEntnext s0)
  21.             p1        (xyp-9pt ss1 1)
  22.             p3        (xyp-9pt ss1 3)
  23.             p7        (xyp-9pt ss1 7)
  24.             p9        (xyp-9pt ss1 9)
  25.             ptn        (mapcar '(lambda (x) (xyp-9pt x 1)) (xyp-ss2list ss1))
  26.             lst        (list (xyp-aaa p1 ptn 1 3 7)
  27.                       (xyp-aaa p3 ptn 3 1 9)
  28.                       (xyp-aaa p7 ptn 7 9 1)
  29.                       (xyp-aaa p9 ptn 9 7 3)
  30.                 )
  31.       )
  32.     )
  33.   )
  34.   (xyp-List2File lst "558a" "txt")
  35.   (xyp-CMDLA1)
  36. )
 楼主| 发表于 2013-11-7 07:56:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2013-11-7 20:41:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 00:50 , Processed in 0.172142 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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