QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
22小时前
楼主: q542748861
收起左侧

[已解决] 求助,,cad画这个图,, 画出来发现不相切!

[复制链接]
发表于 2011-4-1 17:58:10 | 显示全部楼层 来自: 中国浙江温州
三点画圆$ o9 g( b( H* ]. p/ K) {
都在线上捕捉切点就可以了啊
 楼主| 发表于 2011-4-2 07:11:31 | 显示全部楼层 来自: 中国湖南永州
你试试   再截图给我看看,然后把图放大看看有没有过切 26# 625070723
发表于 2011-4-2 09:17:37 | 显示全部楼层 来自: 中国浙江杭州
用2010约束可以画出来
QQ截图未命名.jpg

评分

参与人数 1三维币 +3 收起 理由
woaishuijia + 3 技术讨论

查看全部评分

发表于 2011-4-2 10:05:19 | 显示全部楼层 来自: 中国广东深圳
用2007试了一下,没画出
 楼主| 发表于 2011-4-2 17:08:18 | 显示全部楼层 来自: 中国湖南永州
大家注意下,,不要用2009以上的版本画  " y  c4 N; i  O* B
   那样就没意思了!
发表于 2011-4-3 13:28:39 | 显示全部楼层 来自: 中国辽宁营口
有很多答案,就是说答案并不唯一,从制图上来看,这样的题没有实际意义。
  [, i7 B1 S. O9 J用CAD的相切、相切、直径,和相切、相切、相切命令,很容易画出来。) P# J& m0 s( h& u( ?
如果用solidworks三维软件更容易画出来,只不过这样的草图线段是蓝色的,草图并没有被完全定义。
发表于 2011-4-3 13:33:42 | 显示全部楼层 来自: 中国辽宁营口
有很多答案,就是说答案并不唯一,从制图上来看,这样的题没有实际意义。用CAD的相切、相切、直径,和相切、相切、相切命令,很容易画出来。如果用solidworks三维软件更容易画出来,只不过这样的草图线段是蓝色的,草图并没有被完全定义。, r0 z  c1 _, R! O, V
D.JPG
发表于 2011-4-3 16:57:22 | 显示全部楼层 来自: 中国江苏扬州
应该只有唯一解,大圆直径78.78,小圆直径16.27
发表于 2011-4-4 13:11:05 | 显示全部楼层 来自: 中国安徽合肥
32# 12fzj
" W" l3 U6 S8 C' y/ B4 f- h2 I5 ~, C3 y5 a% \$ I
应该只有唯一的解,下图是用“破衣”画的。
# x0 M9 d  _0 [! X: z 快照1.png
发表于 2011-8-11 23:11:58 | 显示全部楼层 来自: 中国江苏
我画的给大家分享一下,具体如下:3 L( U: w3 @% u6 R
1、画一条中心线,然后以中心为镜像轴作镜像,具体如下图:
  M! z  [6 Z* L9 ` 无标题1.jpg     无标题2.jpg ! A! [) H9 n- g; v( X6 i
2、以中间位置画圆(用相切、相切、相切画),具体如下图:
/ M' }' _* N  e! x6 G0 R6 d 无标题3.png 7 n5 c$ }. F( h5 [
3、用相切、相切、相切画其它两个圆,如下图:  F( f& Y/ _- f8 E6 r% ]# `- g
无标题4.jpg
7 Z* s) {6 ]9 E+ B, h$ l8 v$ f完成尺寸如下图:1 r! F. V/ K& |3 e5 j% Y# @6 F2 c
无标题5.jpg
发表于 2011-8-15 19:48:18 | 显示全部楼层 来自: 中国浙江金华
35# 唐依依
* I, f1 j6 A1 a, T/ ]( v高手果然高手,不过这样的几何题最好给个证明,不然实在看着吃力
发表于 2011-8-19 10:34:55 | 显示全部楼层 来自: 日本
用的日语cad,很多功能不会用。4 H6 J7 U* B$ ^, s) v) T
附件内容自己看吧,pdf和cad是同一个图。; o6 D. g. c/ h4 z" S$ Z1 G
用的几何画法,cad只是辅助,理论上任何画图软件用这方法都行。3 c$ {7 _( b; w; N; M0 w
另外,4边形是我随便画的,任何尺寸的4边形用这方法都能作出你想要的那1大2小圆。' @% B& X( x* \7 V! I% Y& j& g
就是比较花时间。

方法.pdf

240.43 KB, 下载次数: 24

画图法.dwg

43.6 KB, 下载次数: 1

发表于 2011-8-19 15:06:12 | 显示全部楼层 来自: 中国北京
35# 唐依依 3 i2 {7 Z0 u4 a
  s% ~3 V3 D8 W( R0 p( M6 x* G
唐总,你的这个做法应该不是正解,你把精度设置成四位看看,差很多哦~
% j+ N% K# L3 |4 R" ^0 I9 a: o8 I: q2 G/ O4 O
不过想了很久除了用CAD的约束功能也没用其他方法做出来,! @. V$ M4 _' P* a) m
等待高手解决。
发表于 2011-8-19 15:55:53 | 显示全部楼层 来自: 日本
嚓~~~大圆没点到圆心,失误
. R! Y$ O1 Q/ c/ h5 k改正后的图附上,应该ok了。
# H- U3 h3 B' P' i6 d& b* j+ \; n用这办法,就是手工图也能在有圆规等画图工具的辅助下作出想要的大小圆。

画图法.dwg

43.48 KB, 下载次数: 8

发表于 2011-8-19 21:13:49 | 显示全部楼层 来自: 中国江苏无锡
可以用二次开发工具编程解决啊!如autolisp等

评分

参与人数 1三维币 +3 收起 理由
woaishuijia + 3 技术讨论

查看全部评分

发表于 2011-8-24 08:46:54 | 显示全部楼层 来自: 中国陕西西安
希望有高手找出答案。这个图技巧性很强。
发表于 2011-8-24 10:07:29 | 显示全部楼层 来自: 中国江苏苏州
35# 唐依依
; ]/ E" O& q1 U6 N39# sylpw
5 Q+ z' U7 j3 I9 H+ c3 O- {( P# H9 h! J, c$ W  L4 u
35楼,39楼均是正解,我自己试过了,高手啊!佩服
发表于 2011-8-25 13:36:43 | 显示全部楼层 来自: 中国香港
与时俱进嘛,既然高版本的能画出来,为什么还要用低版本的呢?
发表于 2011-8-27 13:36:04 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-8-27 13:41 编辑 ' I1 K# X. L! ?% r4 Z* j

$ p! y' u3 l. v' N2 J7 H* o2 R从代数式看,本图应该没有二维几何画法.上面几位朋友提供的方法也只是比较接近结果而已.
( z1 \3 L0 d0 {3 H6 {# b1 }这个图,对于2010及以上版本可以用参数方法画出;对于2009及以下版本,可以使用逼近法:包括轨迹法,精确选点法和编程法等等.
# z. i3 T6 y7 r0 q5 i$ }* q下面着重讨论轨迹法和编程法  G! r6 C, h# G& P
一.轨迹法; d8 K# \! i* d0 K6 b3 p+ {, r
首先画出四边形.再在左下角和右上角用"相切,相切,半径"方法分别画一个半径为5的小圆,再用"三相切"方法画出与两个小圆和底部水平直线相切的大圆;然后再在左下角和右上角用"相切,相切,半径"分别画一个半径为8的小圆,再用"三相切"方法画出与这两个小圆和底部直线相切的大圆;然后再在左下角和右上角用"相切,相切,半径"分别画一个半径为10的小圆,再用"三相切"方法画出与这两个小圆和底部直线相切的大圆.再用"三点"方法通过三个大圆的圆心画出轨迹圆.如图* `# o( m: k2 M6 O) q0 ]
Untitled-1.gif
6 F; J% k4 u& O# g3 D- M$ C删除图形上所有的圆,画出上下两直线的角平分线.再以角平分线和轨迹圆交点为圆心画出与上下两直线均相切的大圆,再用"三相切"方法画出两个小圆.如图
6 n+ ^( ^6 ^( x+ S0 F3 [ Untitled-2.gif + l' B! p8 \5 S- w+ e
用"特性"管理器分别查看两小圆的半径,结果分别为8.1363和8.1366.已经很接近了.
6 g3 R" f  s+ {% ]5 S1 O如果认为精度不理想,可以用更接近这个结果的半径值重复上面的过程,就可以得到更精确的结果.
- ]% n# d0 h, H% q4 \2 K- l6 @) M& D' a2 @- ]
上面的方法中,除了用"三点"画圆方法得到轨迹外,还可以用样条曲线画轨迹.道理是一样的.' [6 b2 n% N/ ~6 f

- `) A, P% v6 I/ J0 ]0 D$ u二.编程法
  C* V# Y0 u, ^. Z) l. M+ C5 I8 l可以把编程法理解为自定义的参数画法.它实质上也是逼近法的一种,只是用自行编制的程序代替人工完成逼近过程.这种方法可以达到逼近的最大极限,其精度甚至比在电脑上用几何画法画出的的实际结果还要高.) f! R0 u& O; J4 I  }4 |) s
下面的代码是用VBA编制的

  1. ! W! [: e3 \$ {$ b: F: D7 B
  2.     Dim P1(2) As Double, P2(2) As Double, P As Variant" P1 ]" B" ~3 T
  3.     Dim L1 As AcadLine, L2 As AcadLine, L3 As AcadLine, L4 As AcadLine& G5 j1 l5 y: I& f+ b8 y
  4.     Dim L5 As AcadLine, L6 As AcadLine, L7 As AcadLine, L As Variant
    , u  j  P% i! i4 v
  5.     Dim C1 As AcadCircle, C2 As AcadCircle, C3 As AcadCircle
    4 h, x0 x, w% }' P" N( y
  6.     Dim R1 As Double, R2 As Double, R As Double# F. \+ @0 p) `* [  k) L+ p
  7.    
    : _, s! T. @$ J" m/ r
  8.     '初始化迭代运算的边界) Z/ q& q" u" e0 w8 [/ U
  9.     '下面运算中R为小圆半径
    & ~1 j/ Q4 g7 a, f4 Z
  10.     'R1为下边界,采用默认值0! ]$ {# l" t5 e+ f
  11.     'R2为上边界,根据本图实际情况采用20+ L) }" E2 n4 w1 I
  12.     R2 = 208 Q% c, P$ ]6 g, [  P# u
  13.     $ Q/ ~+ `# G  h- m- A/ }6 _
  14.     With ThisDrawing9 T. N" p/ u$ X" O! O- J
  15.         '画四边形
    # i/ q) o" q1 v9 p# R
  16.         '
    . `1 z" K8 c2 O) Q* Q+ L" d4 n
  17.         'P1为原点,采用默认值
    9 M& E! A! H* b
  18.         'P2点赋值为(100,0),其中Y坐标和Z坐标都采用默认值
    / J0 u7 r# j1 E4 }8 V
  19.         P2(0) = 100
    9 T+ Q( m- `* j2 b9 P
  20.         '画下方长度为100的水平直线L1,起点为原点P1,端点为P2(100,0)- r2 G/ ?  h% L: q
  21.         Set L1 = .ModelSpace.AddLine(P1, P2)
    9 B* L( r! J$ u, s- X- K
  22.         '以P2(100,0)点为圆心,半径90画圆C12 Y& [: A) B  y0 E5 W  c
  23.         Set C1 = .ModelSpace.AddCircle(P2, 90)6 Q4 b5 n5 e. P, i, O9 q
  24.         'P2点重新赋值为(0,70)
    + [+ p- I8 Q5 J& |3 L+ c
  25.         P2(0) = 0: P2(1) = 70
    - g2 t/ t! G* `8 F  c
  26.         '画左侧长度为70的垂直直线L2,起点为原点P1,端点为P2(0,70)5 m. a# c- @, O7 [0 }
  27.         Set L2 = .ModelSpace.AddLine(P1, P2)3 h/ p3 c8 h3 m# y
  28.         '以P2(0,70)为圆心,半径80画圆C2
    # V; s. f( v4 a+ d: \& x: `* L
  29.         Set C2 = .ModelSpace.AddCircle(P2, 80)4 }3 h' D7 G8 t1 \' G4 ^
  30.         '获得圆C1和圆C2的交点坐标数组P5 w5 C6 R% j# k, M4 v
  31.         'C1与C2共有两个交点,因此数组P内共有6个元素
    6 y7 n6 `( W% C
  32.         '前3个是其中一个交点的三坐标,后3个是另一个交点的三坐标, Y7 p" q- r" t
  33.         P = C1.IntersectWith(C2, acExtendNone)
    . N( Z* C! n' A" A7 E
  34.         '检查两个交点中哪一个的Y坐标较大,即将该交点坐标赋值给P2
    2 D& O* x+ A9 Z( {4 e5 d
  35.         If P(1) > P(4) Then1 a) J6 g! M" w
  36.             P2(0) = P(0): P2(1) = P(1)
    + R9 `" T  M/ Z+ x+ k5 _7 _1 l
  37.         Else
    3 A" s- C) Y6 U4 H: p% J' f3 ?
  38.             P2(0) = P(3): P2(1) = P(4)
    / J: _$ _' e4 X, q
  39.         End If
    % ]- c% d  z  A" Q& F: g
  40.         '画右侧直线L3,起点为下方水平直线L1的端点,端点为两圆上方交点P2
    8 n0 `$ _* [5 M, ^0 P# ^( y
  41.         Set L3 = .ModelSpace.AddLine(L1.EndPoint, P2)' U+ D5 ?2 h$ v, v* \+ @
  42.         '画上方直线L4,起点为左侧垂直直线L2的端点,端点为两圆上方交点P2- h6 N; U% k6 O( Z4 T9 G
  43.         Set L4 = .ModelSpace.AddLine(L2.EndPoint, P2): b7 `: j- p' x. S" ~- c# }
  44.         '原位复制下方水平直线1,得到新直线L53 M& v0 O! \* g/ y; J2 k( n
  45.         Set L5 = L1.Copy
    5 b. X, H; C: t4 x  W; \2 Z4 X4 F( x
  46.         '旋转L5,以下方水平直线L1和上方直线L4的延长线交点为基点,旋转角为上方直线L4角度的一半) B  b/ v& Q( z
  47.         '此直线L5即为下方水平直线与上方直线L4之间的角平分线' T6 C6 b0 Y, S( v* u
  48.         L5.Rotate L1.IntersectWith(L4, acExtendBoth), L4.Angle / 2
    7 ^+ F6 v/ S6 E
  49.         '随便画一个圆L3备用(用作将来的大圆)
    9 f6 \* }3 x2 Q9 O, f* k
  50.         Set C3 = .ModelSpace.AddCircle(P1, 1)
    , @2 C0 }) |  E5 {+ H! Y! {
  51.         '复制角平分线L5,得到新直线L6备用(用作两小圆圆心连线的垂直平分线)
    0 ~  D' u5 A& |( F
  52.         Set L6 = L5.Copy. V% u0 r2 [# L$ a! h$ I5 D
  53.         
    % N# R2 f# z* A. N# \' w4 a0 g
  54.         '下面迭代运算,寻找合适的圆0 N( q, |7 P; m* ~
  55.         Do
    4 P* k" `$ ^/ L+ A2 N
  56.             '以两个边界的平均(中间)值为小圆半径$ d$ s) L: ?9 _- i3 R, Y* `: }# p
  57.             R = (R1 + R2) / 2
    1 w6 x' \" h' p# C5 i
  58.             '向上偏移下方水平直线L1,距离为R,得到新直线数组L
    1 Y2 f) W! \* a7 ?4 b3 {
  59.             '由于偏移直线只能得到一条新直线,所以数组L中只有一个元素即直线L(0)
    7 w: l! P! P5 p% [! I) O/ ]+ Z
  60.             L = L1.Offset(R)  J8 a1 \. y5 I4 A, l
  61.             '将直线L(0)赋值给L7
    2 L; j2 l: A* ~, M  P* k% h
  62.             Set L7 = L(0)( f* o5 C; t. S
  63.             '向右偏移左侧垂直直线L2,距离为R,得到新直线数组L,其中新直线为L(0): @0 X: ]9 P- `/ I0 D" d2 N  j
  64.             L = L2.Offset(-R)  D  E1 g+ h( C* l% L
  65.             '把圆C1的圆心移到偏移得到的两条新直线的交点
    " J# f9 ~7 o; ~5 m+ W; G' X! V  i
  66.             C1.Center = L7.IntersectWith(L(0), acExtendNone)/ V3 a/ c- N5 U9 k9 j
  67.             '圆C1的半径改为R
    ; z, p/ B+ ^! Y6 U
  68.             '此圆即为左下方半径为R的小圆
    3 e* e& y; m- c' h( w7 R! |( q( l( B
  69.             C1.Radius = R
    * |3 T  F4 h0 s  E8 c/ h; Q
  70.             '删除两条偏移得到的新直线, |/ v- A' n% D) g( ~$ _: D# O# O  i
  71.             L7.Delete) v0 X6 ]' ^2 Q2 `7 V
  72.             L(0).Delete3 Z* ?, S8 ?+ h! @6 N) U
  73.             '用同样的方法得到右上方半径为R的小圆,然后删除辅助线+ Z' w; F6 y0 b( f/ \
  74.             L = L3.Offset(R)" I' ?/ g: ?' D0 D- E
  75.             Set L7 = L(0)
    ; ]/ y7 |$ _# o- f. Q+ S
  76.             L = L4.Offset(-R)
    - {0 n* w. @7 p, g% M9 e
  77.             C2.Center = L7.IntersectWith(L(0), acExtendNone). }" y* v0 A2 B3 V7 c9 P
  78.             C2.Radius = R% Y8 W. g/ Q: V% F5 j& Z2 ~# [: N1 f; m
  79.             L7.Delete
    - I, M4 |! d% s
  80.             L(0).Delete
    ( W$ S! R* F5 m- c! v8 R" l
  81.             '将直线L6的起点移到左下方小圆C1的圆心
    + R. ~4 _, s7 f) N1 V; l2 a
  82.             L6.StartPoint = C1.Center, b: j) O! c* I! o0 Y' t) c
  83.             '将直线L6的端点移到右上方小圆C2的圆心
    2 C2 `" {; d# s! E! A" F
  84.             L6.EndPoint = C2.Center
    2 m8 L& D: y3 c0 r9 S2 t7 V
  85.             '计算直线L6的中点并赋值给P2点
    ! d; O1 F+ \  t' b4 F
  86.             P2(0) = (L6.StartPoint(0) + L6.EndPoint(0)) / 25 ^8 c& q' x- A9 m4 T" q8 p# g/ u! _
  87.             P2(1) = (L6.StartPoint(1) + L6.EndPoint(1)) / 25 o, y$ t6 ^( P2 X) e
  88.             '旋转直线L6,基点为其中点,角度90度
    8 R$ {: Y- _! S6 X7 n3 e- h
  89.             '此直线即为两小圆圆心连线的垂直平分线: [+ X: Y8 \8 z+ `6 p% e, l6 s
  90.             L6.Rotate P2, .Utility.AngleToReal(90, acDegrees)$ C9 [) v; G) R# j( V, p; s% H
  91.             '大圆C3圆心移到垂直平分线L6和角平分线L5的交点3 y  M; l7 t) a) N5 L0 W8 L) J# c
  92.             C3.Center = L6.IntersectWith(L5, acExtendBoth)8 A, P  Q2 E3 H# t+ }
  93.             '大圆C3半径改为等于其圆心Y坐标,此时大圆C3与上下两直线相切
    " Y: h7 U; ^6 |; n9 q
  94.             C3.Radius = C3.Center(1); c/ N! Y; ^' F& M
  95.             '获得大圆C3与左下方小圆C1的交点数组4 @( N( c& F) `
  96.             P = C3.IntersectWith(C1, acExtendNone)
    % n3 n) C& _1 P! I9 N. h. h  y6 @
  97.             '检查大圆C3与左下方小圆C1是否只有一个交点(即相切). A* b7 y0 v7 q9 X
  98.             '同时检查迭代运算是否已到极限
    " D, L& S) P$ j  ~4 A) y
  99.             If UBound(P) = 2 Or R = R1 Or R = R2 Then) n( Z) X- l+ Y! J0 _
  100.                 '当两圆相切或迭代运算已到极限时结束循环; E/ o: D; Z3 I# L2 V8 Y0 s. Y
  101.                 Exit Do
    $ R/ ~5 J: C$ |( X7 q; T
  102.             ElseIf UBound(P) = -1 Then% I1 f: ?! f- a! `
  103.                 '当两圆没有交点时说明小圆半径太小4 R8 [2 I' p; M% R# p; h' L% k- o
  104.                 '把小圆半径做为新的迭代运算的下边界,重新尝试
    6 C4 P2 s$ H; A
  105.                 R1 = R( o4 z/ j6 U0 W9 R: y$ T
  106.             Else
    0 U: L4 o7 E* {
  107.                 '当两圆有两个交点时说明小圆半径太大
    6 u. C; G8 Z- Z' G4 U
  108.                 '把小圆半径做为新的迭代运算的上边界,重新尝试
    7 B# d1 |3 h6 r# n/ W0 O1 U) J! p& G
  109.                 R2 = R; I) X3 H4 V( U3 m1 q7 i" i9 |
  110.             End If
    - U+ ]1 p- j: K! _) E1 F# Z
  111.         Loop
    $ e0 w# \) i' K+ R% c* F( N/ _
  112.         '图形完成后删除角平分线和垂直平分线
    ( G; j/ C* _) ?8 L2 j( Z' ^
  113.         L5.Delete
    * j; k% h. e* R% k9 l3 Q$ {
  114.         L6.Delete
    * t- T7 N; z3 J  f- V
  115.     End With
    # i8 h* J! f3 P
复制代码
运算上面的代码可以直接得到整个图形
: L; f& O6 s& j  p$ h  y! y- |0 }有兴趣的朋友可以用LISP或其它二次开发方法编制画本图的程序.有奖励哦
发表于 2011-8-30 10:08:21 | 显示全部楼层 来自: 中国江苏苏州
这个图低版本下画出确实蛮难的。
发表于 2011-10-30 20:28:54 | 显示全部楼层 来自: 中国广东深圳
估计这个画法还要点几何功底,我也试了很久没有试出来,用04的。应该是R和r直接的关系要利用好吧,不过现在几何忘记的差不多了
发表于 2011-10-30 20:51:20 | 显示全部楼层 来自: 中国广东深圳
39楼有误,两个大小不一样啊,不会截屏。自己测量就知道了
发表于 2011-10-30 21:01:43 | 显示全部楼层 来自: 中国广东深圳
确实,在PROE里用约束很快可以画出来,测出来和前面那位用Proe的结果一样
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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