找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 899|回复: 7

[求助] 某圆的所有的外切圆,

[复制链接]

已领礼包: 218个

财富等级: 日进斗金

发表于 2013-5-16 14:18:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
defun c:5test2()

;以下 baspt、rad、num 值须由使用者输入

(setq baspt (getpoint “请求输入基准点:”))

(setq rad (getdist baspt “\n请求输入小圆半径:”))

(setq num (getint “\n请求输入欲相切的小圆数量:”))

;只要能求得 cenpt 点,再以 array 指令配合就万事OK了

;以下ang1、kk、cenpt值须由程序依据baspt、rad、num求出

(setq ang1 (/ (* pi 2) (* num 2)))  (求解释)

(setq kk (/ rad (sin ang1)))  (求解释)

(setq ang2 (- (/ pi 2) ang1))( 求解释)


(setq cenpt (polar baspt ang2 kk)) (求解释)

;以下依据 cenpt、num 配合环形array画出多圆相切

(command “circle” baspt rad) ;;先画一个圆,才能array

(command “array” (entlast) “” “p” cenpt num 360 “Y”)

(prin1)

)

(prompt “\n << 5TEST2>>自动等圆相切绘制”)

(prin1)
求某圆的外切圆, 代码看的懂,数学学的差,帮忙解释一下

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-16 15:49:30 | 显示全部楼层
把图画出来看一下不就知道了!初中几何知识!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2013-5-16 19:18:08 | 显示全部楼层
楼主画出图,稍加计算就知道了:
  1. (defun c:test2()                                       
  2.   ;以下 baspt、rad、num 值须由使用者输入
  3.   (setq baspt (getpoint "请求输入基准点:"))               
  4.   (setq rad (getdist baspt "\n请求输入小圆半径:"))
  5.   (setq num (getint "\n请求输入欲相切的小圆数量:"))        ;只要能求得 cenpt 点,再以 array 指令配合就万事OK了

  6.   ;以下ang1、kk、cenpt值须由程序依据baspt、rad、num求出
  7.   (setq ang1 (/ (* pi 2) (* num 2)))                        ;等分角度的一半(如:6等分,即360度/6=60度为等分角,再除以2)
  8.   (setq kk (/ rad (sin ang1)))                                ;半径除以这个角度的正正弦就是到阵列中心的距离
  9.   (setq ang2 (- (/ pi 2) ang1))                                ;与x轴线的方向角度为90度减去等分角的一半
  10.   (setq cenpt (polar baspt ang2 kk))                        ;得到阵列中心


  11.   ;以下依据 cenpt、num 配合环形array画出多圆相切
  12.   (command "circle" baspt rad)

  13.   ;;先画一个圆,才能array
  14.   (command "array" (entlast) "" "p" cenpt num 360 "Y")
  15.   (prin1)
  16.   (prompt "\n << 5TEST2>>自动等圆相切绘制")
  17.   (prin1)
  18. )

  19. ;;;以下部分为我稍加修改:
  20. (defun C:test1 (/ basPt cenpt rad num e o n a v i)
  21.   (defun Make-Circle (cen rad)                                ;最好定义画圆的子函数,以方便以后的修改和重复利用
  22.     (entmakeX
  23.       (list '(0 . "CIRCLE") (cons 10 cen) (cons 40 rad))
  24.     )
  25.   )
  26.   (initget 9)                                                ;不空输入,可在图形外上的一点
  27.   (setq baspt (getpoint "请求输入基准点:"))
  28.   (initget 15)                                                ;不空输入,为正数
  29.   (setq rad (getdist baspt "\n请求输入小圆半径:"))               
  30.   (initget 7)                                                ;不空输入,为正整数
  31.   (setq num (getint "\n请求输入欲相切的小圆数量:"))

  32.   (setq basPt (trans basPt 1 0))                        ;要转化到世界坐标系
  33.   (setq e (Make-Circle basPt rad))                        ;先画一个圆
  34.   (setq o (vlax-ename->vla-object e))  

  35.   (setq a (/ pi num))                                        ;角度为等分角度的一半(等分角度为360度/数量)
  36.   (setq v (list Rad (* Rad (/ (cos a) (sin a))) 0))           ;位移为其右偏移半径再往上偏移半径的余切
  37.   (setq cenpt (mapcar '+ baspt v))                      ;加上原位置,就是阵列中心点

  38.   (setq i 2)
  39.   (repeat (1- num)                                        ;重复等分数的减一
  40.     (setq n (vla-copy o))                                     ;对每个物体拷贝一份
  41.     (vla-rotate n (vlax-3d-point cenpt) (* a i))        ;再以阵列中心点为基点旋转等分角度
  42.     (setq i (+ i 2))                                               
  43.   )
  44.   (princ)
  45. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-17 12:14:11 来自手机 | 显示全部楼层
Highflybird 发表于 2013-5-16 19:18
楼主画出图,稍加计算就知道了:

小学知识都不好唉~我试试画粗图下~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-17 12:52:07 来自手机 | 显示全部楼层
fkyourmather 发表于 2013-5-17 12:14
小学知识都不好唉~我试试画粗图下~

可以的话~附下图~在火车上!没有办法
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-17 13:05:23 来自手机 | 显示全部楼层
角度pi我觉得应该输入为pi 1/2
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-17 14:01:39 来自手机 | 显示全部楼层
Highflybird 发表于 2013-5-16 19:18
楼主画出图,稍加计算就知道了:

(setq i 2)
(repeat (1- num)                    ;重复等分数的减一
  (setq n (vla-copy o))             ;对每个物体拷贝一份
  (vla-rotate n (vlax-3d-point cenpt) (* a i))    ;再以阵列中心点为基点旋转等分角度
  (setq i (+ i 2))                        
)
(princ)关于这段~i的作用我可能知道但是还是不懂
)
[/code]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

 楼主| 发表于 2013-5-17 14:02:32 来自手机 | 显示全部楼层
Highflybird 发表于 2013-5-16 19:18
楼主画出图,稍加计算就知道了:

(setq i 2)
(repeat (1- num)                    ;重复等分数的减一
  (setq n (vla-copy o))             ;对每个物体拷贝一份
  (vla-rotate n (vlax-3d-point cenpt) (* a i))    ;再以阵列中心点为基点旋转等分角度
  (setq i (+ i 2))                        
)
(princ)关于这段~i的作用我可能知道但是还是不懂
)
[/code]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 14:28 , Processed in 0.246211 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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