继续分享关于Visual Lisp开发的程序,今天的知识点是读、写文件。不知道天天使用AutoCAD画图作为设计师的你,有没有注意到很多图型是规则的、构成其尺寸的数据都是标准的、图块的管理复杂且不易操作……,还有些情况需要将设计的情况或统计数据汇总输出到外部文件,诸如此类。
有没有想过,在咱们自己开发一个程序,通过浏览标准数据库就能实现一键绘制标准件、通用件、常用件并且可以输出总结资料到外部文件—这里的数据库也不过是txt或者bat格式的文件。
OK,先来看一下今天要分享的程序吧。
这是一个槽钢绘制程序的读取数据部分,槽钢是钢结构中常用的型材,在CAD设计中经常用到,cgh.lsp就是为绘制槽钢三视图而设计的(只是作为设计进阶的兴趣而已,网上有很多插件都可以很好的实现这个功能)。数据文件如图
读取子程序中cond条件判断没有什么新奇的了吧?相关读取的函数就是(open file mode),我们这里是读取的模式“r”,返回的是打开文件的代码。
读取文件中一行的程序是(repeat 行号 (read-line 代码)),代码就是open函数返回的文件代码,行号就是你需要读取的数据的行数。
小贴士:需要注意的是在控制台或者命令行进行调试时注意行数的概念,因为文件没有关闭,在进行read-line函数执行时会从上一次的行码为0开始计数进行读取,如果调试时需要使用正确的行码,需要关闭ff文件。
返回的是由那一行数据组成的字符串,应使用(substr 字符串 起始 长度)读取需要的数据,比如把第2行的40取出来如下
Atof函数是把字符变为实数型。
再说一下写数据,这里分享的是统计选择集中圆、直线、圆弧的数量。
主程序是选择集及相关的操作函数,子函数是输出函数,getfiled可以显示制定目录中具有指定扩展名的有效文件的列表,通过这个函数LISP语言可以访问CAD的文件对话框,有四个参数,一个是标题,一个是路径,一个是扩展名,最后一个是操作数。或者直接用open函数指向一个数据库文件。(write-line)函数和(read-line)类似,也是逐行书写。最后也需要关闭文件(close)。
小贴士:无论读还是写,数据库中格式很重要,就是给每种类型数据赋予的位数在每行书写时应统一。否则会乱,也会影响后续数据的处理。
领取专属 10元无门槛券
私享最新 技术干货