- 积分
- 912
- 明经币
- 个
- 注册时间
- 2024-5-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2025-7-25 16:43:31
|
显示全部楼层
修改后的完整程序。(defun C:FS (/ ss i ent ENT1 Q Q2 cp r os)
(prompt "\n将各种线型反向——多选版")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
;; 多选对象
(if (setq ss (ssget '((0 . "LINE,ARC,CIRCLE,LWPOLYLINE,SPLINE"))))
(progn
(repeat (setq i (sslength ss))
(setq ent (ssname ss (setq i (1- i)))
ENT1 ent
ENT (entget ENT1))
(cond
;;━━━━━━ 多段线处理 ━━━━━━
((= (cdr (assoc 0 ENT)) "LWPOLYLINE")
(reverseLwp ENT1))
;;━━━━━━ 直线处理 ━━━━━━
((= (cdr (assoc 0 ENT)) "LINE")
(setq Q (cons 10 (cdr (assoc 11 ENT)))
Q2 (cons 11 (cdr (assoc 10 ENT))))
(entmod (subst Q2 (assoc 11 ENT) (subst Q (assoc 10 ENT) ENT)))
)
;;━━━━━━ 样条曲线处理 ━━━━━━
((= (cdr (assoc 0 ENT)) "SPLINE")
(command "SPLINEDIT" ENT1 "r" "")
(command "pedit" e "x" "")
;;(command "")暂时注释
)
;;━━━━━━ 圆弧处理 ━━━━━━
((= (cdr (assoc 0 ENT)) "ARC")
(command "pedit" ENT1 "y" "n")
(reverseLwp (entlast))
(entdel ENT1)
)
;;━━━━━━ 圆处理 ━━━━━━
((= (cdr (assoc 0 ENT)) "CIRCLE")
(setq cp (cdr (assoc 10 ENT))
r (cdr (assoc 40 ENT)))
(entmake
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(67 . 0)
'(410 . "Model")
'(100 . "AcDbPolyline")
'(90 . 2)
'(70 . 129)
(cons 10 (polar cp 0 r))
'(40 . 0)
'(41 . 0)
'(42 . -1)
(cons 10 (polar cp pi r))
'(40 . 0)
'(41 . 0)
'(42 . -1)
)
)
(command "_matchprop" ENT1 (entlast) "")
(entdel ENT1)
)
)
)
)
(prompt "\n未选择有效对象")
)
(setvar "osmode" os)
(princ)
)
;;;=======================================
;;; 多段线反转子程序(保持不变)
;;;=======================================
(defun reverseLwp (ent1 / a pl how li1 li2 li3)
(setq pl (entget ent1 '("*")) how nil)
(foreach an pl
(if (setq a (member (car an) '(10 40 41 42)))
(setq how t))
(cond
((not how)
(setq li1 (cons an li1)))
((and how a)
(cond
((= (car an) 40) (setq an (cons 41 (cdr an))))
((= (car an) 41) (setq an (cons 40 (cdr an))))
((= (car an) 42) (setq an (cons 42 (- 0 (cdr an)))))
(t an)
)
(setq li2 (cons an li2))
)
((and how (not a))
(setq li3 (cons an li3)))
)
)
(entmod (append (reverse li1)
(append (cdddr li2) (list (car li2) (cadr li2) (caddr li2)))
(reverse li3)))
) |
|