明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1533|回复: 9

请问怎样求有倒圆角的三角形的最小外接圆?

[复制链接]
发表于 2011-7-28 19:44 | 显示全部楼层 |阅读模式
本帖最后由 caoteddy 于 2011-7-29 15:53 编辑

如题,请问怎样编写AutoLisp程序?
我要求的就是附件中的白色圆。
小弟在此感谢各位大侠了!
以下是我自己写的程序,功能还没完成,不过我觉得是有问题的:

;画选取的所有R的外切圆子程序,变量ss为R的选择集
(defun draw_arc_excircle (ss)                        
  (setq i 0)
  (setq LL 0)      ;选择圆点最远的两个R,取中心点,并话外接圆
  (repeat (sslength ss)
          (setq en (ssname ss i))
          (setq endate (entget en))
          (setq enCP (cdr(assoc 10 endate)))
          (setq enR (cdr(assoc 40 endate)))
          (setq k 0)
          (repeat (sslength ss)
           (setq en1 (ssname ss k))
                  (setq en1date (entget en1))
                  (setq en1CP (cdr(assoc 10 en1date)))
                  (setq en1R (cdr(assoc 40 en1date)))
           (if (/= en en1)
        (progn (setq L1(distance enCP en1CP))
        (setq L(+ L1 enR en1R))
        (if (> L LL)
            (progn (setq LL L)
            (setq Right_en en)
            (setq Right_en1 en1)
            (setq Right_enCP enCP)
            (setq Right_en1CP en1CP)
        (setq Right_enR enR)
            (setq Right_en1R en1R)
      )
         )
         )
     )
     (setq k(+ 1 k))
    )
   (setq i(+ 1 i))
  )
(setq radian(angle Right_enCP Right_en1CP))
(setq Right_line_p1 (polar Right_enCP  (+ radian  pi) Right_enR))
(setq Right_line_p2 (polar Right_en1CP radian  Right_en1R))
(setq LLL (distance Right_line_p1 Right_line_p2))
(setq Q (getvar "OSMODE"))
(setvar "OSMODE" 0)
(command "line" Right_line_p1 Right_line_p2 "")
(setq CP (get_midpt  Right_line_p1  Right_line_p2))
(setq R (/ LLL 2))
(setq R1 R)
(command "CIRCLE" CP R)
;判断是否有R在已画圆的外部
(setq m 0)
(repeat (sslength ss)
         (setq en2 (ssname ss m))
         (setq en2date (entget en2))
         (setq en2CP (cdr(assoc 10 en2date)))
         (setq en2R (cdr(assoc 40 en2date)))
         (setq LR(+ (distance CP en2CP) en2R))
         (if (> LR R1)
      (progn(setq R1 LR)
            (setq Right_en2 en2)
     (setq Right_en2CP en2CP)
     (setq Right_en2R en2R)
       )
   )
   (setq m(+ 1 m))
  )
  (setq radian2(angle CP Right_en2CP))
  (setq Right_line_p3 (polar Right_en2CP radian2  Right_en2R))
  (command "line" CP Right_line_p3 "")
  (setvar "OSMODE" Q )
)
;--------------------------------------------------------------
;取中点
(defun get_midpt(p1 p2)
  (setq mx(/(+(car p1)(car p2))2))
  (setq my(/(+(cadr p1)(cadr p2))2))
  (list mx my)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2011-7-29 10:11 | 显示全部楼层
有哪位大侠帮帮忙指点一二啊?
发表于 2011-7-29 10:33 | 显示全部楼层
捕捉定 tan
左图 Circle --> 3P
右图 Circle --> 2P
 楼主| 发表于 2011-7-29 10:40 | 显示全部楼层
回复 Andyhon 的帖子

右图 Circle --> 2P 的两个点还是比较容易求的。
但是左图 Circle --> 3P 的三个切点我不清楚怎样求。可以指点一下吗?谢谢
发表于 2011-7-29 10:50 | 显示全部楼层
可否提供已有的代码作参考?
 楼主| 发表于 2011-7-29 11:09 | 显示全部楼层
回复 Andyhon 的帖子


还没想清楚怎样算,所以没有写代码。
发表于 2011-7-29 11:20 | 显示全部楼层
用在何处?
手动处理 Circle --> 2p / 3p 也还好吧!
 楼主| 发表于 2011-7-29 11:25 | 显示全部楼层
回复 Andyhon 的帖子

我下午再写个程序出来吧,到时候请你查一下。
发表于 2011-7-29 12:59 | 显示全部楼层
 楼主| 发表于 2011-7-31 10:41 | 显示全部楼层
有高人指点一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-14 13:42 , Processed in 0.149771 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表