首页 » 软件优化 » 写出自己的cad插件(插件自己的函数变量语句)

写出自己的cad插件(插件自己的函数变量语句)

落叶飘零 2024-11-23 05:16:41 0

扫一扫用手机浏览

文章目录 [+]

本文适合刚刚开始学习lisp,尝试写出自己的cad插件的读者。
对于资深的插件开发人员或者专业的软件工程师来说,本文的某些观点、术语可能很不准确,欢迎批评指正。

最近收到不少朋友的私信,询问cad插件的事情,想自己写插件,感到无从下手。
我的建议是学习lisp,因为autolisp简单易学还跨平台,几乎可以兼容现有的各种主流商业cad,如bricscad、浩辰、中望。
相对而言,vba和.net要复杂得多入门起来更加困难,写出来的cad插件通用性也不如lisp。

对于正在学习或刚刚开始学习lisp的朋友,有以下3点具体建议,做到了基本上就可以写出能正常运行的cad插件了。

写出自己的cad插件(插件自己的函数变量语句) 软件优化
(图片来自网络侵删)
搞清楚需求,明确插件的功能

需求问题其实是一个很复杂、很困难的问题,某种程度上可能永远也无法搞清楚需求,但是这个是最基本的、无法绕开的问题,试想,没有需求的话费时费力写cad插件干啥呢?

我就经常遇到这样的情况。
闲鱼上经常有朋友发来消息,说想要定制cad插件,然后就跟他/她吧啦吧啦聊天,帮他分析需求。
往往是花了十几二十几分钟时间,聊天、分析、梳理之后,发现根本不需要做插件,使用cad内置功能再加上优化工作流程,辅之以左手键之类的快捷命令,就能搞定他/她的问题了。

那么,怎么搞清楚需求,进而明确插件的功能呢?

简单来讲,重现一遍自己的手动操作,分析手动操作的每个步骤、环节就可以了。
对于高频、重复的步骤和环节,就是可以考虑做成cad插件,让电脑代劳的,电脑无法代劳的采用人脑去完成。

话说回来,真就有人无法重现自己的手动操作,这一类朋友可能只能寻求他人的帮助了,比如找人定制插件。

学会使用vl-cmdf

vl-cmdf是autocad内置的一个调用cad命令的函数。
比如:

(vl-cmdf "line" "0,0,0" "1000,0,0" "")

这个语句就是使用vl-cmdf函数,调用cad命令 line,画一条(0,0,0)点到(1000,0,0)点的直线。

能调用cad命令的函数,autocad还提供了command 和command-s,command-s在2012版及之后的版本中可用。
从通用性上来讲,command函数是通用性最强的,不挑autocad的版本,支持lisp插件的其他商业cad软件也都支持这个函数。

考虑到各cad软件的实际的市场占有率状况,这个小节的标题就用了vl-cmdf函数,毕竟autocad几乎是一家独大。
推荐使用vl-cmdf,还有另外一个原因,vl-cmdf的性能远高于command和command-s,当执行命令的语句在几十几百条的时候就能明显感觉到性能的差异了。

vl-cmdf的用法,从前面画直线的语句就可以略知一二了,它跟手动输入命令在cad里边执行几乎是一样的。
注意,是几乎一样,细节上还是有差别,这里不展开讲,以后有机会再详细写写。

总之,在cad里边画图的时候是怎么操作的,把每个步骤、环节的参数直接写到vl-cmdf函数后边就可以了,然后执行这条lisp语句,就能像自己动手操作一样完美重现把图画出来了。
比如画一个圆:

(vl-cmdf "circle" "0,0,0" "1000" "")

上面这条lisp语句,就是在(0,0,0)点画一个半径为1000的圆。
是不是已经感觉学会写插件了?

使用局部变量

cad插件的lisp代码写到一定程度之后,就会考虑把自己的lisp插件做成可以直接在cad命令行调用的形式,比如有个非常流行的插件,输入Y 就能打开使用。
怎么才能做到呢?把lisp语句写进函数就可以了。

(defun c:xy() (vl-cmdf "line" "0,0,0" "1000,0,0" "") (vl-cmdf "circle" "0,0,0" "1000" ""))

上面这段lisp代码,就定义了一个名叫c:xy的函数,在cad命令行输入xy,就会自动执行画直线和画圆的操作了。

那么假如我要在原点以外的地方画线画圆,是不是要每个不同的点写一个不同的函数呢,能不能直接在屏幕上选取坐标点呢?当然是可以的,引入一个变量保存选取的点坐标就行了。

(defunc:xy(/pt1)(setqpt1(getpoint))(vl-cmdf"line"pt1"1000,0,0""")(vl-cmdf"circle"pt1"1000"""))

上面这个函数,运行之后,cad会提示选取一个点,选取之后就会用那个点坐标来画线画圆了。
这个函数里边的pt1,就是用来保存点坐标的变量,把它写进函数名后面的括号内,前面加个斜线和空格就表示它是一个局部变量,只是在函数c:xy内部起作用的,函数以外是不起作用的。

在autolisp里边,和局部变量对应的就是全局变量,全局变量就是到处都起作用的。
全局变量和局部变量的相关知识通过搜索引擎能很方便地获取到,这里也不展开讲了。

只讲一个原则,任何时候,都要尽可能使用局部变量,少用全局变量,最好不用全局变量。

结语

谢谢您的阅读。

能看到这里的朋友,估计已经学会了怎么写出自己的第一个lisp插件了,没写出来的话,把前文的lisp代码复制到自己的cad里边跑一遍试试吧。

标签:

相关文章

无愧优质偶像(驰援偶像多个集结无愧)

据悉,青年演员肖战携手吴磊、黄渤、佟丽娅等多位艺人联合集结救援队驰援河北涿州,不仅如此,大家还捐赠了非常多专业设备和生活物资,帮助...

软件优化 2024-12-24 阅读441 评论0

开始免费报名!(时代基地分赛区人说创新)

时代是创造出来的清控创新基地邀请每一位敢想敢拼的创造者参加第二季时代新人说大型讲述活动○○实现你的讲述梦想主办单位中共太原市委宣传...

软件优化 2024-12-24 阅读756 评论0

一起来学习(机井灌溉控制系统查询农田)

历史数据查询: 报警查询:设备异常、余额 不足等。 事件查询:机井开泵、关泵相关记录等。 操作查询:开 卡、充值、补卡等信息。 用...

软件优化 2024-12-24 阅读334 评论0

一共6步搞定!(地图数据最简单制作搞定)

之前曾给大家介绍过几种制作数据地图的方法。不过这次,我要分享一个更为直接简单的方法!从导入数据到出图,一共6步搞定!关于数据地图的...

软件优化 2024-12-24 阅读686 评论0

到底咋回事?(租房柔性房管所儿子申请)

杨先生:说给我改成两套公租房,但不愿返还我多交的房租9月2日,家在礼泉的杨先生向华商-二三里资讯反映称,他家共5口人,于2014年...

软件优化 2024-12-24 阅读614 评论0

落户这里(项目选址青龙公示投资)

武汉海康威视科技有限公司海康威视武汉智慧产业园(一期) (平面方案)批前公示公布,这意味着传说中的海康威视产业基地将正式在江夏动工...

软件优化 2024-12-24 阅读667 评论0