江西理工大学2012届专科生毕业设计(论文)
杂,步骤繁琐,感觉没有手工绘图来的快捷方便,从而影响绘图工作者的效率。为了解决这问题,我们可以Visual Lisp编写成的相对应程序。
五角星模块编写的程序如下: 方案一: (defun c:wu()
(command \ ;将线型设定为红色 (setq cen (getpoint \请指定五角星中心点\(setq r (getreal \请输入五角星外接圆半径:\
(setq p1 (polar cen (* pi 0.5) r)) ;对五角星的各个点进行设定和计算 (setq p11 (polar cen (* pi (/ (+ 90 (* 36 1)) 180.0)) (* r 0.381966))) (setq p2 (polar cen (* pi (/ (+ 90 (* 72 1)) 180.0)) r))
(setq p21 (polar cen (* pi (/ (+ 90 (* 36 3)) 180.0)) (* r 0.381966))) (setq p3 (polar cen (* pi (/ (+ 90 (* 72 2)) 180.0)) r))
(setq p31 (polar cen (* pi (/ (+ 90 (* 36 5)) 180.0)) (* r 0.381966))) (setq p4 (polar cen (* pi (/ (+ 90 (* 72 3)) 180.0)) r))
(setq p41 (polar cen (* pi (/ (+ 90 (* 36 7)) 180.0)) (* r 0.381966))) (setq p5 (polar cen (* pi (/ (+ 90 (* 72 4)) 180.0)) r))
(setq p51 (polar cen (* pi (/ (+ 90 (* 36 9)) 180.0)) (* r 0.381966)))
(command \ ;对设定的各点 (command \ 进行连线 (command \(command \(prin1) )
演示上述程序,首先我们将AutoCAD软件打开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:wu的命令,系统会要求我们指定五角星的中心点的位置,输入五角星外接圆半径,按“Enter”键,五角星就会自动的出现在用户选定的位置上。如下图所示:
图4.2.3 程序执行示意图
19
江西理工大学2012届专科生毕业设计(论文)
图4.2.4 五角星模块的实现
方案二 (defun c:wu2()
(setq cen (getpoint \请指定五角星中心点\(setq r (getreal \请输入五角星外接圆半径:\(setq xp1 (polar p1 (* 0.5 pi) 15)) (setq xp2(polar p1 (* (+ 0.5 0.4)pi) 15)) (setq xp3(polar p1 (*(+ 0.5 0.8) pi) 15)) (setq xp4(polar p1 (* (+ 0.5 1.2) pi) 15)) (setq xp5(polar p1 (* (+ 0.5 1.6) pi) 15)) (setq xp11(polar p1(* pi 0.7) 5.5) xp21(polar p1(* pi 1.1) 5.5) xp31(polar p1(* pi 1.5) 5.5) xp41(polar p1(* pi 1.9) 5.5) xp51(polar p1(* pi 0.3) 5.5) )
(setq sp1 (polar p1 (* 0.5 pi) 13)) (setq sp2(polar p1 (* (+ 0.5 0.4) pi) 13)) (setq sp3(polar p1 (*(+ 0.5 0.8) pi) 13)) (setq sp4(polar p1 (* (+ 0.5 1.2) pi) 13)) (setq sp5(polar p1 (* (+ 0.5 1.6) pi) 13)) (command \
(command \ (command \
(command \ (command \
20
江西理工大学2012届专科生毕业设计(论文)
(command \ (command \ (command \
(command \(command \(command \(command \ (command \(prin1) )
上述程序与方案一相比,主要区别在于程序段执行后,图形有些变化,立体感更强烈些。
演示上述程序,首先我们将AutoCAD软件打开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:wu2的命令,系统会要求我们指定五角星的中心点的位置,输入五角星外接圆半径,按“Enter”键,五角星就会自动的出现在用户选定的位置上。如下图所示:
图4.2.5 程序执行示意图
图4.2.6 五角星模块的实现
方案三 (defun c:wu3()
(command \
(setq cen (getpoint \请指定五角星中心点\(setq r (getreal \请输入五角星外接圆半径:\
21
江西理工大学2012届专科生毕业设计(论文)
(command \(setq xp1 (polar p1 (* 0.5 pi) 15)) (setq xp2(polar p1 (* (+ 0.5 0.4) pi) 15)) (setq xp3(polar p1 (*(+ 0.5 0.8) pi) 15)) (setq xp4(polar p1 (* (+ 0.5 1.2) pi) 15)) (setq xp5(polar p1 (* (+ 0.5 1.6) pi) 15)) (setq sp1 (polar p1 (* 0.5 pi) 13)) (setq sp2(polar p1 (* (+ 0.5 0.4)pi) 13)) (setq sp3(polar p1 (*(+ 0.5 0.8) pi) 13)) (setq sp4(polar p1 (* (+ 0.5 1.2) pi) 13)) (setq sp5(polar p1 (* (+ 0.5 1.6) pi) 13)) (command \ (command \ (command \ (command \ (command \ (command \
(command \ \ sp1 sp2 sp3 sp4 sp5 p1 \ (command \(prin1) )
方案三与方案一、二相比,主要区别在于程序段执行后,图案得到填充了,整体感更浓厚。
演示上述程序,首先我们将AutoCAD软件打开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:wu3的命令,系统会要求我们指定五角星的中心点的位置,输入五角星外接圆半径,按下“Enter”键,五角星就会自动的出现在用户选定的位置上。如下图所示:
图4.2.7 程序执行步骤
22
江西理工大学2012届专科生毕业设计(论文)
图4.2.8 五角星模块的实现
4.2.3 印章轮廓的实现
机械绘图中我们经常要绘制特殊的图形,需要在特殊的图案上书写,标注等,就拿书写圆弧字来说,使用手工绘图时可以方便很多,然而在AutoCAD中我们要做出这样的效果,就必须计算好字符之间的间距,字符的旋转角度。虽然这些都是琐碎的小事,可如果每输入一个字符都需要进行这些操作就会显得很是麻烦,而且无法提高工作效率,严重影响着绘图圆们的制图速度和制图质量。
下面的程序就可完成上述的操作: (defun C:yz()
(setq p1 (getpoint\请输入定位点\ (setq pp1(polar p1 (* 0.75 pi) 40)) (setq pp2(polar p1 (* -0.25 pi) 40)) (setq xx (getstring\请输入学校名称\ (command \ (command \ (setq pwz (polar p1 (* 1.5 pi) 20))
(command \ wz \ (setq cd (strlen xx)) (setq cd (/ cd 2)) (setq cd1 (/ cd 2) ) (setq i 1) (setq ii 0) (if (=(rem cd 2) 0) (progn
23