zoukankan      html  css  js  c++  java
  • [精品]CAD批量处理工具

     CAD批量处理工具是基于AutoCAD二次开发的批处理插件。将程序加载到CAD中,使用自定义的Lisp代码就可对多个文档进行批量操作。

    1.文件说明

    CAD批量处理工具批处理程序包含两个文件:一是基于VBA的程序,二是基于Lisp的程序。

    2.安装运行

    (1)将程序拷入CAD安装路径下的Support文件夹下,如E:Program FilesAutoCAD 2007Support;

    (2)运行CAD,在命令行中键入"APPLOAD",在弹出的选择对话框中选择上一步中Support文件下的.lsp,点击"加载",关闭对话框;

    (3)如果加载成功,命令行中输出"已成功加载.lsp",输入命令BAT即可运行程序。程序主界面如下:

    注意:如果需要CAD启动时即自动加载此工具,需要修改CAD安装路径E:Program FilesAutoCAD 2007Support下acad2007.lsp

    (arxload"vel.arx")
       (if (not (= (substr (ver) 1 11) "Visual LISP"))
       (load "acad2007doc.lsp");
    )
    ;; Silent load.
    (princ)可在代码中的任何地方用下列常数代替实际值:
    

      3.工具说明

    本程序具体操作流程如下:

    (1)【添加文件】或【添目录】来选择要进行批量处理的Dwg文件,也可以通过【删除】和【全清】按钮来操作清除文件列表中的文件;

    (2)单击【编辑】按钮,弹出编辑代码窗口,如图3-2所示。用户可编辑、打开、保存代码,编辑完成后,单击【关闭】,程序会自动保存编辑内容,并更新显示在代码窗口(如果使用脚本语言,请选择【Script代码】);

    (3)点击【开始批处理】,程序将对文件列表中的文件分别打开,并按代码窗口中的代码操作(如果勾选"处理完成后自动存盘",操作结果文件将覆盖原始数据)

    4.代码分析

    本程序的测试用例是两幅宗地图,现在的要求是:

    • 将JZD和JZP层的所有文字字体改为宋体;
    • 将HZ样式改为txt.shx、hztxt.shx(大字体);
    • 将JZD、JZP和JMD层所有对象颜色改为红色。

    测试代码为测试用例文件夹下的"宗地图修改20140820.lsp",现对其中比较关键的代码进行说明:

    (1)获取某层的文字

    1. (setq ss (ssget "x" (list (cons 0 "*TEXT") (cons 8 "JZD"))));

    使用了ssget建立选择要素集,其中"x"代表选择所有,0和8表示不同的组,*TEXT是过滤选择文本,JZD要进行选择的图层。

    (2)新建或更改文本样式

    1. (command "_STYLE" "ST" "SimSunb.ttf" "0" "1" "" "" "")
    2. (command "_style" "hztxt" "txt.shx,hztxt.shx" 0 0.8 0 "n" "n" "n")

    新建样式使用了_style命令,"ST"表示样式名称,"SimSunb.ttf"字体名称;如果要使用大字体的样式,字体参数设置为如"txt.shx,hztxt.shx";如果样式名已存在命令将人修改参数,如果不存在,则会新建立。

    (3)将某层的颜色改为指定的颜色

    1. (vla-put-color layer color_no)

    调用系统中的函数来修改层颜色,其函数原型如上所示,它在Express Tools中,注意要确保安装程序安装了此组件。其中颜色参数使用枚举值:

    常数

    描述

    vbBlack

    0x0

    黑色

    vbRed

    0xFF

    红色

    vbGreen

    0xFF00

    绿色

    vbYellow

    0xFFFF

    黄色

    vbBlue

    0xFF0000

    蓝色

    vbMagenta

    0xFF00FF

    紫红色

    vbCyan

    0xFFFF00

    青色

    vbWhite

    0xFFFFFF

    白色

    (4)将层对象中的颜色随层

    1. (command "_.chprop" "_all" "" "_color" "_bylayer" "")

    将图层的颜色修改,并不能将已有的对象的颜色改掉,需要将图层对象的颜色设置为随层。

    5.常见问题

    (1)打开文件是提示选择字体

    CAD的字体中缺少这种字段,要么使用另一个字体,要么去下载缺失的字体,并放在CAD安装路径下的Fonts文件夹下,如E:Program FilesAutoCAD 2007Fonts

    (2)添加某一个图形时,不能加载到列表中

    本程序的目的是进行批量处理,至少要同时选择两个图形文件才能正确加载到文件列表,如果只选择一个文件时,则不能正确添加。

    (3)运行时报错,保存文档时出错

    一般地,在批处理时,都需要勾选"处理完成后自动存盘",但如果处理之前此图形已打开,保存时就会报错,所以,在批处理时图形不会打开。

    (4)怎样验证操作是否失败?

    验证操作最主要的方式是通过对比测试案例中的错误是否修正,如果执行的代码,会弹出CAD的帮助窗口,建议在批量处理之前,测试好Lisp代码。

    (5)命令行报错:没有定义vlax-get-acad-object

    在测试Lisp代码中,使用了vlax-get-acad-object这个对象,而它是属性Express Tools中的,所以在安装软件时,要选择安装Express Tools

    (6)单独测试lisp通过,批处理失败

    只要单独测试lisp代码能够达到目的,批量处理一般能达到目的。需要注意的是,如果lisp代码中定义了无参的函数,只需将函数里的内容复制到BatchProc的代码窗口,而无需整个函数;如果lisp代码中定义了带参的函数,需要将整个函数复制进去,并将调用的命令复制在后面。

    (7)出现异常: 0xC0000005 (访问冲突)

    调用BAT命令出现"出现异常: 0xC0000005 (访问冲突)", 一般在调用command时候会出现这种情况,只能重装CAD了。

    (8)报错"info或'info透明调用 ***是否垂直?"

    调用系统打印命令(-plot)批量打印宗地图,在测试机上测试通过,但在客户机上报错:"使用命令:info或'info透明调用 ***是否垂直? <N>",只能打印第一个文件。

    CAD中,有许多的命令时可以透明使用的,透明命令其实就是可以让用户在使用另一个命令时,依然能够在命令行中输入这些命令的功能。所以透明命令会经常被用于更改图形的设置或显示。当系统完成了透明命令后,就会恢复执行原命令了。

    测试机上能通过说明是客户机环境问题,我尝试把CASS环境关闭后,即可实现批量打印。

  • 相关阅读:
    C++相关资料
    OpenCV相关资料参考
    QT-undefined reference to vtable
    QToolButton弹出菜单
    QT-信号和槽机制
    了解字符集和编码
    apache配置Directory目录权限的一些配置
    linux用户(组)及文件权限说明
    Linux下重要日志文件及查看方式
    四种常见的 POST 提交数据方式
  • 原文地址:https://www.cnblogs.com/liweis/p/4166839.html
Copyright © 2011-2022 走看看