ll_j 发表于 2014-9-3 10:15 
很久不动了,动起来还有点困难,凑了一段框架,支持宽度,你看看:
非常感谢ll_j,您isp水平真是不一般!
 - (defun c:RevPL ()
- (princ "\n反转PL线")
- (if (setq SS (ssget '((0 . "LWPOLYLINE"))))
- (progn
- (setq I 0)
- (repeat (sslength SS)
- (setq et (entget (ssname SS I)))
- (setq
- es (vl-remove-if
- '(lambda (x) (member (car x) '(10 40 41 42 91 210)))
- et
- ) ;实体头
- ee (assoc 210 et) ;实体尾,拉伸方向,保证在空间的轻多段线不至于变形
- em (vl-remove-if-not
- '(lambda (x) (member (car x) '(10 40 41 42)))
- et
- ) ;顶点、宽度、凸度
- )
- (setq nem (cdddr (reverse em))
- nem (mapcar
- '(lambda (x)
- (cond
- ((= (car x) 40) ;首尾宽度转换
- (cons 41 (cdr x))
- )
- ((= (car x) 41)
- (cons 40 (cdr x))
- )
- ((= (car x) 42) ;凸度反转
- (cons 42 (- (cdr x)))
- )
- (t x)
- )
- )
- nem
- )
- )
- (setq et (append es nem (list ee)))
- (entmod et)
- (setq I (1+ I))
- )
- )
- (princ ">>>图内没有二维多段线")
- )
- (princ)
- )
|