按顺序批量替换块
本帖最后由 myfrankie 于 2015-11-2 20:03 编辑例如 源块A和目标块B将块B替换为A 替换后保留A的大小和属性,但也要保留B的位置和方向。可以同时依次点源块 并依次替换目标块 谁能帮我弄一下。谢谢。在线等待
本帖最后由 菜卷鱼 于 2015-10-31 16:15 编辑
有一个没按顺序的
(defun osbe ( )
(setq os-mode (getvar 'osmode))
(setvar 'osmode 0)
)
(defun ose ( )
(setvar 'osmode os-mode)
)
(vl-load-com)
(defun c:hk ( / name i ar10 ar41ar42 ar43 ar50 ssa ss info nar41 *error*)
(defun *error* (s)
(command "_.undo" "e")
(setvar 'nomutt 0)
(setvar 'cmdecho 1)
)
(princ "替换块")
(if (/= namei nil)
(mapcar 'princ (list "\n输入新的块名:<" namei ">"))
(mapcar 'princ (list "\n输入新的块名:" ))
)
(setq name (getstring ))
(if (or(= name "")(= name nil))(setq name namei)(setq namei name))
(setq ss (ssget'((0 . "insert"))))
(setq i 0)
(setvar "cmdecho" 0)
(command "_.undo" "be")
(osbe)
(repeat (sslength ss)
(setq ssa(ssname ss i))
(setq info (entget ssa))
(setq ar10 (cdr (assoc 10 info)))
(setq ar41 (cdr (assoc 41 info)))
(setq ar42 (cdr (assoc 42 info)))
(setq ar43 (cdr (assoc 43 info)))
(setq ar50 (cdr (assoc 50 info)))
(setvar "attreq" 0)
(if (OR(= name "C")(= name "c"))
(progn
(if (= i 0)
(setq nar41(getreal "\n输入半径:<10>")))
(if (= nar41 nil)(setq nar41 10))
(progn (setvar 'nomutt 1)
(command "circle" ar10 nar41)
(setvar 'nomutt 0))
)
(progn
(setq mspace (vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object))
)
)
(setq 3dp (vlax-3D-point ar10))
(vla-InsertBlock mspace 3dp name ar41 ar42 ar43 ar50)
)
)
(entdel (ssname ss i))
(setq i (1+ i))
);;;repeat
(ose)
(command "_.undo" "e")
(princ (strcat "\n完成" (itoa (sslength ss)) "次替换"))
(setvar "cmdecho" 1)
(prin1)
) 怎没高手解决? myfrankie 发表于 2015-10-31 08:40 static/image/common/back.gif
怎没高手解决?
高手都好闲哟... 高手都睡着了??
高手都睡着了??
页:
[1]