打桥位lisp_晓东CAD家园-论坛-A/VLISP-[求助]:请教一个xy坐标排序lisp问题-刚接触lisp,想编一个批量打印程序,将图框按先X后Y的顺序打印。找到一个通用排序工具,试了一下,打印...

初学者尝试用LISP编写批量打印程序,以X、Y或X+Y顺序排列图框。遇到代码理解难题,求助于社区,分享通用排序工具代码,期待解决打印顺序问题。
摘要由CSDN通过智能技术生成

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

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

x

刚接触lisp,想编一个批量打印程序,将图框按先X后Y的顺序打印。

找到一个通用排序工具,试了一下,打印顺序总是不对。我对下面这句不太明白 :

[php](if (or (= xory "xy") (= xory "XY"))

(setq coy (+ (cadr (assoc 10 lp)) (caddr (assoc 10 lp))))

)

[/php]

我不理解“X坐标+Y坐标”后得出什么结果,请指教,谢谢!

通用程序如下:

[php]

;;将选择的图元安X、Y或X+Y坐标排序 (其中SE为选择集,XORY为X、Y或XY

;;

(defun zhy_sort_se (se xory)

(setq newse nil)

(setq n (sslength se))

(setq index 0)

(setq aal '())

(repeat n

(setq name (ssname se index))

(setq lp (entget name))

(if (or (= xory "y") (= xory "Y"))

(setq coy (caddr (assoc 10 lp)))

)

(if (or (= xory "x") (= xory "X"))

(setq coy (cadr (assoc 10 lp)))

)

(if (or (= xory "xy") (= xory "XY"))

(setq coy (+ (cadr (assoc 10 lp)) (caddr (assoc 10 lp))))

)

(setq item (list coy (cdr (assoc 5 lp))))

(setq aal (cons item aal))

(setq index (1+ index))

)

(setq newsort

(vl-sort aal

(function (lambda (e1 e2)

(> (car e1) (car e2))

)

)

)

)

(setq n1 (length newsort))

(setq ind 0)

(repeat n1

(setq ntt (nth ind newsort))

(setq ind (1+ ind))

(setq ty (handent (cadr ntt)))

(if (/= ty nil)

(if (= newse nil)

(setq newse (ssadd ty))

(setq newse (ssadd ty newse))

)

)

)

)

[/php]

广告位,后台可以设置,支持js

您好,您暂时不能浏览帖子的全部内容,请 登录

| 没有账号? 请 注册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值