QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4750|回复: 32
收起左侧

[已解决] 圆的画法

 关闭 [复制链接]
发表于 2008-9-24 16:35:42 | 显示全部楼层 |阅读模式 来自: 中国江苏南通

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
已知弦长与弧长,如何画圆
发表于 2008-9-24 17:08:33 | 显示全部楼层 来自: 中国云南昆明
你的弧长是大于1/2圆周还是小于(大于和小于出现两个结果的)?弦长是肯定小于直径的,等于直径你就不会问了! 你还缺一个条件:要么是对应角度,要么是周长!下图到底是哪种?如何是好?
% g" z4 P8 c7 y" x$ Y
' q2 \1 v' d" _5 T- A, G- i% B5 `[ 本帖最后由 914438418 于 2008-9-24 17:12 编辑 ]
001.jpg

评分

参与人数 1三维币 +5 收起 理由
唐昕晨 + 5 技术讨论

查看全部评分

发表于 2008-9-24 17:43:26 | 显示全部楼层 来自: 中国浙江温州
按实际来说,你说的条件本来可以确定一个圆了,但是AUTOCAD好象没有相关的命令,所以很难直接做出来,6 \0 m; N% w7 h! p
        有一个很笨的法子,画出已知直线,以直线两端随便画一个弧,选中这个弧,在工具-查询-列表显示中可以看到它的弧长,根据与已知弧长的差别进行拉动,反复查询,对比,拉动,最后得到想要的弧,就可以求出圆了.
