明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 12656|回复: 44

[原创]lisp去除教育版

    [复制链接]
发表于 2009-9-8 00:38:00 | 显示全部楼层 |阅读模式

做了一个程序,请高手修改一下,使程序不出现对话框询问,并存回原来的名字;提供一个教育版的dwg作测试,见附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-1-21 20:59:57 | 显示全部楼层
过来学习学习
发表于 2009-9-9 10:35:00 | 显示全部楼层
function XML() {
    [native code]
}
发表于 2009-9-9 15:27:00 | 显示全部楼层
function XML() {
    [native code]
}
发表于 2009-9-10 15:43:00 | 显示全部楼层
当前文档关闭了,程序也就结束了。
发表于 2009-9-10 23:46:00 | 显示全部楼层

哎,好多图档都是教育版的,没办法批量转真是麻烦,楼主将这个程序写完吧,最好是写出了dxf后再回存覆盖掉原来的dwg档才好,期盼中~

发表于 2009-9-11 10:06:00 | 显示全部楼层
呵呵,先看看先
发表于 2009-9-11 10:47:00 | 显示全部楼层
本帖最后由 作者 于 2009-9-11 15:24:25 编辑

试试我修改的下面代码(其实还可以更简洁):
  1. ;;Modify by 木子CAD工具 小李子 2009.9.11
  2. ;;去除教育版打印戳记
  3. (defun out(/ HOLDLSP HOLDECHO dwg dxf AcadObject AcadDocument mSpace DOCS docName OldFileName NewFileName VlaFileName)
  4.    ;(setq HOLDLSP (getvar "ACADLSPASDOC"))
  5.    ;(setvar "acadlspasdoc" 1)
  6.    (setq HOLDECHO (getvar "cmdecho"))
  7.    (setvar "cmdecho" 0)
  8.    (setq dwg          (getvar "DWGNAME")                  ;取当前文档名
  9.          path         (getvar "dwgprefix")                ;取当前文档路径
  10.          dxf          (vl-string-subst ".dxf" ".dwg" dwg) ;改文件扩展名
  11.          AcadObject   (vlax-get-acad-object)
  12.          AcadDocument (vla-get-ActiveDocument Acadobject)
  13.          mSpace       (vla-get-ModelSpace Acaddocument)
  14.    
  15.          DOCS         (vla-get-documents Acadobject)
  16.          docName      (vla-get-FullName AcadDocument)
  17.          OldFileName  (strcat path dxf)
  18.          NewFileName  (strcat path "New_" (vl-string-subst ".dwg" ".dxf" dxf))
  19.    )
  20.    (command "wblock" (strcat path dxf) "16" "*")          ;输出为dxf格式
  21.    ;(vl-file-rename OldFileName NewFileName)               ;更改文件名(这样更改文件名其实格式是不对的,打开会出错)
  22.    (setq VlaFileName (vla-open (vla-get-documents (vlax-get-acad-object)) OldFileName))  ;打开新文件
  23.    (vla-saveas VlaFileName NewFileName (eval (read "acR16_DWG"))) ;或用(vla-saveas VlaFileName NewFileName);以新文件名另存
  24.    (vl-file-delete OldFileName)  ;删除dxf文件
  25.    ;(setvar "acadlspasdoc" HOLDLSP)
  26.    (setvar "cmdecho" HOLDECHO)
  27.    (command "vbastmt"  "AcadApplication.activeDocument.close false ") ;这一句必须放在最后
  28.    (princ)
  29. )
发表于 2009-9-11 11:46:00 | 显示全部楼层

为什么用command呢?

(defun c:dxf( / dwgnewname oldname path)
(setq #ActiveDocument# (vla-get-activedocument  (vlax-get-acad-object)))
(vla-AuditInfo #ActiveDocument# :vlax-true)
(setq path (getvar "DWGPREFIX")   oldname (vl-filename-base (getvar "DWGNAME")))
(setq dwgnewname (strcat path oldname "_dxf"))
(vla-SaveAs  #ActiveDocument# dwgnewname ac2004_dxf)
)

发表于 2009-9-11 15:30:00 | 显示全部楼层
修改了一下,7楼已更新:
  1. ;;Modify by 木子CAD工具 小李子 2009.9.11
  2. ;;去除教育版打印戳记
  3. (defun    out(/ HOLDLSP HOLDECHO dwg dxf AcadObject AcadDocument mSpace DOCS docName OldFileName NewFileName VlaFileName)
  4.     ;(setq HOLDLSP (getvar    "ACADLSPASDOC"))
  5.     ;(setvar    "acadlspasdoc"    1)
  6.     (setq HOLDECHO (getvar    "cmdecho"))
  7.     (setvar    "cmdecho"    0)
  8.     (setq dwg          (getvar    "DWGNAME")                  ;取当前文档名
  9.           path         (getvar    "dwgprefix")                ;取当前文档路径
  10.           dxf          (vl-string-subst    ".dxf"    ".dwg" dwg)    ;改文件扩展名
  11.           AcadObject   (vlax-get-acad-object)
  12.           AcadDocument (vla-get-ActiveDocument Acadobject)
  13.           mSpace       (vla-get-ModelSpace Acaddocument)
  14.    
  15.           DOCS         (vla-get-documents Acadobject)
  16.           docName      (vla-get-FullName AcadDocument)
  17.           OldFileName  (strcat path dxf)
  18.           NewFileName  (strcat path "New_"    (vl-string-subst    ".dwg"    ".dxf" dxf))
  19.     )
  20.     (command    "wblock"    (strcat path dxf)    "16"    "*")          ;输出为dxf格式
  21.     ;(vl-file-rename OldFileName NewFileName)               ;更改文件名(这样更改文件名其实格式是不对的,打开会出错)
  22.     (setq VlaFileName (vla-open    (vla-get-documents    (vlax-get-acad-object)) OldFileName))  ;打开新文件
  23.     (vla-saveas VlaFileName NewFileName (eval    (read    "acR16_DWG")))    ;或用(vla-saveas VlaFileName NewFileName);以新文件名另存
  24.     (vl-file-delete OldFileName)  ;删除dxf文件
  25.     ;(setvar    "acadlspasdoc" HOLDLSP)
  26.     (setvar    "cmdecho" HOLDECHO)
  27.     (command    "vbastmt"  "AcadApplication.activeDocument.close false ")    ;这一句必须放在最后
  28.     (princ)
  29. )

点评

能否改成批量目录下文件处理?  发表于 2019-5-27 17:54

评分

参与人数 1威望 +1 明经币 +1 收起 理由
mccad + 1 + 1 【好评】好程序

查看全部评分

发表于 2009-9-11 15:33:00 | 显示全部楼层
xshrimp发表于2009-9-11 11:46:00为什么用command呢?(defun c:dxf( / dwgnewname oldname path)(setq #ActiveDocument# (vla-get-activedocument  (vlax-get-acad-object)))(vla-AuditInfo #ActiveDocument# :vlax-true)(

还差一步。

目前需关掉DXF文件,再打开DXF文件。再存为DWG文件,再删除DXF文件。

点评

你说的很对,请你完善下吧?本论坛对单个文件去教育版还没有,就这个完善后,就完美了!  发表于 2019-5-28 00:52
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 19:29 , Processed in 0.306732 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表