QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[已解决] 圆的画法

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

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

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

x
已知弦长与弧长,如何画圆
发表于 2008-9-24 17:08:33 | 显示全部楼层 来自: 中国云南昆明
你的弧长是大于1/2圆周还是小于(大于和小于出现两个结果的)?弦长是肯定小于直径的,等于直径你就不会问了! 你还缺一个条件:要么是对应角度,要么是周长!下图到底是哪种?如何是好?$ E/ {, I( D( ^; o$ T# h# @
, Z4 f5 K8 A  B& b, `4 D
[ 本帖最后由 914438418 于 2008-9-24 17:12 编辑 ]
001.jpg

评分

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

查看全部评分

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

评分

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

查看全部评分

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

回复 2# 914438418 的帖子

是前面一种,请指教.
发表于 2008-9-24 21:20:47 | 显示全部楼层 来自: 中国吉林吉林市
3#的办法是可行的,不过要采用2005llnn的"精确选点法",就更容易了。" Z! U7 A5 M7 j/ M6 P
比如:要做一个弦长为4,弧长为8的圆,可以先做一个弦长40000的直线,再拖动调整弧长为80000的弧,很容易精确到个位,然后缩小10000倍,相当于精确到小数点后4位。! e, E3 J6 e* @  E2 S, k- _# i
根据所需要的精度,依此类推。8 o( N( E- U# `: T% f

# [% q2 d# h4 y( M6 `参考贴子% U* |0 b6 l; {! }' `
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
6 z0 i5 b6 J# r2 |1 Z) P1 A! a. E老老实实计算出相应的半径和圆心角,画起来也是很快的,而且准确。
3 {4 V2 ~% e$ B' f+ G, l- g
- t; Q! _/ Q( o! L
我也是这么弄的..........
9 {9 U- c; I0 W) }/ i看来我们都太规矩了点...
" H& Y0 h9 ^8 a8 h1 S: k不知变通啊
 楼主| 发表于 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 | 显示全部楼层 来自: 中国云南昆明
我有个方法供大家参考,只是个想法,正确性请大家指教!如图,做直线的垂直平分线,镜像后,看那个菱形,调整角度到四个角相等的时候就是圆了 !角度是可以测量的!4 N, A  Z7 ?- [' G# h5 i

( E" R/ ?2 H3 {/ c: T[ 本帖最后由 914438418 于 2008-9-26 11:30 编辑 ]
001.jpg
发表于 2008-9-26 13:26:01 | 显示全部楼层 来自: 中国辽宁营口
VBA代码:
' ^# y8 R- p9 G+ u6 P+ n. b& y------------------------------------------------------------------------------------------------------------------------
2 q2 {% ?9 O% ~+ I- X1 WDim S1 As String, S2 As String
3 Z, M3 m% v! i& J, i8 \9 ?" G4 WSub H()! L. m( N  K8 J8 W% ^' Q
    Dim Space As Object, P As Variant, P2 As Variant, L As AcadLine+ G& t8 G/ E3 u' V4 X) n% T( D
    Dim A As Double, A1 As Double, Ag As Double, Ag1 As Double, Ag2 As Double, R As Double
" [2 k; ]: ^4 p    With ThisDrawing
/ s/ m; ]6 q; d" W* a' y/ j        If .ActiveSpace = acModelSpace Then8 O" d: u: B; v
            Set Space = .ModelSpace
6 K8 J. w9 P' T+ a5 A        Else/ L* C) E) k' b; g  i/ p3 |
            Set Space = .PaperSpace
8 _' n, C0 K. ]* G" h        End If! h4 F/ M0 ~7 e( B  d% ?- T( T
        On Error GoTo 10: n, ]1 R$ I  m
        P = .Utility.GetPoint(, vbCrLf & "指定弦起点:" )* U- S/ d1 r( }/ ~5 x8 E7 f8 h2 {
        On Error Resume Next# U# s5 t* R( K3 R
        Do
7 v- M5 }6 e- y! V- L1 p            Err.Clear! ]$ X. L% F$ p  F9 n
            .Utility.InitializeUserInput 0, "Y N"
$ O) r' N0 I" I% h1 D' O; M( }            P2 = .Utility.GetPoint(P, vbCrLf & "指定弦端点或[保留弦(Y)/不保留弦(N)]<N>:" )( c2 T: X# }' n* K  a# K. C# L
            
$ `0 [% b: Y3 G7 I            If Err.Number = 0 Then0 y3 ?( t2 i+ _7 I, W" j- N4 ^
                Set L = Space.AddLine(P, P2)( K! |. F6 x% v2 @. s! o: ^& |1 D- |
                Do) h! o3 |9 A2 x: G" j' h4 I
                    Err.Clear/ Y; y8 d) X: R- m" S, ]8 }6 V
                    .Utility.InitializeUserInput 6, "A C"
) V" W5 x7 S* Z" W. S1 u                    A = .Utility.GetDistance(P, vbCrLf & "指定弧长或[画圆弧(A)/画圆(C)]<C>:" )4 y! J* Q0 ^( b7 f% d6 k# p9 b
                    If Err.Number = 0 And A > L.Length Then8 A4 L3 ?' @$ w0 t
                        Ag2 = 3.141592653589790 U1 I$ G3 D' J3 ?6 a" H
                        Do" @. v: t- Y8 g& ~4 C
                            Ag = (Ag1 + Ag2) / 2#
6 {1 s) v5 r/ D) \2 t. l! _                            A1 = Ag * L.Length / Sin(Ag)% m6 J# D/ c  O7 h$ \; k  C
                            If A1 = A Or Ag = Ag1 Or Ag = Ag2 Then Exit Do
2 e: y' l0 @7 C                            If A1 > A Then: X; u) g9 t: j/ U, K+ g
                                Ag2 = Ag
5 L2 V" {* B; d% w                            Else/ D9 L6 x" G1 U6 c& Q; \
                                Ag1 = Ag3 M0 e$ C. q1 |3 i' A: N! F
                            End If* q/ T6 U7 O2 y+ w% w& a  _
                        Loop
4 D' }0 p& E; E/ z4 w                        R = A / Ag1 / 2#3 I; f; F' T& x  r* \1 |
                        P = .Utility.PolarPoint(P, L.Angle + 1.5707963267949 - Ag, R)
+ p/ g) W8 w& p/ d                        If S2 = "A" Then9 D- u" F, h7 d" }9 k
                            Space.AddArc P, R, 4.71238898038469 + L.Angle - Ag, 4.71238898038469 + L.Angle + Ag. o" G8 d" @8 y! e6 ~
                        Else
2 M% h9 }9 [6 W7 h* B                            Space.AddCircle P, R
+ T, L/ O( V* x) `9 @                        End If
0 h3 a: Q# g+ |                        If S1 = "N" Or S1 = "" Then L.Delete4 b& [2 w7 p& b  V. @8 E
                        Exit Do3 @! d6 ]3 T( o# j. g4 J4 n
                    ElseIf Err.Number = -2147352567 Then3 ]1 O4 {: A/ _3 r
                        L.Delete
. r0 f* p8 d" e$ T                        Err.Clear
! a) J7 c& W1 m  x* b9 L2 b4 X                        Exit Do
0 r! }, ?. w$ l' Z/ N! s                    ElseIf Err.Number <> 0 Then
  n9 C! E! p# J  t. I6 K" Q/ t                        S2 = .Utility.GetInput& ~9 u9 X! f6 t
                    End If
2 D# |# I% d' m. f; M1 C  U                Loop
. e0 T4 k2 F' k1 Z/ A- a6 e8 k) d) z            ElseIf Err.Number = -2147352567 Then
- X5 r' \# b3 D! Q  h" W                Exit Do
2 t2 C$ U) o' S0 q0 v            Else
" z$ ^) N; O* M1 d8 o                S1 = .Utility.GetInput2 g2 q9 I, F$ F9 Y! W9 B: m
            End If
, M  q* S2 t" U% r1 U        Loop Until Err.Number = 05 o# m7 o+ d' t4 J9 y
    End With
* H& z1 \; `6 a) E* h# t10: End Sub
6 X" @; O1 l$ U  V6 j2 L" d  o------------------------------------------------------------------------------------------------------------------------
" d2 D5 g2 n* m* D& z9 y- C* g8 z使用方法:
  Z9 Y: S# a. V3 w. H9 P( x( b1.把上面代码粘贴到VBA编辑器Thisdrawing代码窗口,或下载附件解压后加载1 F6 C4 a( ?: o+ k2 p' E* |
2.Alt+F8,在弹出的"宏"对话框中点运行按钮,或在命令行键入"-vbarun",回车,"H",回车1 `  M6 u3 Z2 z) P
3.按命令行提示操作

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

