四个圆包围矩形且与矩形边相切
本帖最后由 荒野孤行 于 2015-5-24 21:54 编辑**** Hidden Message *****
源码如下:
;;;*****矩形4圆相切 程序开始*****
(defun c:t1 ()
(setvar "cmdecho" 0)
(setvar "osmode" 15359)
(princ "\n功能:通过矩形绘制出与其四边相切,且四圆两两相切的圆.")
(initget 7)
(setq l_len (getdist "\n请输入矩形的长度:"))
(initget 7)
(setq l_wid (getdist "\n请输入矩形的宽度:"))
(initget 3)
(setq pt1 (getpoint "\n请指定插入点:"))
(setvar "osmode" 0)
(setq L1 (* l_wid 0.5))
(setq L2 (* l_len 0.5))
(setq a (* 2.0 L1))
(setq b (+ (* L2 L2) (* L1 L1 -1.0) (* 4.0 L1 L2)))
(setq c (* 2.0 L1 L1 L2))
(setq r2 (/ (+ b (sqrt (+ (* b b) (* 4.0 a c)))) (* 2.0 a) 1.0))
(setq r1 (+ (/ (* L1 L1) r2 1.0) (* 2.0 L1)))
(setq pt2 (polar pt1 0 l_len))
(setq pt12 (polar pt1 0 (* l_len 0.5)))
(setq pt_r2 (polar pt12 (angtof "90") r2))
(setq pt3 (polar pt2 (angtof "-90") l_wid))
(setq pt4 (polar pt1 (angtof "-90") l_wid))
(setq pt34 (polar pt1 (angtof "-90") (* l_wid 0.5)))
(setq pt_r1 (polar pt34 (angtof "180") r1))
(command "color" 1)
(command "PLINE" pt1 pt2 pt3 pt4 "c")
(command "color" 3)
(command "CIRCLE" pt_r2 r2)
(command "MIRROR" (entlast) "" pt34 pt_r1 "")
(command "color" 4)
(command "CIRCLE" pt_r1 r1)
(command "MIRROR" (entlast) "" pt12 pt_r2 "")
(command "color" "Bylayer")
(setvar "osmode" 15359)
(princ)
)
;;;*****矩形4圆相切 程序结束*****
学习学习!谢谢 学习学习!谢谢 支持下,希望有更多好的程序 看看源码情况。 谢谢分享!!! 楼主的好代码,受教了,回去好好研究研究! 本帖最后由 lrd1861 于 2015-11-9 13:51 编辑
看看藏着啥楼主是不是藏错了 看隐藏着什么 看看代碼 學習 研究
页:
[1]
2