明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2380|回复: 2

请教一个xy坐标排序lisp问题

[复制链接]
发表于 2007-1-13 11:12 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-1-13 11:15:27 编辑

刚接触lisp,想编一个批量打印程序,将图框按先X后Y的顺序打印。
找到一个通用排序工具,试了一下,打印顺序总是不对。我对下面这句不太明白 :
  1. (if (or (= xory "xy") (= xory "XY"))
  2.       (setq coy (+ (cadr (assoc 10 lp)) (caddr (assoc 10 lp))))
  3. )
我不理解“X坐标+Y坐标”后得出什么结果,请指教,谢谢!

通用程序如下:
  1. ;;将选择的图元安X、Y或X+Y坐标排序 (其中SE为选择集,XORY为X、Y或XY
  2. ;;
  3. (defun zhy_sort_se (se xory)
  4.   (setq newse nil)
  5.   (setq n (sslength se))
  6.   (setq index 0)
  7.   (setq aal '())
  8.   (repeat n
  9.     (setq name (ssname se index))
  10.     (setq lp (entget name))
  11.     (if (or (= xory "y") (= xory "Y"))
  12.       (setq coy (caddr (assoc 10 lp)))
  13.     )
  14.     (if (or (= xory "x") (= xory "X"))
  15.       (setq coy (cadr (assoc 10 lp)))
  16.     )
  17.     (if (or (= xory "xy") (= xory "XY"))
  18.       (setq coy (+ (cadr (assoc 10 lp)) (caddr (assoc 10 lp))))
  19.     )
  20.     (setq item (list coy (cdr (assoc 5 lp))))
  21.     (setq aal (cons item aal))
  22.     (setq index (1+ index))
  23.   )
  24.   (setq newsort
  25.   (vl-sort aal
  26.     (function (lambda (e1 e2)
  27.          (> (car e1) (car e2))
  28.        )
  29.     )
  30.   )
  31.   )
  32.   (setq n1 (length newsort))
  33.   (setq ind 0)
  34.   (repeat n1
  35.     (setq ntt (nth ind newsort))
  36.     (setq ind (1+ ind))
  37.     (setq ty (handent (cadr ntt)))
  38.     (if (/= ty nil)
  39.       (if (= newse nil)
  40. (setq newse (ssadd ty))
  41. (setq newse (ssadd ty newse))
  42.       )
  43.     )
  44.   )
  45. )



发表于 2008-5-24 13:28 | 显示全部楼层

请问能否将属性块按照X,Y坐标排序

发表于 2008-5-27 07:35 | 显示全部楼层
“X坐标+Y坐标”我想作者的意思是x,Y坐标的和
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-12 11:47 , Processed in 0.148198 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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