编写lisp插件,实现计算封闭图形面积并输出在屏幕上

周站长 图文教程评论3,9572字数 1060阅读3分32秒阅读模式
CAD自学网会员

相信经过前几次的屏幕中插入对象长度、对象周长的代码编写,你应该对插入数值到图纸中的代码已经了然于心了。

那么,再次使用lisp实现一个我们更为常规,使用频繁的功能:查询封闭图形的面积,并将面积插入到图纸中。

根据前几次文章的插入数值到图纸中的代码,可以稍作修改用于面积插入,如下:

(setq ch1 (strcat "面积:" mj "mm2"))  ;输出长度
(setq ch2 (getpoint "\n屏幕单击插入点")) ;屏幕中指定插入点
(entmake (list '(0 . "text")  ;建立文字图元属性列表,文字,插入点,内容,字高
(cons 10 ch2)
(cons 11 ch2)
(cons 1 ch1)
'(40 . 350)
)
)

那么,只需要再编写以下测量对象面积的代码即可。综合两个代码,便可以实现lisp。

编写查询面积代码如下:

(setq a (vlax-ename->vla-object (car (entsel "\选择对象: "))))
(setq b (vla-get-area a))
(setq c (rtos b ))

代码解释如下:

第一行:通过entsel获取图形的程序语言,car读取图形的名字。vlax-ename->vla-object将对象转变成vla对象。以运行第二行代码。

第二行:vla-get-area函数功能是,获取图形的面积。稍微会写单词,就能读懂这个函数名,vla即vla对象,get读取,area对象的面积。

第三行:rtos即将数据转换为字符串,以服务输出代码。

将两种功能的代码结合,并定义lisp的引用快捷键即函数名为mj(面积的首字母)。那么便可得到完整的插件内容。

编写lisp插件,实现计算封闭图形面积并输出在屏幕上

(defun C:mj()
;查询对象面积
(setq a (vlax-ename->vla-object (car (entsel "\选择对象: "))))
(setq b (vla-get-area a))
(setq c (rtos b ))
;将周长插入到图纸中
(setq ch1 (strcat "面积:" c "mm2")) ;输出面积
(setq ch2 (getpoint "\n屏幕单击插入点")) ;屏幕中指定插入点
(entmake (list '(0 . "text")  ;建立文字图元属性列表,文字,插入点,内容,字高
(cons 10 ch2)
(cons 11 ch2)
(cons 1 ch1)
'(40 . 350)
)
)
(prin1)
)

代码运行结果,详见如下动图演示。

编写lisp插件,实现计算封闭图形面积并输出在屏幕上

以上,你有更加了解了lisp的运行呢?单独看这篇还是没能很好的理解的话,建议将之前的测量长度、测量周长,结合起来一起查看。你一定会有所收获。

(完)

CAD自学网公众号
微信扫一扫关注我,每天分享各种免费设计干货小技巧。
weinxin
我的微信
育设学堂服务号
微信扫一扫关注我,各种设计实战全套视频教程在线学。
weinxin
我的公众号
育设学堂建筑学院
周站长
  • 本文由 发表于 2023年3月26日 16:35:19
  • 转载请务必保留本文链接:https://www.cadzxw.com/53111.html
育设学堂CAD课程
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定