



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浅谈批量 cad 图形文件自动修改的实现方法黄晓计(广西第一测绘院,广西 南宁 530023)摘要 在大比例尺地形图、地籍图生产制作过程中,制作标准分幅图是一个必需的工作环节,而对标准分幅图进行图廓整饰是一个批量处理的过程。文章结合工作实例简单介绍以南方软件为基础,利用 cad二次开发语言 autolisp,并结合脚本文件实现批量标准 1:500 地形、地籍分幅图的图幅名称、图号注记的修 改方法。关键词 标准分幅图;autolisp 语言;脚本;批量处理南方 cass 软件是南方测绘公司基于 autocad 平台上进行开发的软件,是测绘行业常用的绘图软件。在 地形图、地籍图生产制作过程中,制作
2、标准地形、地籍分幅图是一个必不可少的工作环节。南方 cass 软件具有较强的地形、地籍图绘制功能和批量标准分幅制作的功 能。笔者结合工作实例简单介绍利用 cad 二次开发语言 autolisp 和脚本文件相结合实现批量 1:500 标准地 形、地籍分幅图的图幅名称、图幅号注记的自动修改方 法。容,编写 g_tfmc.lsp、du_nextname.lsp、f_close.lsp 程序文件和图形批处理.scr 脚本文件;第三个组成部分的任务 是执行图形批处理.scr 脚本文件。整个程序设计结构如 图 1 所示。(1) 第一部分编写 du_tm.lsp 文件,定义了两个函 数,即 texver 函
3、数和 c:du_tm 函数。texver 函数的功能是 获取每个标准分幅内图框的 4 个角点坐标。源代码如 下:(defun texver (a / bb n i)(setq bb (entget a) n (length bb) i 0 po () (while ( i n) (setq b (nth i bb)(if (= (car b) 10) (setq po (cons (cdr b) po) (setq i(1+ i)c:du_tm 的功能是在图幅接合表中根据每个标准 分幅内图框的 4 个角点坐标逐个获取图幅号、图名信 息,生成图幅信息.txt 文本文件。源代码如下:(defun
4、c:du_tm(/ fname ss1 ii ename po s2 wbth s3 tm )(setq fname (open d:/ 图幅信息.txt w)(setq ss1 (ssget (8 . tk)(0 . lwpolyline) (if ss1 (progn (setq ii 0) (while ( y 2000000.0) (setq fth (strcat(substr (rtos (/ (- y 2000000) 1000) 2 2)2) - (substr (rtos (/ x 1000) 2 2) 2)(setq fth (strcat (substr (rtos (/
5、 y(setq s2 (ssget wp po (8 . tk)(0 . text)(if (/= s2 nil) (progn(setq wb (cdr (assoc 1 (entget (ssname s2 0) (setq th (strcat (substr wb 2 6)(substr wb 10 5) ) ) (setq s3 (ssget wp po (8 . tuming)(0 . text) (if (= s3 nil) (setq tm th)(if (/= s3 nil) (setq tm (cdr (assoc 1 (entget (ssname s30)(setq s
6、tr (strcat th , tm ) (write- line str fname) (setq ii (+ ii 1) (close fname)(2) 第二部分由 3 个 lsp 文件和一个脚本文件组成。g_tfmc.lsp 文件包括一个主程序和一个子程序,子 程序中定义了一个 read_tfmc 函数,函数可实现的功能 是读入图幅信息 .txt,获得当前图形的图幅名称 。 read_tfmc 函数代码如下:(defun read_tfmc (tfh / f waa)(setq f (open d:/ 图幅信息.txt r) (while waa (progn(if (= (subst
7、r waa 1 11) tfh) (setq tm (substr waa 13) waa nil)(setq waa (read- line f) ) (close f) )主程序定义了一个 c:g_tfmc 函数,函数可实现的功 能是根据当前图形的坐标,计算当前图形的图幅号,通1000) 2 2) 2) - (substr (rtos (/ x 1000) 2 2) 2) (read_tfmc fth)(if ( (atof tm) 0.1) (setq tm ) (setq tm tm)(setq p3 (list (+ x 140) (+ y 266) p4 (list (+ x 11
8、3) (+ y263)(setq s1 (ssget _c p3 p4 (8 . tk) (0 . text) (if s1 (progn (setq en1 (entget (ssname s1 0)(setq en1 (subst (cons 1 tm) (assoc 1 en1) en1)(entmod en1) )(setq p5 (list (+ x 135) (+ y 260) p6 (list (+ x 115) (+ y258)(setq s5 (ssget _c p5 p6 (8 . tk) (0 . text) (if s5 (progn (setq en5 (entget
9、 (ssname s5 0)(setq en5 (subst (cons 1 fth) (assoc 1 en5) en5) (entmod en5) ) )du_nextname.lsp 文件只有一个 c:du_nextname 函数, 函数可实现的功能是读取当前工作目录中所有的dwg 文件,查找相对当前已打开的图形文件的下一个图 形文件的名称, 在当前工作目录中制作一个文件名为 iopen.scr 的脚本文件,脚本文件内容为用“open”命令打 开下一个图形文件,用“script”命令执行图形批处理.scr 文件内容。编写文件名为 iopen.scr 的脚本文件是整个图 2 原始图件样图图
10、 3 批处理后的图件样图批处理过程的关键所在,需要在 iopen.scr 中用“open”命令打开下一个图形文件。因为 autocad 二次开发中定制的open 函数是用来读文件的,不能当成 autocad 内置命令函 数 open 来打开一个图形文件。要用“open”命令打开一个图 形文件只能在脚本文件中以向命令行中输入命令的形式打开,而用“script”命令执行图形批处理.scr 文件内容可以实 现。c:du_nextname 函数代码如下:(defun c:du_nextname (/ ss pt x y j0 tm)(setq path (getvar dwgprefix) dwg_n
11、ame (getvar dwgname)(setq aadwgn (vl- directory- files path)(setq ii 0 idwgn () ) (repeat (length aadwgn) (setq adwgna (nth ii aadwgn)(if (= .dwg (vl- filename- extension adwgna)(setq idwgn (cons adwgna idwgn) (setq ii (+ ii 1) ) (setq idwgn (reverse idwgn) (setq n 0 m 0) (repeat (length idwgn) (set
12、q aaa (nth n idwgn) (if (= aaa dwg_name) (setq m (+ n 1)(if (= m (length idwgn)(command ._vbastmt thisdrawing.close true ) (setq n (+ n 1)c:f_close 文件定义一个 c:f_close 函数,函数功能是关闭上一个图形文件,只保留当 前图形窗口。 c:f_close 函数代码如下:(defun c:f_close(/ acadobj docdocs) (setq acadobj (vlax- get- acad- object) (setq docs (
13、vla- get- documents acadobj)(setq doc (vla- get- activedocument aca dobj)(vlax- for d docs (if (not (equal doc d) (if (= (vla- get- saved doc) :vlax- true)(vla- close d) (vla- close d :vlax- true)图形批处理.scr 文件,文件包含的内容是需要对每个当前图形发布的命令集合。图形批处理.scr 代码如下:(load d:/f_close.lsp) f_closelsp) g_tfmc(load d:/g_
14、tfmc.(load d:/du_nextname.lsp) du_nextname scriptiopen这个文件内容还可以根据其他操作需要,在f_close 和 du_nextname 之间增加相应的操作内容。(3)第三部分是在当前图形文件中,向命令行 输入“script”命令,选择图形批处理.scr 文件对当前 图形文件进行批处理,以嵌套的形式实现对当前图形进行文字注记修改,编写 iopen.scr 文件和关闭上 一个图形文件的操作过程。批量 cad 图形文件文字注记修改2实例以广东郁南县都城镇标准地籍分幅图图名文 字注记修改为例,按程序设计的步骤要求:(1)先打开都城镇图幅接合表.dw
15、g, 在命令行中输入(load d:/du_tm.lsp ) 加载 du_tm.lsp 程序,然后输入du_tm 执行函数命令。命令执行结束后,即可在 d 盘根 目录下查找到图幅信息.txt 文件。(2)打开需要修改的标准分幅图,在命令行中输入“script”命令,然后选择图形批处理.scr 文件,程序即会 自动运行。程序运行前后的效果对比如图 2、图 3 所示。修改。这种批处理方法适用于任何的 cad 版本,用户可以根据不同的需求,用 autolisp 语言对 cad 图形中的 点、线、文字注记、块、图层等对象进行添加、修改、删除 等操作,也可以对图形进行输出、打印、另存等操作,最 后以脚本
16、文件加载 autolisp 程序、运行程序或以 cad 命令的形式实现 cad 图形文件的批量处理。上述用 autolisp 语言与脚本文件配合使用实现批量 cad 图形 文件的文字注记自动修改的思路和方法,在实际生产过 程中非常实用,可供各行各业使用 autocad 软件的技 术人员参考。参 考 文 献结语3autolisp 语言是 autocad 软件提供的二次开发工具,它的特点是:可以随意地引用和重新组合 autocad 功能,访问和使用 autocad 的数据库。如果在上述程序 增加一个修改标准分幅图邻接图表的函数,并在图形批处理.scr 脚本文件中相应增加加载和执行这个函数的 命令,
17、即可在一次批量处理过程中实现多个项目内容的1 gb/t20257.1- 2007,国家基本比例尺地图图式第一部分 1:500、1:1000、1:2000 地形图图式s2 陈伯雄,冯伟.visual lisp 程序设计技巧与范例m.北京:人民邮电版社,2002.(上接第 32 页) 锌矿床带位于前泥盆纪隆起与泥盆纪沉降的边缘。而该区老厂短轴背斜的核部即为寒武纪隆 起,其西部正好是兴坪潮田泥盆石炭纪沉降区,并据区调报告,区内思的西北部一带在中泥盆世正好是坳陷的沉降中心,其背景条件与邻近的凡口铅锌矿极为相 似。(2)区内的思的龙门界正断层、全会凉伞顶 正断层和旺塘村兴坪逆断层主要发育于中晚泥盆世 地
18、层中,共同构成了一个较完整的同生断裂系统,与喷 流沉积型铅锌矿形成的构造模型极为吻合,这为该区 喷流沉积型铅锌矿的形成提供了完整的构造体系。(3)据已有资料显示,区内的岩体和矿床中的矿物 成分,无论是在开采的各个矿床还是新寨花岗岩体,普 遍伴生有大量的重晶石矿物,钡含量很高,这是形成喷 流沉积型铅锌矿的重要标志(属于全球性的通用标志)。(4)根据喷流沉积型铅锌矿形成的构造模型,位 于同生断层较高部位的第一、第二台阶,形成的主要是 与次级断裂有关,并伴生重晶石的陡产状充填交代型 脉状矿化,位于最下部的第三台阶的碳酸盐岩中才是 产出规模和厚度都较大的层状、似层状铅锌矿体的有 利部位。而该区的老厂铅锌矿、宝塔龙多金属矿、燕子台阶次级断层带内,与标准模型很吻合。通过模型参照显示该矿田西部的思的以西地段(1 号靶区)以及潮田一带的坳陷区(2 号靶区)(见附图)极有可能存在层状、似层状铅锌矿化体,应引起大家的高度重视和进一步做调查研究。参 考 文 献1 陈毓川.桂北地区矿床成矿系列和成矿历史演化轨迹m.南 宁:广西科学技术出版社,1995.219- 225.2 徐开礼,朱志澄.构造地质学m.北京:地质出版社,2006.164-165.3 程小久,翟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高科技厂房电气系统安装与优化合同
- 毕业生就业保障与就业培训合作协议
- 跨国公司内部员工保密及离职竞业禁止实施协议
- 公共机构节能办公用品采购项目合同
- 产业园智慧城市建设合作协议
- 情感调解合同情侣矛盾调解与情感修复协议
- 草莓种植基地与民宿合作合同
- 汽车抵押贷款保险合同范本
- 车身广告租赁与绿色出行推广合作协议
- 尿常规红细胞临床意义解析
- 钢结构阁楼合同范例
- 广东惠州人文介绍
- 职业病分类与目录
- 初三中考英语高频词汇单选题100道及答案解析
- 全国扶贫开发信息系统业务管理子系统用户操作手册20171110(升级版)
- 造价咨询预算评审服务投标方案(技术方案)
- 4.1自由扩散和协助扩散课件高一上学期生物人教版必修1
- 2024至2030年马赛克壁画项目投资价值分析报告
- 门窗安装施工安全标准方案
- 外卖代理授权合同范例
- 气压传动课件 项目一任务二 气动剪切机工作回路的搭建与调试
评论
0/150
提交评论