明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3323|回复: 7

用程序求切点位置

[复制链接]
发表于 2006-8-24 18:43 | 显示全部楼层 |阅读模式

如何确定两圆切点的位置,(圆心位置,半径已知)??????????????

  圆的上下位置可以移动,(外切)

发表于 2006-10-17 16:35 | 显示全部楼层
有图吗?
发表于 2006-10-17 17:09 | 显示全部楼层
houlinbo发表于2006-8-24 18:43:00回复:(houlinbo)用程序求切点位置 如何确定两圆切点的位置,(圆心位置,半径已知)?????????????? 圆的上下位置可以移动,(外切)


请详细说明:

是哪个圆位置确定,哪个圆半径已知,还是都已知,都确定?

能附图说明么?

把题目说清楚了,别人才好给你解答。

另外问一句:这种问题用在什么实际工程中呢?

发表于 2006-11-1 22:31 | 显示全部楼层
是两个圆的半径和圆心都已知吗?如果是这样的话,这道题并不难解!
发表于 2006-11-1 23:28 | 显示全部楼层
(defun c:test ()
  (princ "请选择两个相切的圆:")
  (setq sset (ssget '((0 . "Circle")))
  )
  (if (> (sslength sset) 2)
    (progn
      (alert "选择了两个以上的圆,程序退出")
      (exit)
    )
  )
  (setq circle1 (vlax-ename->vla-object (ssname sset 0))
 circle2 (vlax-ename->vla-object (ssname sset 1))
 c_pt1 (vlax-safearray->list
    (vlax-variant-value (vla-get-center circle1))
  )
 c_pt2 (vlax-safearray->list
    (vlax-variant-value (vla-get-center circle2))
  )
 r1 (vla-get-radius circle1)
 r2 (vla-get-radius circle2)
 ang (angle c_pt1 c_pt2)
 os (getvar "osmode")
  )
  (setvar "osmode" 0)
  (if (equal (distance c_pt1 c_pt2) (+ r1 r2) 0.00001)
    (setq tan_pt (polar c_pt1 ang r1))
    (if (equal (distance c_pt1 c_pt2) (abs (- r1 r2)) 0.00001)
      (setq tan_pt (polar c_pt1 (+ pi ang) r1))
      (setq tan_pt nil)
    )
  )
  (if tan_pt
    (progn (command "circle" tan_pt 1)
    (alert (strcat "切点坐标为: " (vl-princ-to-string tan_pt)))
    )
    (alert "两圆不相切")
  )
  (setvar "osmode" os)
)
发表于 2006-11-1 23:32 | 显示全部楼层
以上是用lisp作的程序,它适用于两个圆的半径和圆心都已知的情况下求切点坐标,关在切点位置画一个小圆!
发表于 2006-11-1 23:36 | 显示全部楼层
加载上面这段程序,在命令行中输入test,如果不能运行,请在命令行中输入(vl-load-com),再试!
发表于 2006-11-2 10:14 | 显示全部楼层
如果知道外切的话,连接两圆圆心,以其中一圆为基点加上半径长,连线角度就可求出交点啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 07:55 , Processed in 0.155950 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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