谁能帮我写个cad的lisp程序?

(1)任意矩形的垂直面水平面添加5MM中心线
(2)及矩型往内偏移8MM制作
我想要的中心线 圆尺寸如影片那样尺寸则是照片那样

;矩形中心线
(defun c:jxzxx()
(setq cmd (getvar "cmdecho"))
(setq osm (getvar "osmode"))
(setvar "cmdecho" 0)
(command "undo" "be")
(If (progn
(princ "请选取矩形:")
(setq ssa (ssget":S" '((0 . "lwpolyline") (90 . 4) (70 . 1))))
)
(progn
(setq dxf (entget (ssname ssa 0)))
(setq pts (mapcar 'cdr (vl-remove-if '(lambda(x)(/= (car x) 10)) dxf)))
(setq p1 (apply 'mapcar (cons 'min pts)))
(setq p3 (apply 'mapcar (cons 'max pts)))
(setq p2 (list (car p3) (cadr p1)))
(setq p4 (list (car p1) (cadr p3)))
(setq p14m1 (mapcar '(lambda(a b)(* 0.5 (+ a b))) p1 p4))
(setq p14m2 (mapcar '+ p14m1 '(5 0)))
(setq p12m1 (mapcar '(lambda(a b)(* 0.5 (+ a b))) p1 p2))
(setq p12m2 (mapcar '+ p12m1 '(0 5)))
(setq p23m1 (mapcar '(lambda(a b)(* 0.5 (+ a b))) p2 p3))
(setq p23m2 (mapcar '+ p23m1 '(-5 0)))
(setq p34m1 (mapcar '(lambda(a b)(* 0.5 (+ a b))) p3 p4))
(setq p34m2 (mapcar '+ p34m1 '(0 -5)))
(setvar "osmode" 0)
(mapcar '(lambda(pts)
(command "_line" (car pts) (cadr pts) "" "_chprop" (entlast) "" "c" 1 "")
)
(list (list p14m1 p14m2)
(list p12m1 p12m2)
(list p23m1 p23m2)
(list p34m1 p34m2)
)
)
(setq i 1)
(mapcar '(lambda(pt dxy)
(setq pt1 (mapcar '+ pt dxy))
(if (or (= i 1) (= i 3)
(command "_Circle" pt1 1.5 "_chprop" (entlast) "" "c" 6 "")
(progn
(command "_Circle" pt1 1.55 "_chprop" (entlast) "" "c" 1 "")
(command "_Circle" pt1 1.80 "_chprop" (entlast) "" "c" 1 "")
)
)
(setq i (1+ i))
)
(list p1 p2 p3 p4)
(list '(8 8) '(-8 8) '(-8 -8) '(8 -8))
)
)
)
(command "undo" "e")
(setvar "osmode" osm)
(setvar "cmdecho" cmd)
(princ)
)追问

dn大已经很接近我要的功能

非常感谢你

但我的圆尺寸是要这样的

然后总共是要有两种功能

单独只要再矩形画中心线

跟画中心线+画如尺寸的圆

需要怎么修改呢

温馨提示:答案为网友推荐,仅供参考
相似回答