|
不知大家在设计时是否经常遇到需要将一对象旋转到一个不确定的角度的情况,比如说画疏排水系统时,管子尺寸和箭头想沿着管线倾斜的管线画,但又不确定度数,很难对齐.本人设计了一个程序,可以将处于任何角度的对象旋转至与倾斜的管线保持一致.
程序使用方法:
在CAD菜单栏: 工具->Autolisp->visual lisp编辑器,新建一个lisp文件,将本帖程序内容复制到lisp文件,保存。关闭编辑器。再继续在CAD菜单栏:工具->Autolisp->加载应用程序,加载刚刚保存的lisp文件后关闭。在CAD命令行输入rre命令,然后按提示执行即可。以后的每次使用只需加载就可使用。
使用时,按照提示执行,需要说明的是指定旋转角度的起点和终点时,只需要在倾斜的管线上随意点两点即可,相当方便.
******************************************
;旋转对象至指定角度
;命令:rat
;设计:sjfwhcy
(defun c:rat()
(princ "\n请选择块或文字对象:")
(setq ssnet(ssget '((-4 . "<or")
(0 . "text")
(0 . "attdef")
(0 . "insert")
(-4 . "or>")
)
)
)
(setq number(entget(ssname ssnet 0)))
(setq data(cdr(assoc 50 number)))
(setq data1(atof(angtos data 0)))
(setq pt0(cdr(assoc 10 number)))
(princ "指定对象的放置点:")
(setq pt1 (getpoint))
(princ "\n指定旋转角度的起点")
(setq pt2 (getpoint))
(princ "\n指定旋转角度的终点")
(setq pt3 (getpoint))
(setq ssangle (angle pt2 pt3))
(setq ss-angle (angtos ssangle 0))
(setq ssangle1 (atof ss-angle))
(setq ssangle2 (- ssangle1 data1))
(command "copy" ssnet "" pt0 pt0)
(command "move" ssnet "" pt0 pt1)
(command "rotate" ssnet "" pt1 ssangle2)
(princ)
) |
|