作者suny999 (满23篇了...)
看板Cad_Cae
标题[心得] AutoLISP --- 聚合线反转方向
时间Wed Jun 3 08:11:18 2009
因为AutoCAD没有反转聚合线的指令,故为经典Lisp新手的入门习题,以下是我的解答:
===============================================================
;_Reverse a polyline extreme simply, written by Suny 2009.06.01
(DEFUN c:revpl(/ ent head rvpl aLs aIt nls n cp np n40 n41 n42)
(SETQ ent(ENTGET(CAR(ENTSEL"Pick a polyline to reverse:")))
head(REVERSE(MEMBER(ASSOC 39 ent)(REVERSE ent)))
rvpl '() aLs '() n 0 )
(FOREACH aIt (MEMBER(ASSOC 10 ent)ent)
(SETQ aLs(APPEND aLs(LIST aIt))n(1+ n))
(IF(=(REM n 4)0)(SETQ rvpl(APPEND rvpl(list aLs))aLs'())))
(SETQ rvpl(REVERSE rvpl)
rvpl(append rvpl(list(CONS(CAR(LAST rvpl))(cdar rvpl))))
nls'() n 0 )
(WHILE(<(1+ n)(LENGTH rvpl))
(SETQ cp(NTH n rvpl)
np(NTH(1+ n)rvpl)
n40(CONS 40( CDR(ASSOC 41 np)) )
n41(CONS 41( CDR(ASSOC 40 np)) )
n42(CONS 42(-(CDR(ASSOC 42 np))))
nls(APPEND nls(LIST(CONS(CAR cp)(list n40 n41 n42))))
n(1+ n)) )
(ENTMOD(APPEND head(APPLY'APPEND nls)))(PRINC) );_eo revpl
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.202.80
1F:推 ftc693:帮推 大大你太认真了.....我最近都顾着联谊 哀 输了 06/04 10:17
2F:→ suny999:联谊真好~~^^ 06/04 22:44