masterfal 发表于 2022-7-5 19:04:23

不久前,我还遇到了文件大小的问题。无论出于何种原因,虽然文件是dwg,但无法正确清除内容。一堆本应在清洗过程中移除的东西没有被移除。例如,某些层上没有任何内容,表示无法删除。
解决方案是,将文件另存为dxf,关闭它,重新打开dxf,清除所有文件(这次它实际上可以工作…),然后再次另存为dwg。这个过程很烦人,但似乎是我能让它工作的唯一途径。
最终能够将每个人在工作中使用的标准模板文件从8800kb减少到850kb

dkeran 发表于 2022-7-5 19:05:10

有点麻烦,试图偷一点Lisp程序,并将其纳入我的整个Lisp程序例程。有谁能帮我修改下面的代码,使其能够在更大的例程中自动运行吗?我试过各种各样的东西,虽然我似乎无法把它分类。
 

(defun dxf (e code)
(cdr (assoc code e))
)

(defun dxfPt2D (e code / x)
(setq x (dxf e code))
(if (= d "3d")
(list (car x)(cadr x)(caddr x))
(list (car x)(cadr x))
)
)

(defun cvt1face (e)
(command "_LINE" (dxfPt2D e 10) (dxfPt2D e 11) (dxfPt2D e 12) )
(if (equal (dxf e 12)(dxf e 13))
(command "_CL")
(command (dxfPt2D e 13) "_CL")
)
)

(defun C:3DF2L (/ ss ssl i e d)
(setvar "CMDECHO" 0)
; (prompt "\nVyberte objekty 3DFACE pro prevod na cary: ")
(prompt "\nSelect 3DFACE objects to convert to lines: ")
(command "_SELECT" "_AU" pause)
(setq ss (ssget "_P" '((0 . "3DFACE")))) ; jen 3DFACE
(if (or (not ss) (zerop (setq ssl (sslength ss)))) (progn (prompt "*None*")(exit)) )
(initget "2d 3d")
(setq d (getkword "\nConvert to <3d>: "))
(if (not d)(setq d "3d"))
(setq i 0)
(command "_UNDO" "_BE")
(command "_LAYER" "_M" "3DF2L" "") ; do zvl.hladiny
(setvar "OSMODE" (boole 7 (getvar "OSMODE") 16384))
(while (< i ssl)
(setq e (ssname ss i))
(cvt1face (entget e)) ; prevod
(setq i (1+ i))
);while
(setvar "OSMODE" (boole 2 (getvar "OSMODE") 16384))
(command "_UNDO" "_EN")
(prompt "\nLines created to the layer 3DF2L")
; (if (= d "2d")(prompt "\nNyni vymazte usecky krome obrysovych (_ERASE _CP)\na pak dejte _PEDIT _Yes _Join"))
(if (= d "2d")(prompt "\nFor outline curve erase all lines except outline (_ERASE _CP)\nand type _PEDIT _Yes _Join"))

(princ)
)
页: 1 [2]
查看完整版本: 文件大小减小