819534890 发表于 2022-12-29 12:46:01

回复看看代码

2548572928 发表于 2022-12-29 16:42:38

llsheng_73 发表于 2022-12-29 17:06:49

(defun acos(a);;;-1<=a<=1
(angle'(0 0)(list a(sqrt(- 1(* a a)))))
   )
(defun makeline(p1 p2)
(entmakex(list'(0 . "line")(cons 10 p1)(cons 11 p2))))
(defun tt(e1 e2 / a c b r);;圆外公切线
(setq a(vl-sort(mapcar'(lambda(x)(mapcar'(lambda(y)(cdr(assoc y x)))'(40 10)))
                       (mapcar'entget(list e1 e2)))
                  (function(lambda(a b)(<(car a)(car b)))))
        r(mapcar'car a)
        c(mapcar'cadr a)
        b(apply'angle c)
        a(acos(/(*(car r)(apply'- r))(*(car r)(apply'distance c)))))
(mapcar(function(lambda(x)(apply'makeline(mapcar(function(lambda(y z)(polar y(+(* a x)b)z)))c r))))'(1 -1))
)
很多年前推算外公切线的,没推导内公切线
(defun c:tt( / e1 e2)
(while(and(setq e1(ssget":E:S"'((0 . "CIRCLE"))))
          (setq e1(ssname e1 0))
          (setq e2(ssget":E:S"'((0 . "CIRCLE"))))
          (setq e2(ssname e2 0))
          (tt e1 e2))))

)

ssyfeng 发表于 2022-12-30 09:18:23

sunny_8848 发表于 2022-12-30 17:43:21

看起来很不错的功能

皇上快溜 发表于 2022-12-31 18:55:07

用弧线与两个圆相切起来,给弧线一个R值,这难度不小

前生 发表于 2023-1-1 11:03:33

这个看看。谢谢!

wmh-3816 发表于 2023-1-1 11:12:15

谢谢分享,,感谢感谢

vip-happy 发表于 2023-1-1 11:26:11

看看楼主的办法

lhg 发表于 2023-1-1 18:18:20

不错不错的
页: 1 2 [3] 4 5
查看完整版本: 画两个相离圆的相切线