去年刚开始参加工作时,结合公司的现状,自己写了一段AutoLisp程序。功能很简单,适用环境可能不广,但是对我来说已经很够用了,所以部门的很多同事经过我的介绍后也都在使用。以后有空可能会将代码写得更强壮一点。
问题情景描述:从proe中将3D导出为dwg的工程图格式,然后到AutoCAD的模型空间进行1:1的等比例标注。根据实物的尺寸不同,相应的标注比例、默认的文字大小、全局线性比例等都要进行调整,每次都进行手工调整岂不是很麻烦?
解决办法:可以根据与导出模型大小搭配的图框的缩放比例来自动调整相关参数。比如,我的3D实物比较大,那导出的工程图尺寸也会比较大,相对应的公司图框也会比较大。那么,根据图框的放大比例,通过lisp语言来实现自动调整相关参数。
使用条件:
1、图框是块,不允许炸开;
2、图框X方向与Y方向的放大缩小比例一样;
(defun c:gyr () ;定义全局函数gyr
(setvar "cmdecho" 0)
(if (setq ss (ssget "X" '((0 . "INSERT") (2 . "guyiren_company"))))
;将guyiren_company替换为相应的图框名字
(progn
(setq ent (entget (ssname ss 0))
sx (cdr (assoc 41 ent)) ;x方向比例大小为sx
;sy (cdr (assoc 42 ent)) ;y方向比例大小为sy
;sz (cdr (assoc 43 ent)) ;z方向比例大小为sz
)
;加入判断x,y,z轴的放大比例是否一致的代码(待加)(setq s1 (* sx 5))
(setq s2 (* sx 2.5))
(setvar "ltscale" s1) ;全局线性比例,为图框缩放比例的5倍
(setvar "dimscale" sx) ;标注文字大小,与图框缩放比例一致
(setvar "textsize" s2) ;文字高度大小,为图框缩放比例的2.5倍
(setvar "dimasz" sx) ;标注箭头大小,与图框缩放比例一致
;自行添加其他相应参数……
(princ "全局线型比例为:") (princ s1) (princ "标注全局比例为:") (princ sx) (princ "全局文字高度为:")(princ s2)
)
)
(princ)
)
完成之后,将该代码文件添加到cad的autolisp启动组里面,这样每次cad一启动就会自动读取该程序。在调整好图框的情况下,输入快捷键gyr即可(快捷键可以自己修改)。
代码是初学lisp的我写的,大牛轻拍砖,还望多指教啊。
学习了,鸟哥的主题,哈哈
谢谢楼主,辛苦
怎么用不了啊楼主
怎么用?