插件会提高绘图效率,这是毋庸置疑的。我们总希望,它能更快速,更简单一点,甚至,更符合自己要求一点。
之前我们编写过一个将测量对象长度,然后将对象长度数值结果可以直接插入到图纸中的代码。那么沿用上一次的思路,这次我们编写一个可以查询对象周长,并将周长数值可以插入到图纸中的。
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) ) )
那么,我们要解决的就是测量对象周长的代码了。
代码如下:
(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是为了将数值转换成字符串。以便于之后输出字符串。因为字符串才能被输出。
之后的插入周长数值到图纸中的几行代码,就比较容易理解了。即指定插入点,指定插入的周长数值的文字字高等。
具体效果详见动图:
以上,你学会了吗?代码其实,就是将语言变成了另一种语言,变成了软件能听懂的语言而已。所以,如果社交感觉吃力,很可能因为你还没找到,对方能够听懂的语言而已。
(完)


评论