怎么用lisp编写一个可以查询对象周长的插件

周站长 图文教程评论2,866字数 1170阅读3分54秒阅读模式
CAD自学网会员

插件会提高绘图效率,这是毋庸置疑的。我们总希望,它能更快速,更简单一点,甚至,更符合自己要求一点。

之前我们编写过一个将测量对象长度,然后将对象长度数值结果可以直接插入到图纸中的代码。那么沿用上一次的思路,这次我们编写一个可以查询对象周长,并将周长数值可以插入到图纸中的。

lisp代码针对同一个问题,并不唯一,存在不同的代码但都可以解决同一个问题。

如下图,是之前编写的测量对象长度,并插入到图纸中的代码。那么这其中有些代码是我们本文也可以继续沿用的。

怎么用lisp编写一个可以查询对象周长的插件

即插入数值到图纸中的代码行。

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

那么,我们要解决的就是测量对象周长的代码了。

怎么用lisp编写一个可以查询对象周长的插件

代码如下:

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

这里着重说一下查询周长的几行代码。

第一行:entsel是为了读取图形的内容,car是获取图形的图元号。可理解为entsel把图形转换成了代码,car是读取了图形在代码中的名字。

vlax-ename->vla-object这个是lisp函数,实现的是,将图形变成了另一种形式,即vla对象。之所以转变成vla对象是,为了第二行的代码,为了使用读取图形周长数值的函数做铺垫。

第二行:vla-get-length函数功能是,获取图形的周长数值。根据函数名也可以推出含义,get获取,length长度。合起来就是读取长度。

第三行:rtos是为了将数值转换成字符串。以便于之后输出字符串。因为字符串才能被输出。

之后的插入周长数值到图纸中的几行代码,就比较容易理解了。即指定插入点,指定插入的周长数值的文字字高等。

具体效果详见动图:

怎么用lisp编写一个可以查询对象周长的插件

以上,你学会了吗?代码其实,就是将语言变成了另一种语言,变成了软件能听懂的语言而已。所以,如果社交感觉吃力,很可能因为你还没找到,对方能够听懂的语言而已。

(完)

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

发表评论

匿名网友

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

确定