本帖最后由 hubeiwdlue 于 2025-2-21 10:54 编辑
 - ;; 功能:反转轻量多段线
- ;; 参数:ent - LWPOLYLINE图元名
- ;; 返回:成功返回图元名,失败返回nil
- (defun ReverseLWPolyline (ent / bulgelist coord elist lineweight1 lineweight2 newbulge newcoord newlineweight1 newlineweight2)
- (if (eq (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
- (progn
- (setq elist (entget ent))
- (setq coord (vl-remove-if-not '(lambda (x) (= (car x) 10)) elist))
- (setq lineweight1 (vl-remove-if-not '(lambda (x) (= (car x) 40)) elist))
- (setq lineweight2 (vl-remove-if-not '(lambda (x) (= (car x) 41)) elist))
- (setq bulgeList (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 42)) elist)))
- (setq newCoord (reverse coord))
- (setq newlineweight1 (mapcar '(lambda (x) (cons 41 (cdr x)))(cdr(reverse lineweight1))))
- (setq newlineweight2 (mapcar '(lambda (x) (cons 40 (cdr x)))(cdr(reverse lineweight2))))
- (setq newBulge (mapcar '- (cdr (reverse bulgeList))))
- (entmod
- (append
- (vl-remove-if '(lambda (x) (or (= (car x) 10)(= (car x) 40)(= (car x) 41)(= (car x) 42))) elist)
- (apply 'append
- (mapcar '(lambda (pt lw1 lw2 bulge)
- (list pt lw2 lw1(cons 42 bulge)))
- newCoord
- (append newlineweight1 (list(cons 41 (cdr(car lineweight1)))))
- (append newlineweight2 (list(cons 40 (cdr(car lineweight1)))))
- (append newBulge '(0.0))
- )
- )
- )
- )
- ent
- )
- )
- )
|