Lisp去除教育版
本帖最后由 dcl1214 于 2025-11-10 12:20 编辑很多前辈发过去教育版,我也发一个最简单的方法
使用方法:
1 将本代码加到启动项里面,任何图纸一旦打开,教育版就被去掉了
2 单独调用本代码,可以将当前图纸的教育版直接去掉
(DEFUN $dxf->dwg$ (dxf dwg lst / dwg-name-base dwgprefix dxf-old ss)
;调用示例:($dxf->dwg$nilnilnil)
(setq dxf-old dxf) ;备份一下,下面需要判断
(setq dwg-name-base (vl-filename-base (getvar 'dwgname)))
;去掉扩展名后,保留文件名字
(setq dwgprefix (getvar 'dwgprefix));当前图纸的路径所在文件夹
(if (and dxf (findfile dxf)) ;如果传递了dxf路径并能找到
() ;不管了
(progn (setq dxf (strcat dwgprefix dwg-name-base ".dxf")
) ;根据当前图纸名字造一个dxf路径名字
(if(SETQ SS (SSGET "X"));当前图纸的所有图元获取到
(progn
(vl-cmdf "DXFOUT" dxf "V" "2007" "O" SS "" 16) ;输出一个dxf
(setq ss nil) ;做空选择集
))
)
)
(if (and dwg(vl-filename-directory dwg));如果传递了一个dwg路径进来
() ;不管了
(progn
(setq dwg(strcat dwgprefix dwg-name-base ".dwg")
) ;用当前dwg的路径和dwg的名字构造一个新的dwg完整路径
)
)
(if (and dxf (findfile dxf)) ;如果dxf能找到
(progn (SETQ SS (SSGET "X"))
(VL-CMDF "ERASE" SS "")
(SETQ SS NIL)
(command "_.DXFIN" dxf) ;加载dxf文件
(while (= 1 (logand (getvar "CMDACTIVE") 1))
(command "")
) ;如果因为版本差异导致需要用户按下回车,这里帮用户按下回车键
(command "_.SAVEAS" "2004" dwg)
(while (= 1 (logand (getvar "CMDACTIVE") 1))
(command "Y")
) ;如果因为版本差异导致需要用户按下回车(这里遇到最多的应该是目标dwg存在导致重复了,cad会提示是否覆盖),这里帮用户按下Y键
(if dxf-old ;如果有传入路径
() ;不做任何操作
(vl-catch-all-apply 'vl-file-delete (list dxf))
;如果是当前图纸另存为出去的dxf,这里强制删除
)
)
)dwg
)
自从用了中望或高版ACAD都没见过“教育版”了 "DXFOUT" 有时会失败的,效果不佳 刚毕业那年公司前辈们都用CAD2014还说2014好,以讹传讹,结果就是各种崩溃,各种卡,也被这个教育版折磨,打印完发现忘了去除教育版还得重新打印。后来终于在我偷摸装了一个高版本CAD之后崩溃也少了,也不用再折腾教育版了 来支持楼主啦。。。。。 2025年了 还有去教育版本么- - dxfout会不会像wblock一样,丢失对象编组? 429014673 发表于 2025-11-6 23:22
自从用了中望或高版ACAD都没见过“教育版”了
只有2015-2018没有教育版,2019之后又有了 DXFOUT 局限性太大,并非良策. 本帖最后由 你有种再说一遍 于 2025-11-7 17:21 编辑
有天正图元的话,它是拒绝转DXF的,会致命错误.
一旦转T3再转DXF,就逆转不回来了,但是你不剔除教育版就一直传染...
所以才需要用指针方法把教育版标记改了.
页:
[1]
2