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
不错不错的