7.67 KB, 下载次数: 13

评分

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

查看全部评分

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

回复 16# bbgk 的帖子

记得在初中的时候算好像还有一个条件是:那条边到直径的距离的条件的!如果非要算数算。怕是要用积分了!你要再给出一个条件的。现在条件不足!4 ]' u0 W! L+ m
' i4 j7 P8 o% `! P: _7 X9 w* W/ f
[ 本帖最后由 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 | 显示全部楼层 来自: 中国江苏徐州
这问题应该简单吧!  \1 J" V. @% \

$ P$ ~6 a& \: m  D1 m3 Q$ V  B$ ^命令 :c
1 H% T% M; p7 M9 ?5 \/ }) s+ W: H% K命令:3p
. V1 U# J# \9 j1 e( w# x/ y9 W) M$ B第一点在A点
: u$ [, Q& u+ M* n第二点在B点
; ?+ B9 d' c9 V2 `" X6 ?( f命令: tan
  ~& i4 o# X- v" w: \1 N7 r7 U* ?在圆弧上任意切一点
! L/ e4 W# P3 x5 cOK
5 p' I, n' Q% n4 @& q2 e/ {$ {7 n9 l; m6 g0 @& ^0 n& z
不知是不是楼主说的意思$ Y/ c+ H. a9 w# n. _0 I0 s6 v
5 N, r- p$ T6 O. X; @. K0 G/ {; k
- T" x4 O6 [: p! E
SANDIANYUAN.JPG
3 L* o1 [0 h: T' e( A. L( P( S
" Z. \9 L9 h& Y; T- a8 k- `! t[ 本帖最后由 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( v" H  `) q# ]
这问题应该简单吧!
+ \9 E* m0 E$ i  Q0 H1 K1 c) \, [; V7 A- z0 {% z9 m- A. w0 J
命令 :c) ~% r- p7 [6 Y/ n: T
命令:3p3 U& i* t7 p  \+ b
第一点在A点3 U- g  g! R+ K# B; s
第二点在B点
1 ?# I8 z7 O6 D/ u, `命令: tan3 I- P- y7 `/ O4 u+ _- H! u- z
在圆弧上任意切一点. `/ j: X4 ]$ \5 s# ^4 Q+ n
OK
. O! B% s& S: ~5 K7 r
+ J+ ]8 V( B8 v5 @+ B不知是不是楼主说的意思- O, [+ E: w7 d

; N$ z3 p5 }* t' `+ G6 u, n% @& R+ z
995240
" d+ R5 J5 V8 @
咋就没想到3点画圆法呢,我真是笨死了!谢谢你!
发表于 2008-9-27 22:53:20 | 显示全部楼层 来自: 中国陕西西安

好东西好东好东西

好东西好东好东西

评分

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

查看全部评分

发表于 2008-9-28 09:25:30 | 显示全部楼层 来自: 中国上海
本要在此表示道歉...
5 K7 p- ^2 b0 `/ V3 ?4 d/ w3 \没有考虑清楚就说这个自己用算的...
  [6 x$ Y7 W9 |5 O; X后来算了一下发现没那么好算.对大家带来的麻烦表示歉意.# J' F% n6 S! L- ~9 z& U3 C( ]
后来多方求教和查资料.总结一下可以按如下计算.0 I3 H( R; p. V% I4 m, O' d+ x8 V
设弦长为2a,弧长为2b,对应弧度为2x.半径为r5 v5 z6 _& w) E  j( B
则有:sinx=a/r,
0 l( v% H$ P5 W9 f2b=2x*r7 x# y2 v9 l! K
可得:sinx=x*a/b* b# X1 J, x& G% V! f
这个方程解法相当麻烦.
1 {# k; h; M* c" T4 z2 j# F/ c最准确同时也是最麻烦的解法是使用傅立叶级数.
1 I. o2 y% I% y9 d2 D& }0 M6 R但研究下来发现有其他的近似办法:
& T, j* b( Q9 y3 P2 m% d1. 采用画图法:画出y=sinx和y=a/b*x两条函数曲线,交点处的x值及为所得.应该有2点.一个为小半弧,为一个大半弧4 y$ m! @  X4 A2 b! x2 B' v9 k
2. sinx采用无穷级数展开.sinX=X-X3/3!+X5/5!-X7/7!.....考虑到精度问题这么多应该是够用了(X3表示X的3次方,这里不知道怎么标上标)% ?6 G4 e7 h+ f' B% K
0 C, e1 }: I7 o4 J
以上就是方程的解法...
) [  ?, ]" A) l3 A和老大的给的宏那个好用大家自己看看吧.- `, x" V; |- C) U: G
. e' Y5 p  Y0 G# h( {
想问下xuj321123的方法是如何确定弧长的.我在使用到tan命令时点选空白的地方是没有用的.只有选一个本来有的线.这样弧长就和我所选的线位置相关,而不是一个确定的值了....

评分

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

查看全部评分

发表于 2008-9-28 10:04:32 | 显示全部楼层 来自: 中国江苏徐州
楼上的朋友,楼主说的很明白:已知“弧长”和“弦长”,有这两样你作不出图来?怎么是个空白地? :L
发表于 2008-9-28 11:09:19 | 显示全部楼层 来自: 中国云南昆明
“想问下xuj321123的方法是如何确定弧长的.我在使用到tan命令时点选空白的地方是没有用的.只有选一个本来有的线.这样弧长就和我所选的线位置相关,而不是一个确定的值了....”( \8 N# V' [! {2 b6 ^# T5 \* E
* _% m5 _- S: ^" o  d9 C; \: K
& E; y; F$ V) }& z6 a, Q0 u$ E( F
你做一条辅助线,分别交于已知的两条线,三点画圆法就可以了,TAN命令都不要用!
发表于 2008-9-28 12:20:20 | 显示全部楼层 来自: 中国山东青岛
这个二次开发好像很难的样子。。。8 x* m9 Z/ ]5 ^8 @1 i/ X( X

4 [3 M4 p% Z+ I1 k% e这个圆弧按照楼主的意思好像并不是完全已知的,只知道弧长而已,哪来的三点
发表于 2008-9-28 12:27:32 | 显示全部楼层 来自: 中国上海
原帖由 xuj321123 于 2008-9-28 10:04 发表 http://www.3dportal.cn/discuz/images/common/back.gif
+ q; e: U/ w8 ]9 v. I3 q# X楼上的朋友,楼主说的很明白:已知“弧长”和“弦长”,有这两样你作不出图来?怎么是个空白地? :L
7 n- f9 G, w5 K+ x& U9 m- X4 N
6 s' g6 ^' V/ X
研究了一下你的画法.- X4 [. F8 S$ i/ J3 g8 n: O0 g
不知道顺序是不是这样的! p$ M4 @* }# I/ L- T
+ p" U; x: J: V! Z& v
先画好一个线段.长度等于弦长,再画一个弧,长度等弧长. * o, P, ^+ g: Z* S4 e  u
再利用这2条线使用3点画圆法,画出圆来.
4 X7 X  v% V9 H# z9 O" P8 A) F' D, h- S" q  S1 ^) `6 D" ^  M
我画的时候没有先画那个弧,直接在一条线段上画圆的2个点. 没有实体可供tan ,所以画不出来,提示点无效.3 L& ~6 p- y* F, x

, I8 X" w# ~4 Q' {3 m! y问题是,你事先画好的弧如何保证他的弧长是楼主所需要的弧长?
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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