长度和直径 × 直径 0.00 长度 0.00 确定 取消
4、 写出在AutoCAD编辑状态中运行函数tu时,在屏幕图形区和文本区显示结果。 (defun c: tu (/ pc1 pc2 r p1 p2 p3 p4)
(setq pc1 (list 50.0 50.0)) (setq pc2 (list 100.0 50.0)) (setq r 15.0)
(setq p1 (polar pc1 (/pi 2) r )) (setq p2 (polar pc1 (/(*pi 3) 2) r )) (setq p3 (polar pc2 (/pi 2) r )) (setq p4 (polar pc2 (/(*pi 3) 2) r )) (princ pc1 pc2 r p1 p2 p3 p4) (command “arc” p1 “c” pc1 p2) (command “arc” p4 “c” pc2 p3) (command “line” p1 p3 “”) (command “line” p2 p4 “”) )
文本行显示pc1 pc2 r p1 p2 p3 p4的值:(50.0 50.0)(100.0 50.0)15.0 (50.0 65.0)(50.0 35.0)(100.0 65.0)(100.0 35.0) 图形区显示:
5、 绘出在AutoCAD编辑状态中下述菜单文件在屏幕上显示的两级下拉菜单的内容。 * * *POP11 [螺纹]
[普通螺纹]^c^cptlw [――]
[梯形螺纹]^c^ctxlw [――]
[->管螺纹]^c^cglw [公制管螺纹]^c^cgzglw [<-英制管螺纹]^c^cyzglw 显示结果:
一级菜单 二极菜单 普通螺纹 ———— 梯形螺纹 ————
管螺纹 ▼ 公制管螺纹 英制管螺纹
五.编程题(14分) 1、用AutoLISP语言编写一个自定义函数。要求执行此函数时使用键盘输入一个矩形截面长和宽的值,然后自动绘出该矩形,并绘出剖面线。
(defun c: tuxing(/p1 p2 p3 p4 L w)
(setq p1 (getpoint “输入第一角点:”)) (setq w (getdist p1 “\\n宽度)) (setq p2(polar p1 0 L)) (setq p3 (polar p2(/pi 2) w)) (setq p4 (polar(p3 pi L)) (if(>w 40) (setq t1 1.5) (setq t1 0.6)) (command“pline ” p1 p2 p3 p4 “c”) (commang“hatch”“ansi31”t1 “0”“w”p4 p1 “”) (prinl) )
2、用AutoLISP语言编写一个名为“tuxing”的自定义函数。要求执行此函数时使用键盘输入一个圆的圆心坐标和半径值,然后自动绘出该圆和与该圆外切的正方形。
(defun C:tuxing (/p0 r p1 p2 p3 p4) 或:(defun C:tuxing (/p0 r p1 p2 p3 p4) (setq p0 (getpoint “\\n输入圆心坐标”)) (setq p0 (getpoint “\\n输入圆心坐标”)) (setq r (getreal “\\n输入圆的 半径”)) (setq r (getreal “\\n输入圆的 半径”)) (setq p1 (polar p0 0 (* 1.414 r))) (setq p1 (polar p0 (/ pi 4)(* 1.414 r)))
(setq p2 (polar p0 (/ pi 2) (* 1.414 r))) (setq p2 (polar p0 (/(* pi 3) 4) (* 1.414 r))) (setq p3 (polar p0 pi (* 1.414 r))) (setq p3 (polar p0(/(* pi 5) 4) (* 1.414 r))) (setq p4 (polar p0 (* pi 1.5)(* 1.414 r))) (setq p4 (polar p0(/(* pi 7) 4) (* 1.414 r))) (command “circle” p0 r) (command “circle” p0 r) (command “line” p1 p2 p3 p4 “”) (command “line” p1 p2 p3 p4 “”) ) )
(外切圆顶点在坐标轴) (外切圆顶点平行于坐标轴)
3、用AutoLISP语言编写一个名为“tuxing”的自定义函数,要求执行此函数时使用键盘输入一个圆的圆心坐标和半径值,然后自动绘出该圆和该圆同心的正方形(正方形对角线长度等于圆直径的2倍,且对角线为水平线) (defun c: tuxing (/p0 r p1 p2 p3 p4)
(setq p0 (getpoint “\\n输入圆心坐标”)) (setq r (getreal “\\n输入圆半径”)) (setq p1 (polar p0 0 (* r 2))) (setq p2 (polar p0 (/ pi 2) (* r 2))) (setq p3 (polar p0 pi (* r 2))) (setq p4 (polar p0 (/(* pi 3) 2) (* r 2))) (command “circle” p0 r)
(command “pline” p1 p2 p3 p4 “c”) )
4、用AutoLISP语言编写一个名为“圆管断面”的自定义函数。说明:此圆管断面函数的功能是自动画出一个如图所示的圆管断面图,即:此函数执行时,要求用户键入圆管的内径、外径以及圆管断面中心点在屏幕上的位置或坐标值,然后自动绘出该圆管断面图并绘出剖面线。
(setq L (getdist p1 “\\n长度”))
(defun c:圆管断面(/ pc1 p1 p2 p3 p4 r1 r2 a1 a2 a3)
(setq pc1(getpoint”\\n请给出圆管断面中心点:”)) (setq r1(getdist”\\n输入内孔半径:”)) (setq r2(getdist”\\n输入外孔半径:”)) (setq a1(/ pi 2)) (setq a2(/ (* 3 pi) 2)) (setq a3(+ r2 3.0)) )
6、 现有AutoCAD下的对话框文件hhh.dcl如下。请用AutoLISP语言编程定义一个名为“hhh”的自定义函数,hhh函数的功能是加载、
驱动、显示hhh.dcl所定义的对话框(即:此函数执行时,对话框hhh就出现在AutoCAD的图形屏幕上,供用户进行下一步的操作)。 Hhh : dialog{
Label=”热处理方法”; :popup_list{
Key=”test_popup_box”; Edit_width=20; Label=”热处理”;
List=”淬火\\n 调质\\n 回火\\n 正火\\n 退火”; } Ok_cancel; } 参考答案:
(defun c:hhh(/ dcl_id) )
(setq dcl_id(load_dialog “hhh.dcl”)) (if (not (new_dialog “hhh” dcl_id)) (exit) (action_tile “accept” “(done_dialog)”) (start_dialog) (unload_dialog dcl_id) (princ)
(setq p1(polar pc1 0.0 a3)) (setq p2(polar pc1 a1 a3)) (setq p3(polar pc1 pi a3)) (setq p4(polar pc1 a2 a3)) (command “circle” pc1 r1) (command “circle” pc1 r2)
(command “hatch” “ansi31” “1.0” “0.0” “all” “”) (command “line” p1 p3 “”) (command “line” p2 p4 “”)