欢迎光临散文网 会员登陆 & 注册

别执念ChatGPT,基础更重要,来看看怎么用lisp编写一个查询对象周长的插件

2023-03-30 14:02 作者:Heart小初  | 我要投稿

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

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

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

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

如果不想折腾,想省时间,还没有号的可以看看这里:ai.sqxwsy.com/

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

  1. (setq ch1 (strcat "长度:" ch "mm"))   ;输出长度

  2. (setq ch2 (getpoint "\n屏幕单击插入点")) ;屏幕中指定插入点

  3. (entmake (list '(0 . "text") ;建立文字图元属性列表,文字,插入点,内容,字高

  4. (cons 10 ch2)

  5. (cons 11 ch2)

  6. (cons 1 ch1)

  7. '(40 . 350)

  8. )

  9. )


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

代码如下:

  1. (defun C:zc()

  2. ;查询对象周长

  3. (setq a (vlax-ename->vla-object (car (entsel "\选择对象: "))))

  4. (setq b (vla-get-length a))

  5. (setq c (rtos b ))

  6. ;将周长插入到图纸中

  7. (setq ch1 (strcat "周长:" c "mm"))   ;输出周长

  8. (setq ch2 (getpoint "\n屏幕单击插入点")) ;屏幕中指定插入点

  9. (entmake (list '(0 . "text")       ;建立文字图元属性列表,文字,插入点,内容,字高

  10. (cons 10 ch2)

  11. (cons 11 ch2)

  12. (cons 1 ch1)

  13. '(40 . 350)

  14. )

  15. )

  16. (prin1)  

  17. )


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

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

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

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

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

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

具体效果详见动图:

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


别执念ChatGPT,基础更重要,来看看怎么用lisp编写一个查询对象周长的插件的评论 (共 条)

分享到微博请遵守国家法律