' @; h* m' h; N( o- s    想看到比这个办法更高明的办法,期待中.

评分

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

查看全部评分

 楼主| 发表于 2008-9-24 18:51:17 | 显示全部楼层 来自: 中国江苏南通

回复 2# 914438418 的帖子

是前面一种,请指教.
发表于 2008-9-24 21:20:47 | 显示全部楼层 来自: 中国吉林吉林市
3#的办法是可行的,不过要采用2005llnn的"精确选点法",就更容易了。: y0 G, d0 O$ J- D
比如:要做一个弦长为4,弧长为8的圆,可以先做一个弦长40000的直线,再拖动调整弧长为80000的弧,很容易精确到个位,然后缩小10000倍,相当于精确到小数点后4位。9 O1 {: [2 N7 o8 O, W5 F3 J
根据所需要的精度,依此类推。
$ p3 R" _. @. }  ~8 } 3 _0 ~5 k% w/ {( t
参考贴子7 m/ u) G- ~% \( ~7 ?4 g) R
http://www.3dportal.cn/discuz/viewthread.php?tid=201404&highlight=%BE%AB%C8%B7%D1%A1%B5%E3%B7%A8
发表于 2008-9-25 10:00:00 | 显示全部楼层 来自: 中国上海
老老实实计算出相应的半径和圆心角,画起来也是很快的,而且准确。
发表于 2008-9-25 12:37:24 | 显示全部楼层 来自: 中国上海
原帖由 lhf999 于 2008-9-25 10:00 发表 http://www.3dportal.cn/discuz/images/common/back.gif
* N$ H5 `1 O2 G, w5 b# G) E老老实实计算出相应的半径和圆心角,画起来也是很快的,而且准确。

% I4 @' B2 F1 \* R3 d0 h8 z& T% X! R$ C1 q; ^/ y* V" u
我也是这么弄的..........: g9 r2 p( p+ `( `! t; V: x! ~2 p" O" H
看来我们都太规矩了点...
* L1 |! O- T' V+ M9 q$ m) V8 {5 m不知变通啊
 楼主| 发表于 2008-9-25 17:58:41 | 显示全部楼层 来自: 中国江苏南通

回复 6# lhf999 的帖子

请问半径与圆心角怎么求呢?我问了好多人了,没有答案
发表于 2008-9-26 07:09:49 | 显示全部楼层 来自: 中国浙江温州
顶起来,不要沉了,偶也想知道计算方法,6楼和7楼既然知道,就请贴出来,大家学习下.
发表于 2008-9-26 09:08:34 | 显示全部楼层 来自: 中国山东聊城
呵呵,我只会笨办法,看来还是学艺不精啊,不懂变通
发表于 2008-9-26 11:25:37 | 显示全部楼层 来自: 中国云南昆明
我有个方法供大家参考,只是个想法,正确性请大家指教!如图,做直线的垂直平分线,镜像后,看那个菱形,调整角度到四个角相等的时候就是圆了 !角度是可以测量的!5 |, _2 {4 p, Z3 c
& _( j/ p* a. F( i5 E4 L- F
[ 本帖最后由 914438418 于 2008-9-26 11:30 编辑 ]
001.jpg
发表于 2008-9-26 13:26:01 | 显示全部楼层 来自: 中国辽宁营口
VBA代码:
3 l. z1 y- e6 {' v9 z" A/ ?------------------------------------------------------------------------------------------------------------------------
: f% v2 q8 }+ r" w8 _: qDim S1 As String, S2 As String
; M" G. E) E% a6 h& TSub H()
2 \' v9 L9 m, L- W    Dim Space As Object, P As Variant, P2 As Variant, L As AcadLine
0 n9 E) q: q3 }( ]( Z    Dim A As Double, A1 As Double, Ag As Double, Ag1 As Double, Ag2 As Double, R As Double
2 O$ s! w' E6 Y: d( a. M    With ThisDrawing
: i/ ?5 v& k9 k; p& i$ q; y        If .ActiveSpace = acModelSpace Then0 B% F2 w) S2 ^1 ^! ~3 |4 x
            Set Space = .ModelSpace
4 [; |# y. R" e: n$ J( O        Else
/ P0 W$ [4 v9 I% q% E) u" ]            Set Space = .PaperSpace
( L! s7 ?8 d3 J2 s- g        End If
; P9 M9 X5 O0 X; S" S: ]        On Error GoTo 10
: B! ]( o' S" Z/ x) b, E3 u        P = .Utility.GetPoint(, vbCrLf & "指定弦起点:" ): O# F' A" Z3 u3 ~8 K* W
        On Error Resume Next
2 K, Z9 g' Z" {$ _' y        Do
- ~! s- x4 p! e0 _. c" j" A            Err.Clear' ~& J5 _4 h- r: A
            .Utility.InitializeUserInput 0, "Y N"2 t; B0 x7 a. @, u4 d; k1 C
            P2 = .Utility.GetPoint(P, vbCrLf & "指定弦端点或[保留弦(Y)/不保留弦(N)]<N>:" )
7 {( v9 L& n6 ?- k. G$ ~+ g! C            ; A/ x6 j& \, m
            If Err.Number = 0 Then
% c' W) i& B4 N( {2 i+ K  m- G& ~& L                Set L = Space.AddLine(P, P2)" G' h% W5 X" I6 N
                Do6 j/ n# a8 T2 V, y! }. L4 p
                    Err.Clear5 Y4 _) T6 F2 J; P
                    .Utility.InitializeUserInput 6, "A C"9 f! O. l- E, |* e
                    A = .Utility.GetDistance(P, vbCrLf & "指定弧长或[画圆弧(A)/画圆(C)]<C>:" )
" Y7 A5 C+ A7 y# C                    If Err.Number = 0 And A > L.Length Then4 W# D; z$ m& m
                        Ag2 = 3.14159265358979: K0 t+ M1 T7 I: G! f
                        Do  R- J/ h* e" T  u
                            Ag = (Ag1 + Ag2) / 2#' P6 Z) Q6 s  N: R& q
                            A1 = Ag * L.Length / Sin(Ag)
$ G) b/ t0 G+ N2 E  q                            If A1 = A Or Ag = Ag1 Or Ag = Ag2 Then Exit Do
1 Q; u- i! W* i$ d1 }                            If A1 > A Then
- x) f: g1 I. S% D% {  a3 i                                Ag2 = Ag
; G4 T8 t" n( L4 Z' K  l! I: Z, V                            Else1 e. ]9 N5 B. {( x+ I- ^2 ^3 l$ ?
                                Ag1 = Ag
0 Z# A& A% N  Z6 ^                            End If4 Q( H5 Y% e( E: G
                        Loop
, u8 w: k/ S8 ]+ }# m                        R = A / Ag1 / 2#" @- W! s' K  m+ [- @
                        P = .Utility.PolarPoint(P, L.Angle + 1.5707963267949 - Ag, R)
  H# ]; W6 O1 \( ]4 o4 C1 L: ?                        If S2 = "A" Then7 o; E, O4 m; i" O: s) ^
                            Space.AddArc P, R, 4.71238898038469 + L.Angle - Ag, 4.71238898038469 + L.Angle + Ag
, r7 u# z! @9 p' u1 u' s# I) n                        Else% _0 z; `2 L* U. Y% p4 V& b! d, S
                            Space.AddCircle P, R0 u( n9 j1 [9 E& J# j2 C3 x/ M
                        End If
' U  g* g! R* n/ z# w% o                        If S1 = "N" Or S1 = "" Then L.Delete
1 k( U5 g8 F( s3 _                        Exit Do
- g1 \6 ?, P: ?                    ElseIf Err.Number = -2147352567 Then
! E& f$ F  ?5 b) J                        L.Delete
! M6 w: ?: C# p& e7 {                        Err.Clear
* V4 C) e# R& A3 |% s/ w3 d  m                        Exit Do5 a- X' ]- ]: L" z
                    ElseIf Err.Number <> 0 Then
  @8 u" e5 J# L- H2 X                        S2 = .Utility.GetInput+ s$ S& d  Q1 i
                    End If  S. y, B" m$ g% D2 K# g3 e
                Loop' H0 X# v, p& m  f& ]' ]
            ElseIf Err.Number = -2147352567 Then
8 L1 O: p) ^' f: d, A/ r. F                Exit Do
4 v7 q6 `  o- t            Else
! ?7 m: |/ V. U4 S4 z6 z* j                S1 = .Utility.GetInput, @8 [- W8 ^: W5 z. W( }) h4 l
            End If7 R7 s( ]2 h) {6 l4 R
        Loop Until Err.Number = 00 ?3 B2 L* ]# }
    End With  ~4 ^- L$ R( @9 F/ O3 j# ~
10: End Sub
+ }$ N. M+ q/ b1 G3 O$ Q; M------------------------------------------------------------------------------------------------------------------------
" Q6 J6 x# O( l: L& J' O/ i; V使用方法:
# }2 M1 m/ u( M8 E, g. C1.把上面代码粘贴到VBA编辑器Thisdrawing代码窗口,或下载附件解压后加载  C, q/ L% E5 u, |3 \. m
2.Alt+F8,在弹出的"宏"对话框中点运行按钮,或在命令行键入"-vbarun",回车,"H",回车8 N+ n8 {& [% u: @
3.按命令行提示操作

根据弦长和弧长画圆弧.rar

7.67 KB, 下载次数: 13

评分

参与人数 1三维币 +10 收起 理由
★新手★ + 10 应助

查看全部评分

发表于 2008-9-26 13:29:46 | 显示全部楼层 来自: 中国浙江温州
楼上的办法可以是可以,但是还不是那种用计算得出的结果,期待那两位可以计算的高手把方法贴出来,大家都学一招,先谢了.
发表于 2008-9-26 13:47:23 | 显示全部楼层 来自: 中国云南昆明

回复 16# bbgk 的帖子

记得在初中的时候算好像还有一个条件是:那条边到直径的距离的条件的!如果非要算数算。怕是要用积分了!你要再给出一个条件的。现在条件不足!9 e. u) \( z5 H( r
. _% {* ^% L9 p6 m( L* H( C8 a
[ 本帖最后由 914438418 于 2008-9-26 13:50 编辑 ]
发表于 2008-9-26 14:04:51 | 显示全部楼层 来自: 中国浙江温州
还是版主高明,不过这种二次开发并不是什么人都可以做的了,只能拿来用用了,先下载了.谢了.
发表于 2008-9-26 15:13:22 | 显示全部楼层 来自: 中国浙江温州

回复 16# 914438418 的帖子

可是6楼和7楼的说法是可以算出来的啊,应该条件是够了吧,偶没学过微积分,关于这个就不懂了
发表于 2008-9-26 16:00:31 | 显示全部楼层 来自: 中国云南昆明

回复 18# bbgk 的帖子

用老大的程序啊!那个能搞出来!你非得要数学算想破脑袋也想不出来嘛!
发表于 2008-9-27 11:24:41 | 显示全部楼层 来自: 中国江苏徐州
这问题应该简单吧!
0 h0 W: k0 y0 }# b: U: u
7 `6 d5 J1 W4 }# O命令 :c
' g) i6 I( ~. P; i命令:3p
) i0 k6 ?9 B, h# G$ J  u. y第一点在A点3 E5 ^! _4 A* M. s2 d6 C9 V/ c! `
第二点在B点
' {: }- p* x0 P- S& }( f5 ?$ k. T命令: tan
& M5 X5 C! Z+ [2 e4 ?& x" P" |在圆弧上任意切一点- ?* j# _* W' D. ]
OK9 Q, C& @* X" y7 P( C6 H9 Z4 V
9 ^2 |- h' _+ a& ?+ L: f( k" F
不知是不是楼主说的意思
3 |4 z3 w& }! V3 z
/ y+ D) I) l( j. G/ b0 C' S! i" G9 ^" M; G
SANDIANYUAN.JPG
3 ]9 k6 Q- ^0 M
- x" Q& d$ l, q6 e3 I[ 本帖最后由 xuj321123 于 2008-9-27 11:30 编辑 ]
SANDIANYUAN.JPG
发表于 2008-9-27 17:03:33 | 显示全部楼层 来自: 中国云南昆明
原帖由 xuj321123 于 2008-9-27 11:24 发表 http://www.3dportal.cn/discuz/images/common/back.gif
+ O" \9 }% U, i% k/ w' b: I这问题应该简单吧!1 e# m' L( x1 P4 E5 h+ g  z; h

