PhantomFox 发表于 2012-4-27 11:46
持续关注学习中~~~~
你学习什么?
本帖最后由 cabinsummer 于 2012-4-27 20:53 编辑
snddd2000 发表于 2012-4-23 20:40 http://bbs.mjtd.com/static/image/common/back.gif
我试试,认真学习下dcl。回报mj。
两个半天一个晚上的学习,汇报结果。
程序不完整,一上手就是动态,对初学者有点难度,而且没有做出效果。
先给你一个对话框驱动的通用函数
(defun dlg_load (dlgfile tag initialize dlg_action / DLG_ID)
(if (> (setq DLG_ID (load_dialog (findfile (strcat dlgfile ".DCL")))) 0)
(progn
(if (new_dialog tag DLG_ID)
(progn
(initialize)
(dlg_action)
(setq result (start_dialog))
)
(princ "\nCan't display dialog")
)
(unload_dialog DLG_ID)
)
(princ "\nCan't open dialog")
)
)
初始化参数及控件函数
(defun bearing_ini ()
;(setq
;(set_tile
;(mode_tile
;;;
)
控件驱动函数
(defun bearing_act ()
;(action_tile
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
)
调用通用对话框函数
(dlg_load bearing BEARING bearing_ini bearing_act)
(if (= result 1)
(draw_bearing);;;画轴承
(princ "Bearing function cancelled!\n")
)
wwwbxd 发表于 2012-4-26 21:29 static/image/common/back.gif
我这里有一个轴承的数据库忘记在哪里弄的了挺全的
本人一直想做一个可是一看轴承的种类就晕了
常用的还用作用lisp程序吗 事先画好了做成块用的时候一粘贴多省事
(defun C:GB283 (/ pt0r2 r1 b0 ptxa0 a1 a2 a3 ax
aa px p1 p2 p3 p13p01p02 p14p4 p5
p6 p7 p8 p10p11 p12p9 p15 p16p17p18
tagrg rgkp03 osmo cmde ob
)
(setq pt0 (getpoint "\n请指定滚轴轴承中心插入点: "))
(setq r1 (* 0.5 (getreal "\n输入轴承内径<d>: ")))
(setq r2 (* 0.5 (getreal "\n输入轴承外径<D>: ")))
(setq b0 (* 0.5 (getreal "\n输入轴承宽度<B>: ")))
(setq osmo (getvar "osmode"))
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq ptx (polar pt0 0 b0))
(setq a0 (- r2 r1))
(SETQ a1 (/ a0 2))
(setq a2 (/ a0 4))
(setq a3 (/ a0 8))
(setq ax (cos (/ pi 12)))
(setq aa (/ (- b0 a2) ax))
(setq px (list (+ (car pt0) b0) (+ (cadr pt0) r1 a1)))
(setq p1 (list (car pt0) (+ (cadr pt0) r1)))
(setq p2 (list (+ (car pt0) b0 b0) (+ (cadr pt0) r1)))
(setq p3 (polar p2 (/ pi 2) (* 3 a3)))
(setq p13 (polar p2 (* 0.5 pi) a0))
(setq p01 (polar p1 (* (/ pi 4) 5) 5))
(setq p02 (polar p13 (/ pi 4) 5))
(setq p14 (list (car pt0) (+ (cadr pt0) r2)))
(setq p4 (polar p3 pi (- b0 a2)))
(setq p5 (polar p4 (* 3 (/ pi 2)) a3))
(setq p6 (polar p5 pi a1))
(setq p7 (polar p6 (/ pi 2) a3))
(setq p8 (polar p7 pi (- b0 a2)))
(setq p10 (polar p6 (* 0.5 pi) a1))
(setq p11 (polar p10 0 a1))
(setq p12 (polar p11 (/ pi 12) aa))
(setq p9 (polar p10 (* (/ pi 12) 11) aa))
(setq p15 (polar px pi (+ 3 a2)))
(setq p16 (polar px 0 (+ 3 a2)))
(setq p17 (polar px (/ pi 2) (+ 3 a2)))
(setq p18 (polar px (* 3 (/ pi 2)) (+ 3 a2)))
(setq p03 (list (- (car pt0) 5) (- (cadr pt0) r2 5)))
(setq ob (ssadd))
(command "line" p12 p11 "")
(setq ob (ssadd (entlast) ob))
(command "line" p4 p3 "")
(setq ob (ssadd (entlast) ob))
(command "line" p7 p8 "")
(setq ob (ssadd (entlast) ob))
(command "rectangle" p1 p13)
(setq ob (ssadd (entlast) ob))
(command "rectangle" p5 p10)
(setq ob (ssadd (entlast) ob))
(command "line" p9 p10 "")
(setq ob (ssadd (entlast) ob))
(command "line" pt0 p1 "")
(setq ob (ssadd (entlast) ob))
(command "line" p17 p18 "")
(setq ob (ssadd (entlast) ob))
(command "line" p15 p16 "")
(setq ob (ssadd (entlast) ob))
(command "mirror" ob "" pt0 ptx "N")
(setvar "cmdecho" cmde)
(setvar "osmode" osmo)
(princ)
)
(defun C:GB281 (/ osmo cmde pt1 r1 r2 b0 a0 ax1 rx r00 ax2 rxx pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 pt15 pt16 pt17 pt18 pt19 pt20 pt21 pt22 pt23 pt24 pt25 pt26 pt27 pt28 pt29 ob)
(setq osmo (getvar "osmode"))
(setq cmde (getvar "cmDEcho"))
(setvar "cmdEcho" 0)
(setvar "osmode" 32)
(setq pt1 (getpoint "\n指定轴承插入位置点 ;"))
(setvar "osmode" 0)
(setq r1 (* 0.5 (getreal "\n轴承内径<d> :")))
(setq r2 (* 0.5 (getreal "\n轴承外径<D> :")))
(setq b0 (* 0.5 (getreal "\n轴承宽度<B> :")))
(setq a0 (- r2 r1))
(setq ax1 (+ r1 (/ a0 2.0)))
(setq rx (/ a0 4.0))
(setq r00
(+ rx
(sqrt (+ (* ax1 ax1) (* rx rx)))
)
)
(setq ax2 (sqrt (- (* r00 r00) (* b0 b0))))
(setq rxx (/ (* (sqrt 3.0) rx) 2.0))
(setq pt3 (polar pt1 (* 0.5 pi) (- (+ (* 0.5 a0) r1) rxx)))
(setq pt2 (polar pt1 (* 0.5 pi) r1))
(setq pt4 (polar pt1 (* 0.5 pi) ax2))
(setq pt5 (polar pt1 (* 0.5 pi) r2))
(setq pt14 (list (- (car pt1) (- b0 rx)) (+ (cadr pt1) ax1)))
(setq pt15 (polar pt14 pi (* 2.0 rx)))
(setq pt9 (polar pt2 pi (* 2.0 b0)))
(setq pt8 (polar pt3 pi (* 2.0 b0)))
(setq pt7 (polar pt4 pi (* 2.0 b0)))
(setq pt6 (polar pt5 pi (* 2.0 b0)))
(setq pt10 (polar pt15 (* 4.0 (/ pi 3.0)) rx))
(setq pt11 (polar pt15 (* 5.0 (/ pi 3.0)) rx))
(setq pt12 (polar pt14 (* 4.0 (/ pi 3.0)) rx))
(setq pt13 (polar pt14 (* 5.0 (/ pi 3.0)) rx))
(setq pt17 (polar pt1 (* 1.5 pi) (+ (- (* 0.5 a0) rxx) r1)))
(setq pt16 (polar pt1 (* 1.5 pi) r1))
(setq pt18 (polar pt1 (* 1.5 pi) ax2))
(setq pt19 (polar pt1 (* 1.5 pi) r2))
(setq pt24 (list (- (car pt1) (- b0 rx)) (- (cadr pt1) ax1)))
(setq pt25 (polar pt24 pi (* 2.0 rx)))
(setq pt22 (polar pt17 pi (* 2.0 b0)))
(setq pt20 (polar pt19 pi (* 2.0 b0)))
(setq pt21 (polar pt18 pi (* 2.0 b0)))
(setq pt23 (polar pt16 pi (* 2.0 b0)))
(setq pt29 (polar pt25 (* 2.0 (/ pi 3.0)) rx))
(setq pt28 (polar pt25 (* 1.0 (/ pi 3.0)) rx))
(setq pt27 (polar pt24 (* 2.0 (/ pi 3.0)) rx))
(setq pt26 (polar pt24 (* 1.0 (/ pi 3.0)) rx))
(command "pline" pt5 "w" 0 0 pt6 pt20 pt19 pt5 "")
(command "line" pt3 pt13 "")
(command "line" pt10 pt8 "")
(command "line" pt11 pt12 "")
(command "arc" pt4 "e" pt7 "r" r00)
(command "circle" pt15 Rx)
(command "circle" pt14 Rx)
(command "line" pt17 pt26 "")
(command "line" pt27 pt28 "")
(command "line" pt29 pt22 "")
(command "arc" pt21 "e" pt18 "r" r00)
(command "circle" pt25 Rx)
(command "circle" pt24 Rx)
(command "line" pt16 pt23 "")
(command "line" pt9 pt2 "")
(SETVAR "CMDECHO" CMDe)
(SETVAR "OSMODE" OSMo)
(princ)
)
(defun C:GB276 (/ d0 r0 b0 pt0 p1 p2 p3 p4 p5 p6
p7 p8 p9 p10p11 p12p13px rx p01p02
p03px1px2px3px4 tagtagx osmo cmde ob
)
(setq osmo (getvar "osmode"))
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 37)
(setq pt0 (getpoint "\n指定深沟球轴承中心插入点: "))
(setq r0 (* 0.5 (getreal "\n输入轴承内径<d>: ")))
(setq d0 (* 0.5 (getreal "\n输入轴承外径<D>: ")))
(setq b0 (* 0.5 (getreal "\n输入轴承宽度<B>: ")))
(setvar "osmode" 0)
(setq a0 (- d0 r0))
(setq rx (/ a0 3))
(setvar "cmdecho" 0)
(setvar "orthomode" 1)
(setq px (list (- (car pt0) b0) (- (+ (cadr pt0) d0) (* 0.5 a0))))
(setq p1 (polar pt0 pi (* 2 b0)))
(setq p2 (polar p1 (/ pi 2) r0))
(setq p3 (polar px (* (/ pi 6) 7) rx))
(setq p4 (polar px (* (/ pi 6) 5) rx))
(setq p7 (polar px (/ pi 6) rx))
(setq p8 (polar px (* (/ pi 6) 11) rx))
(setq p5 (polar p1 (/ pi 2) d0))
(setq p6 (polar pt0 (/ pi 2) d0))
(setq p9 (list (car pt0) (cadr p8)))
(setq p10 (list (car p1) (cadr p8)))
(setq p11 (list (car p1) (cadr p4)))
(setq p12 (list (car pt0) (cadr p4)))
(setq p13 (list (car pt0) (+ (cadr pt0) r0)))
(setq p01 (list (- (car p1) 2) (- (cadr p2) 2)))
(setq p02 (list (+ (car p6) 2) (+ (cadr p6) 2)))
(setq p03 (list (- (car p1) 2) (- (cadr p1) d0 2)))
(setq px1 (polar px 0 (+ rx 3)))
(setq px2 (polar px pi (+ rx 3)))
(setq px3 (polar px (* 0.5 pi) (+ rx 3)))
(setq px4 (polar px (* 3 (/ pi 2)) (+ rx 3)))
(setq ob (ssadd))
(command "circle" px rx)
(setq ob (ssadd (entlast) ob))
(command "pline" pt0 p6 p5 p2 "")
(setq ob (ssadd (entlast) ob))
(command "line" p9 p8 "")
(setq ob (ssadd (entlast) ob))
(command "line" p12 p7 "")
(setq ob (ssadd (entlast) ob))
(command "line" p4 p11 "")
(setq ob (ssadd (entlast) ob))
(command "line" p3 p10 "")
(setq ob (ssadd (entlast) ob))
(command "line" px1 px2 "")
(setq ob (ssadd (entlast) ob))
(command "line" px3 px4 "")
(setq ob (ssadd (entlast) ob))
(command "mirror" ob "" pt0 p1 "n")
(setvar "cmdecho" cmde)
(setvar "osmode" osmo)
(princ)
)
还有gb297 gb288 gb301,不知合不合用。
(defun C:GB288 (/ OSMo CMDe r1 r2 a0 b0 ra h0 q1 h2 q2 q3 p01 px1 px2 px3 px11 px8 px9 px4 px5 hx px6 px10 pt1 pt2
pt3 pt4 pt5 pt6 pt7 pt9 pt10 p011 p012 p03 p04 p05 p06 p07 p08 p09 p010 p02 p013)
(setq osmo (getvar "osmode"))
(setq cmde (getvar "cmDEcho"))
(setvar "cmdEcho" 0)
(setvar "osmode" 32)
(setq pt1 (getpoint "\n指定轴承插入位置点 ;"))
(setvar "osmode" 0)
(setq r1 (* 0.5 (getreal "\n轴承内径<d> :")))
(setq r2 (* 0.5 (getreal "\n轴承外径<D> :")))
(setq b0 (getreal "\n轴承宽度<B> :"))
(setq a0 (- r2 r1))
(setq ra (- r2 (* 0.25 a0)))
(setq pt2 (polar pt1 0 b0))
(setq pt3 (polar pt2 (* 0.5 pi) r1))
(setq pt4 (polar pt2 (* 0.5 pi) (+ r1 (* 0.25 a0))))
(setq pt6 (polar pt2 (* 0.5 pi) r2))
(setq pt7 (polar pt1 (* 0.5 pi) r2))
(setq pt9 (polar pt1 (* 0.5 pi) (+ r1 (* 0.25 a0))))
(setq pt10 (polar pt1 (* 0.5 pi) r1))
(setq h0 (sqrt (- (* ra ra) (* (* 0.5 b0) (* 0.5 b0)))))
(setq q1 (atan (/ (* 0.5 b0) h0)))
(setq h2 (sqrt (- (* ra ra) (* (/ b0 6) (/ b0 6)))))
(setq q2 (atan (/ (/ b0 6) h2)))
(setq q3 (atan (/ (/ b0 3) r2)))
(setq pt5 (polar pt2 (* 0.5 pi) h0))
(setq pt8 (polar pt1 (* 0.5 pi) h0))
(setq px7 (polar pt1 0 (* 0.5 b0)))
(setq p01 (polar px7 (* 0.5 pi) (- r2 (* 0.5 a0))))
(setq px1 (polar px7 (* 0.5 pi) r2))
(setq px2 (polar px1 0 (/ b0 3)))
(setq px3 (polar px1 pi (/ b0 3)))
(setq px11 (polar px7 (* 0.5 pi) (- r2 (* 5 (/ a0 8)))))
(setq px8 (inters px7 px3 p01 (polar p01 (+ q3 pi) 2) nil))
(setq px9 (inters px7 px2 p01 (polar p01 (* q3 -1) 2) nil))
(setq px4 (inters pt1 pt7 p01 px8 nil))
(setq px5 (inters pt2 pt6 p01 px9 nil))
(setq hx (distance px8 px7))
(setq px6 (polar px7 (+ q3 (* 0.5 pi)) (* 2 hx)))
(setq px10 (polar px7 (- (* 0.5 pi) q3) (* 2 hx)))
(setq p012 (polar px6 (- q2 (- (* 0.5 pi) q3)) ra))
(setq p011 (polar px6 (* -1.0 (+ (abs (- q2 (- (* 0.5 pi) q3))) q2 q2)) ra))
(setq p03 (list (+ (car px7) (abs (- (car px7) (car p012))))
(cadr p012)
)
)
(setq p04 (list (+ (car px7) (abs (- (car px7) (car p011))))
(cadr p011)
)
)
(setq p08 (polar px7 (- (+ q3 (* 0.5 pi)) q2) ra))
(setq p09 (polar px7 (+ (+ q3 (* 0.5 pi)) q2) ra))
(setq p07 (list (+ (car px7) (abs (- (car px7) (car p08))))
(cadr p08)
)
)
(setq p06 (list (+ (car px7) (abs (- (car px7) (car p09))))
(cadr p09)
)
)
(setq p02 (inters p03 p07 px11 (polar px11 0 1) nil))
(setq p013 (inters p012 p08 px11 (polar px11 pi 1) nil))
(setq p010 (inters p011 p09 pt9 pt4 nil))
(setq p05 (inters p04 p06 pt4 pt9 nil))
(setq ob (ssadd))
(command "pline" pt1 "w" 0 0 pt7 pt6 pt2 "")
(setq ob (ssadd (entlast) ob))
(command "line" p010 pt9 "")
(setq ob (ssadd (entlast) ob))
(command "line" pt4 p05 "")
(setq ob (ssadd (entlast) ob))
(command "line" pt10 pt3 "")
(setq ob (ssadd (entlast) ob))
(command "line" p011 p09 "")
(setq ob (ssadd (entlast) ob))
(command "line" p08 p012 "")
(setq ob (ssadd (entlast) ob))
(command "line" p03 p07 "")
(setq ob (ssadd (entlast) ob))
(command "line" p06 p04 "")
(setq ob (ssadd (entlast) ob))
(command "line" p02 p013 "")
(setq ob (ssadd (entlast) ob))
(command "arc" pt5 "e" pt8 "r" ra)
(setq ob (ssadd (entlast) ob))
(command "arc" p011 "e" p012 "r" ra)
(setq ob (ssadd (entlast) ob))
(command "arc" p03 "e" p04 "r" ra)
(setq ob (ssadd (entlast) ob))
(command "line" px4 p01 "")
(setq ob (ssadd (entlast) ob))
(command "line" px5 p01 "")
(setq ob (ssadd (entlast) ob))
(command "mirror" ob "" pt1 pt2 "N")
(setvar "cmdecho" cmde)
(setvar "osmode" osmo)
(princ)
)
(defun C:GB297 (/ r2 r1 b0 t0 c0 a0 a1 e0 x1 e1
x0 x2 xx pt0ptx px p1 p2 p3 p4 p5
p6 p7 p8 p9 p10 p11p12p13 p14p15p17
p16p18p19p01p02 p03xp ta1 ta2ta tag
tagx ob osmo cmde
)
(setq pt0 (getpoint "\n指定轴承中心插入点: "))
(setq r1 (* 0.5 (getdist pt0 "\n输入轴承内径<d>: ")))
(setq r2 (* 0.5 (getdist pt0 "\n输入轴承外径<D>: ")))
(setq t0 (getreal "\n输入轴承总宽度<T>: "))
(setq b0 (getreal "\n输入轴承内圈宽度<B>: "))
(setq c0 (getreal "\n输入轴承外圈宽度<C>: "))
(setq osmo (getvar "osmode"))
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq ta1 (sin (/ pi 12)))
(SETQ ta2 (cos (/ pi 12)))
(setq ta (/ ta1 ta2))
(setq a0 (- r2 r1))
(setq a1 (* 0.5 a0))
(setq e1 (/ a0 ta2))
(setq e0 (/ e1 4))
(setq x1 (* e0 ta))
(setq x0 (- c0 (* 0.5 t0)))
(setq x2 (/ (- b0 (* 0.5 t0)) ta2))
(setq xx (- x2 x1))
(setvar "cmdecho" 0)
(setvar "orthomode" 1)
(setq px (list (+ (car pt0) (* 0.5 t0)) (+ (cadr pt0) r1 a1)))
(setq p1 (list (car pt0) (+ (cadr pt0) r1)))
(setq p15 (list (+ (car pt0) b0) (+ (cadr pt0) r1)))
(setq p9 (polar px (* 5 (/ pi 12)) e0))
(setq p8 (polar p9 (* 23 (/ pi 12)) xx))
(setq p16 (polar px (* 0.5 pi) (/ e0 ta2)))
(setq p11 (polar p16 (* 11 (/ pi 12)) (/ (- c0 (* 0.5 t0)) ta2)))
(setq p3 (polar px (* 11 (/ pi 12)) (/ (- c0 (* 0.5 t0)) ta2)))
(setq p4 (polar p3 (* 17 (/ pi 12)) e0))
(setq p10 (polar p3 (* 5 (/ pi 12)) e0))
(setq p5 (polar p8 (* 17 (/ pi 12)) (* 2 e0)))
(setq p7 (list (+ (car pt0) b0) (+ (cadr pt0) r1 (* 0.5 a1))))
(setq p13 (list (+ (car pt0) t0) (+ (cadr pt0) r2)))
(setq p12 (polar p13 pi c0))
(setq p2 (polar p3 pi (- t0 c0)))
(setq p17 (polar p15 0 (- t0 b0)))
(setq p14 (polar p16 (* 23 (/ pi 12)) (/ (* 0.5 t0) ta2)))
(setq xp (list (car p13) (cadr p7)))
(setq p6 (inters p5 p8 xp p7 nil))
(setq ptx (polar pt0 0 t0))
(setq p18 (polar px (* 11 (/ pi 12)) (+ xx 5)))
(setq p19 (polar px (* 23 (/ pi 12)) (+ xx 5)))
(setq p01 (polar p1 (* (/ pi 4) 5) 5))
(setq p02 (polar p13 (/ pi 4) 5))
(setq p03 (list (- (car pt0) 3) (- (cadr pt0) r2 3)))
(setq ob (ssadd))
(command "pline" pt0 p2 p3 p12 p13 p17 "")
(setq ob (ssadd (entlast) ob))
(command "line" p11 p14 "")
(setq ob (ssadd (entlast) ob))
(command "line" p6 p7 "")
(setq ob (ssadd (entlast) ob))
(command "pline" p8 p15 p1 "")
(setq ob (ssadd (entlast) ob))
(command "pline" p8 p5 p4 p10 "")
(setq ob (ssadd (entlast) ob))
(command "line" p19 p18 "")
(setq ob (ssadd (entlast) ob))
(command "mirror" ob "" pt0 ptx "N")
(setvar "cmdecho" cmde)
(setvar "osmode" osmo)
(princ)
)
(defun C:GB301 (/ p0 h0 r1 r2 a0 a1 px zm p1 p2
p3 p4 p5 p6 p7 p71p8 p81 p9 p10p11
p12p13p14p15p16 p01p02p00 osmo cmde
)
(setq p0 (getpoint "\n轴承中心插入点: "))
(setq r1 (* 0.5 (getdist p0 "\n轴承内孔直径<d>: ")))
(setq r2 (* 0.5 (getdist p0 "\n轴承外圈直径<D>: ")))
(setq h0 (* 0.5 (getreal "\n轴承厚度<B>: ")))
(setq osmo (getvar "osmode"))
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq a0 (- r2 r1))
(setq a1 (* 0.5 a0))
(setq px (list (+ (car p0) r1 a1) (- (cadr p0) h0)))
(setq p00 (polar p0 (* 3 (/ pi 2)) h0))
(setq zm (sqrt 3))
(setq x1 (* zm (/ h0 4)))
(setq p1 (polar px (/ pi 3) (* 0.5 h0)))
(setq p2 (polar p1 pi (* 0.5 h0)))
(setq p3 (polar p2 (* 3 (/ pi 2)) (* 2 x1)))
(setq p4 (polar p3 0 (* 0.5 h0)))
(setq p5 (list (+ (car p0) r2) (- (cadr px) x1)))
(setq p6 (list (+ (car p0) r2) (- (cadr p0) (* 2 h0))))
(setq p7 (polar p6 pi (- a0 0.15)))
(setq p71 (polar p7 pi 0.15))
(setq p8 (polar p5 pi (- a0 0.15)))
(setq p81 (polar p8 pi 0.15))
(setq p9 (list (+ (car p0) r1) (cadr p1)))
(setq p10 (list (+ (car p0) r1) (cadr p0)))
(setq p11 (list (+ (CAR p0) r2) (cadr p0)))
(setq p12 (list (+ (car p0) r2) (cadr p1)))
(setq p13 (polar px (* 3 (/ pi 2)) (+ 3 (* 0.5 h0))))
(setq p14 (polar px (/ pi 2) (+ 3 (* 0.5 h0))))
(setq p15 (polar px 0 (+ 3 (* 0.5 h0))))
(setq p16 (polar px pi (+ 3 (* 0.5 h0))))
(setq p01 (list (- (car p0) 5) (+ (cadr p0) 5)))
(setq p02 (list (+ (car p6) 5) (- (cadr p6) 5)))
(setq p03 (list (- (car p0) r2 5) (+ (cadr p0) 5)))
(setq ob (ssadd))
(command "pline" p10 p11 p12 p1 "")
(setq ob (ssadd (entlast) ob))
(command "line" p2 p9 "")
(setq ob (ssadd (entlast) ob))
(command "line" p3 p81 "")
(setq ob (ssadd (entlast) ob))
(command "pline" p71 p6 p5 p4 "")
(setq ob (ssadd (entlast) ob))
(command "line" p8 p7 "")
(setq ob (ssadd (entlast) ob))
(command "circle" px (* 0.5 h0))
(setq ob (ssadd (entlast) ob))
(command "line" p13 p14 "")
(setq ob (ssadd (entlast) ob))
(command "line" p15 p16 "")
(setq ob (ssadd (entlast) ob))
(command "mirror" ob "" p0 p00 "N")
(setvar "cmdecho" cmde)
(setvar "osmode" osmo)
(princ)
)