图纸合并,多个dwg合并在一个dwg里。
现在三维软件众多,很多批量输出的dwg,都含有同名块,或同名标注样式
大部分的合并插件,合并后,会引起块冲突或者标注样式冲突,导致效果并不理想
以下为源码,不知道哪位大神写的,已查无实据。感谢前人的奉献!
此程序需要解决的问题:
1.标注样式冲突,导致即便执行sub2,标注的文字大小全部变为统一打大小了
应该保持原样才对(大图框原始标注文字大,小图框原始标注文字也小)
【希望加入合并前,随机rename块名,随机rename标注样式名称】
2.合并后,图形之间全部重叠了
应该设置为一定间距,或者用户指定间距
- (defun c:XXX ()
- ;;插图到一起
- (setvar "CMDECHO" 0)
- (setq pf (getfiled "指定原文件路径中的一个图形文件:>" "*" "dwg" 8))
- (setq path (vl-filename-directory pf))
- (setq path (strcat path "\"))
- (setq aa (vl-directory-files path "*.dwg" 1))
- (setq n (length aa))
- (setq i 0
- nn 0
- )
- (setq pp (nth i aa))
- (initget "1 2")
- (setq opt (getkword
- "\n 1:按块插入 /2:解块插入 "
- )
- )
- (if opt
- (cond
- ((= opt "1") (sub1))
- ((= opt "2") (sub2))
- )
- )
- (princ)
- )
- (defun sub1 ()
- (prompt "\n")
- (prompt "程序正在按块插入图幅,请等待...\n")
- (while (/= pp nil)
- (setq i (+ i 1))
- (setq pp (strcat path pp))
- (command "insert" pp "0,0" "1" "1" "")
- (setq nn (+ nn 1))
- (princ (strcat "第" (itoa nn) "幅" "图号为" pp " \r"))
- (setq pp (nth i aa))
- )
- (command "zoom" "e" "zoom" "0.8x")
- )
- (defun sub2 ()
- (prompt "\n")
- (prompt "程序正在解块插入图幅,请等待...\n")
- (while (/= pp nil)
- (setq i (+ i 1))
- (setq pp (strcat path pp))
- (setq pp (strcat "*" pp))
- (command "insert" pp "0,0" "1" "")
- (setq nn (+ nn 1))
- (princ (strcat "第" (itoa nn) "幅" "图号为" pp " \r"))
- (setq pp (nth i aa))
- (setq pp (nth i aa))
- )
- (command "zoom" "e" "zoom" "0.8x")
- )
|