. I9 B8 a1 B8 e0 n命令 :c
( f. ]# o  t) \4 V# g0 k命令:3p* H3 ^9 u" H1 A" d: M
第一点在A点" e6 }! l: ~1 N2 ^1 l0 O' Y
第二点在B点  E  m+ i  C: \) ]2 Q
命令: tan
) t# z: S( i, u& c* {在圆弧上任意切一点& ?& J: M8 ~  N% P+ X5 A  j
OK4 B( n0 z' X1 V+ S5 Y$ {) c) |
& d. G2 M6 t" e& Z9 @: ]& }4 t4 q
不知是不是楼主说的意思
# m5 g3 p2 b* h# _0 \/ u' S. B
5 o3 T1 _  j6 F# }9 {+ C, _! Z
0 e) X# d/ z3 Q; R  L  f' b995240

; H) S! i& W( `4 r) d; Y1 C咋就没想到3点画圆法呢,我真是笨死了!谢谢你!
发表于 2008-9-27 22:53:20 | 显示全部楼层 来自: 中国陕西西安

好东西好东好东西

好东西好东好东西

评分

参与人数 1三维币 -8 收起 理由
★新手★ -8 接连发3帖灌水!念你是刚注册,少扣点!警

查看全部评分

发表于 2008-9-28 09:25:30 | 显示全部楼层 来自: 中国上海
本要在此表示道歉...
  Y1 k1 r% a7 E. @没有考虑清楚就说这个自己用算的...
7 S7 q2 D+ e& J" S6 ], J7 X. M: L+ i后来算了一下发现没那么好算.对大家带来的麻烦表示歉意.# E; ~! U9 W7 C4 @% z3 _" ~+ u. ~
后来多方求教和查资料.总结一下可以按如下计算.
! S1 x* E, e: {% M4 Q" y设弦长为2a,弧长为2b,对应弧度为2x.半径为r+ f3 y/ r# {7 F* l3 B
则有:sinx=a/r,
/ ~1 j8 A" t( Y  e3 ^2b=2x*r
* h" {+ G% j  r) H可得:sinx=x*a/b7 }0 V+ ?3 t- L6 b0 \
这个方程解法相当麻烦.
- O- i( O7 z+ L" o* ^$ V7 ], @最准确同时也是最麻烦的解法是使用傅立叶级数.
: N/ ?0 H) a; p; ^但研究下来发现有其他的近似办法:
7 y- q- y0 ]5 Q# H& c) r5 S9 C1. 采用画图法:画出y=sinx和y=a/b*x两条函数曲线,交点处的x值及为所得.应该有2点.一个为小半弧,为一个大半弧5 L0 Z8 P# i! L
2. sinx采用无穷级数展开.sinX=X-X3/3!+X5/5!-X7/7!.....考虑到精度问题这么多应该是够用了(X3表示X的3次方,这里不知道怎么标上标)1 _% j8 j8 U/ z- L
0 t( r9 W( ]$ N- g/ i( |7 R
以上就是方程的解法...
- S0 z' r% ~+ Z4 w和老大的给的宏那个好用大家自己看看吧.
6 J) R( Z$ L: e9 ]
3 Z; b$ s8 S' b2 e2 L想问下xuj321123的方法是如何确定弧长的.我在使用到tan命令时点选空白的地方是没有用的.只有选一个本来有的线.这样弧长就和我所选的线位置相关,而不是一个确定的值了....

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 技术讨论

查看全部评分

发表于 2008-9-28 10:04:32 | 显示全部楼层 来自: 中国江苏徐州
楼上的朋友,楼主说的很明白:已知“弧长”和“弦长”,有这两样你作不出图来?怎么是个空白地? :L
发表于 2008-9-28 11:09:19 | 显示全部楼层 来自: 中国云南昆明
“想问下xuj321123的方法是如何确定弧长的.我在使用到tan命令时点选空白的地方是没有用的.只有选一个本来有的线.这样弧长就和我所选的线位置相关,而不是一个确定的值了....”0 {8 B+ @) ^/ I1 j% }! E

) {4 B% _: u- d' q# }) k- K5 x# z5 w: F+ u
你做一条辅助线,分别交于已知的两条线,三点画圆法就可以了,TAN命令都不要用!
发表于 2008-9-28 12:20:20 | 显示全部楼层 来自: 中国山东青岛
这个二次开发好像很难的样子。。。
0 T+ C, F: L6 y+ c9 F  o
. Q  N0 N: G6 p! N# ^这个圆弧按照楼主的意思好像并不是完全已知的,只知道弧长而已,哪来的三点
发表于 2008-9-28 12:27:32 | 显示全部楼层 来自: 中国上海
原帖由 xuj321123 于 2008-9-28 10:04 发表 http://www.3dportal.cn/discuz/images/common/back.gif
/ R% X/ p  q+ H: @( ]1 F7 `; ]楼上的朋友,楼主说的很明白:已知“弧长”和“弦长”,有这两样你作不出图来?怎么是个空白地? :L

! ^: B& Q* d8 _2 u9 E
" h0 u5 C* C: ~! i4 e* p- K" x. g8 }研究了一下你的画法.! u6 A: x2 R# @3 s8 y; }6 `+ w
不知道顺序是不是这样的* ~0 b: u4 h$ a* d
4 n* L( A$ V2 A5 |+ ?
先画好一个线段.长度等于弦长,再画一个弧,长度等弧长.
2 T  S' U/ K$ E) |5 ]' i0 O再利用这2条线使用3点画圆法,画出圆来.6 I, l7 ~% g1 x( V, d
1 H7 Q. i; G" i+ S
我画的时候没有先画那个弧,直接在一条线段上画圆的2个点. 没有实体可供tan ,所以画不出来,提示点无效.# Y0 h2 p( M2 M- a! o9 Q6 C

0 j2 j, ~5 N) `' U2 O& T问题是,你事先画好的弧如何保证他的弧长是楼主所需要的弧长?
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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