复杂形态钢结构设计培训班

首页 非解构-公众号 今天不想加班——Autolisp编程入门案例

今天不想加班——Autolisp编程入门案例

关于Autocad的lsp插件的魅力,设计师们应该已经在日常工作中体会到了,今天我们不仅要欣赏美,我们还要创造美。

Lsp插件是基于Autocad采用Autolisp语言进行二次开发的脚本,Autolisp属于解释性语言,用户编写的程序源代码直接由解释器解释并执行,在执行这种语言编写的程序之前不需要中间步骤,用户可以交互、独立于其他部分地试验或验证程序段或程序语句。

通俗点讲,Autolisp编程语言就是AutoCAD可以听懂的语言,与我们日常沟通的语言一样,编程语言也有自己的语法和词汇,编程就是用一门特定语言与计算机或软件进行交流。而autolisp一个显著的特点就是:表就是程序的本体,夸张的说就是Lisp中的一个列表—任何列表—都是一个准备运行的程序。啰啰嗦嗦这些,萌新对autolisp还是没什么概念,那接下来小编以一个LISP的小例子来展示LISP编程的一些入门操作。

自盘古开天辟地以来,模板图中不可见的梁线都是以虚线表示,但遇到洞口或板边界又是可见梁线,需以实线示意,这个简单呀:1、选择可见梁线;2、改变图层。既然这么简单,那我们就从简单的问题入手,看看如何在lisp中实现这个简单的步骤。还是一个中心思想:把我们的语言翻译成编程语言。

1:“这是我选择的梁线”

Vlisp能听懂的“选择”是函数:entsel;赋值是:setq,其后紧跟的是我小本本(变量名)。

那这句话翻译出来就是:

把这句话说给cad,在输入栏输入这句话发现输入栏提示:

鼠标光标变为选择状态

——AutoCAD听懂了!

这时点击就可以选择想要转变的线了。

而cad中图元都是有自己的名字,上一步的选择并没有说清楚这条线的样子(属性),所以要多说一句话,告诉我所选择的梁线的样子(属性):

我们掏出小本本(ss)记下来图元的名称和属性

对照cad里图层信息,可以找到这个梁线的图层信息储存在编号8的小括号里(列表)。

2、“换成我要的图层”

这一句虽然我们说出来跟上一句长度差不多,但是受限于Vlisp的“脑回路”(编程语言的语法与函数功能),这句话不能这么直接,需要委婉的告诉他,这句话需要拆分成下面三句话:

a.你看好了这是我想要更改的东西

(setq oldlayer (assoc 8 ss))

b.你看好了这是我想要改成的结果

(setq newlayer (cons 8 “new”))

c.你替换一下展示给我吧

(setq newen (subst newlayer oldlayer ss))

(entmod newen)

好了,话说完了,为了可以重复说这些话,加入一个while函数,那么上面的话再用Vlisp的defun函数就可以封装成cad中命令调用的lsp啦,格式如下所示,其中C:后面的内容就是在cad中的调用本lsp的命令。

加载lsp至cad,最终效果如下:

但是就就这么简单的一个功能却需要和autocad说这么多的话,交流过程太过曲折,那么可以换一种方式(类似于换一种语言)和autocad交流。通过调用vl-load-com函数来初始化ActiveX环境,这样就可以通过将图元转化成VLA对象,后续就可以采用ActiveX的方式与Autocad进行对话

注:查看VLA对象属性的函数名为(vlax-dump-object VLA-OBJECT)

这次真的的成为了两句话,殊途同归,测试一下效果:

这个简单的小lsp例子就说到这里,能转换一个图层就可以转换第二个、第三个……集成在一起就可以做一个批量转换图层的lsp,当我们需要将常用的某科、某M导出的图层转换为自己的图层时,就可以减少重复性的改图层工作,将不加班的精神贯彻落实。

扫码关注我们

猜你喜欢

风萧萧兮——单点脉动风AR模型的实现

即使不做加固设计,也应该了解的加固设计常识

如何教会房子学会自己设计自己的基础——当结构设计遇到遗传算法(二)

当结构设计遇到遗传算法,于是它学会了自己进化!

结构不只有眼前的CAD,还有python和秀发!

Python爬虫实战——从太平洋地震工程研究中心数据库自动下载地震波时程

“转自:非解构-公众号”上海结构设计圈仅限在上海从事结构设计的朋友们。

本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2019/08/7400a09bc5/

钢结构地图

上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部