QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[已解决] 圆的画法

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

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

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

x
已知弦长与弧长,如何画圆
发表于 2008-9-24 17:08:33 | 显示全部楼层 来自: 中国云南昆明
你的弧长是大于1/2圆周还是小于(大于和小于出现两个结果的)?弦长是肯定小于直径的,等于直径你就不会问了! 你还缺一个条件:要么是对应角度,要么是周长!下图到底是哪种?如何是好?
! g( Y, P( U0 y8 k: i+ I0 F' N( ]2 B& q4 `* _2 D! h4 R9 u% c
[ 本帖最后由 914438418 于 2008-9-24 17:12 编辑 ]
001.jpg

评分

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

查看全部评分

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

评分

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

查看全部评分

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

回复 2# 914438418 的帖子

是前面一种,请指教.
发表于 2008-9-24 21:20:47 | 显示全部楼层 来自: 中国吉林吉林市
3#的办法是可行的,不过要采用2005llnn的"精确选点法",就更容易了。
8 F% A! X8 z+ Z  @& O1 r# K比如:要做一个弦长为4,弧长为8的圆,可以先做一个弦长40000的直线,再拖动调整弧长为80000的弧,很容易精确到个位,然后缩小10000倍,相当于精确到小数点后4位。
$ @" L6 y3 y0 A, o* Z根据所需要的精度,依此类推。
8 N; C( P) ]* q3 p8 y/ i: {+ G9 p 7 u! y$ w, b8 ^' X7 c% s5 U4 n/ n0 S
参考贴子
! N% Z& |% o/ H7 h+ G5 u( Nhttp://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.gif2 w8 `- `7 U2 p0 j
老老实实计算出相应的半径和圆心角,画起来也是很快的,而且准确。
/ A) j4 @  b% b! U1 u
! o0 Q$ \) l; ~  r; G5 D0 M
我也是这么弄的..........
4 }) X0 f: X4 v2 @+ f7 d9 \' J看来我们都太规矩了点...
4 P: E# |% z, O  h) g% L; E; [不知变通啊
 楼主| 发表于 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 | 显示全部楼层 来自: 中国云南昆明
我有个方法供大家参考,只是个想法,正确性请大家指教!如图,做直线的垂直平分线,镜像后,看那个菱形,调整角度到四个角相等的时候就是圆了 !角度是可以测量的!+ J9 R& \9 Q( s4 Y* o6 e: }7 _9 a

6 ]6 T  ^" L2 J' i; o/ A[ 本帖最后由 914438418 于 2008-9-26 11:30 编辑 ]
001.jpg
发表于 2008-9-26 13:26:01 | 显示全部楼层 来自: 中国辽宁营口
VBA代码:
' _  F4 Q4 \0 b( u2 A2 W0 ^; ]------------------------------------------------------------------------------------------------------------------------
9 \6 Z6 s' g2 _0 J9 y% q! }Dim S1 As String, S2 As String
3 o; u6 n* f4 m, ]Sub H()7 C9 `" r; T. p+ i
    Dim Space As Object, P As Variant, P2 As Variant, L As AcadLine
9 v! M' V/ J5 Z4 M0 v4 v# P    Dim A As Double, A1 As Double, Ag As Double, Ag1 As Double, Ag2 As Double, R As Double
, V* ~( t, D' `3 a    With ThisDrawing5 q9 X9 g% Y& u6 ?/ O
        If .ActiveSpace = acModelSpace Then( h% r2 g; r  f4 _% p' ^
            Set Space = .ModelSpace6 u0 W# j0 s& ?7 S' {9 z' N
        Else( D, o* R1 X7 j$ |9 t- V3 J
            Set Space = .PaperSpace1 `- o$ ]  `6 \3 i5 z9 D9 s; ]2 y
        End If/ K0 o1 r9 D# `' Z7 o: D- o0 t; b; T
        On Error GoTo 10
3 W, t& @+ ]/ F* w" P: ?! W        P = .Utility.GetPoint(, vbCrLf & "指定弦起点:" )+ G8 }" J7 E) J! @( ?
        On Error Resume Next: m# \) b5 M' T; j! D! A5 w+ V4 Z
        Do
+ |; U2 J8 D8 v3 V% M0 _8 g            Err.Clear
( p8 n4 v* Y' l' y; n            .Utility.InitializeUserInput 0, "Y N"( |% A: q$ X' ?+ v- K, m* W
            P2 = .Utility.GetPoint(P, vbCrLf & "指定弦端点或[保留弦(Y)/不保留弦(N)]<N>:" )
' g8 m* T9 h- T# o, s            
3 q: m" ~) y7 ], N5 [            If Err.Number = 0 Then; s( l" g8 p+ [% O! d- L- ?1 I
                Set L = Space.AddLine(P, P2)
% H' z5 s) O# n  e& N                Do) ?, M  u4 B: [* {1 j( I. _% {
                    Err.Clear
6 l+ Z) I5 `7 e; r; x6 n                    .Utility.InitializeUserInput 6, "A C"
* e  j: q/ ~. ^1 X3 j, I& }' q( w                    A = .Utility.GetDistance(P, vbCrLf & "指定弧长或[画圆弧(A)/画圆(C)]<C>:" )
1 ]4 a- W* Q- g6 a                    If Err.Number = 0 And A > L.Length Then# S* C" z5 p4 K6 {& }6 Z. E
                        Ag2 = 3.14159265358979( q8 |; P5 S) q8 j
                        Do
  t  X1 y* i: ?, m  U8 b) |, g5 o, P                            Ag = (Ag1 + Ag2) / 2#
0 m2 X" P7 Z! o; A: g. P                            A1 = Ag * L.Length / Sin(Ag)
/ j5 X8 d- @' m5 o4 i( ^8 Z5 l; p                            If A1 = A Or Ag = Ag1 Or Ag = Ag2 Then Exit Do
* A$ F- }+ h3 l8 W  ?9 y; Q+ V                            If A1 > A Then* n8 }. c' Q( x& p( Q; `
                                Ag2 = Ag
4 X4 K1 h  U0 w8 K6 I% J  B                            Else
, Y" a7 O+ O* d& M                                Ag1 = Ag1 c! K# \- T0 z- K7 g- B4 Y
                            End If( f( C1 K( M6 |  U1 T7 N; C1 n0 r+ \5 w# `
                        Loop
0 T! j- H; ]. e$ F/ @                        R = A / Ag1 / 2#
# V, O7 }( ^9 f! ~! i                        P = .Utility.PolarPoint(P, L.Angle + 1.5707963267949 - Ag, R)
: J, {; d2 Q- J3 ~! J; n3 \( [" J                        If S2 = "A" Then, R* g" S1 {3 t: f: g
                            Space.AddArc P, R, 4.71238898038469 + L.Angle - Ag, 4.71238898038469 + L.Angle + Ag# K7 `) _( \+ J# w# L5 z0 J! n
                        Else
6 j1 B# u4 g8 c. D$ l7 U                            Space.AddCircle P, R' D+ w) i. @- g/ b
                        End If4 e: j: g6 E) A' c7 C8 V. \0 z
                        If S1 = "N" Or S1 = "" Then L.Delete" j) x! K/ l% H6 R% e7 F" Y
                        Exit Do
" Y; k) D$ I4 ?2 p                    ElseIf Err.Number = -2147352567 Then6 U, ^) T4 ~1 _3 q8 J' p/ j5 b% z
                        L.Delete
0 c# d% T+ R$ i6 J- W5 K                        Err.Clear+ B! L5 T3 i+ d5 U$ q
                        Exit Do/ f3 m% c- I( F: m& {" F
                    ElseIf Err.Number <> 0 Then
6 ?% [0 N4 r: _( G4 }+ [2 c                        S2 = .Utility.GetInput
+ J6 Q$ b& F5 P% D+ H                    End If
* d. H. L8 {+ ]( y4 z+ D                Loop
6 }! K- A1 N: K+ ^- B( N            ElseIf Err.Number = -2147352567 Then
2 f  G; V6 ?4 I/ W9 b3 `                Exit Do
; p% r2 V% }+ \- c) ?, Z$ x            Else8 H, y, J2 D: t$ g! [
                S1 = .Utility.GetInput
, j- a% K5 Y% r) L  [3 i' w            End If
  y. U( V9 H& I6 ]3 p" j        Loop Until Err.Number = 0
$ N% d" A, ]- x$ s* K    End With
' \- p7 M8 s  n8 }10: End Sub
1 R1 H' {# h: D; D# X4 |------------------------------------------------------------------------------------------------------------------------3 s' B5 U& M& e% j1 `
使用方法:# f/ R2 }/ M! n1 ~" m
1.把上面代码粘贴到VBA编辑器Thisdrawing代码窗口,或下载附件解压后加载- L, H/ b, F. b2 o! ?
2.Alt+F8,在弹出的"宏"对话框中点运行按钮,或在命令行键入"-vbarun",回车,"H",回车
$ ~, c* z" Q/ ]( R9 |# Z- D! Q3.按命令行提示操作

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

7.67 KB, 下载次数: 13

评分

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

查看全部评分

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

回复 16# bbgk 的帖子

记得在初中的时候算好像还有一个条件是:那条边到直径的距离的条件的!如果非要算数算。怕是要用积分了!你要再给出一个条件的。现在条件不足!
' _6 E2 V  @8 a2 y6 T6 B
7 F: W- c3 ?; K5 Y. f: K[ 本帖最后由 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 | 显示全部楼层 来自: 中国江苏徐州
这问题应该简单吧!
. o2 U+ p6 s. R7 E* z7 x0 \/ }0 Q& K, i, a- _7 H
命令 :c& c. S. K/ d. H8 ]
命令:3p
4 p; ^+ h6 l6 A+ B  o: \9 C第一点在A点
" q' c7 k2 V& p! ]6 c第二点在B点* C2 c, \' \/ M7 D2 M
命令: tan
7 `2 Y: `' u) N  M2 o在圆弧上任意切一点
$ P, p3 w+ I3 i- a; ~OK- j+ F  O- [3 d; o

  g3 M4 o) `5 ~2 \1 x不知是不是楼主说的意思
+ g8 @- G9 k& [: \; q
+ ~9 Z8 Y. ]8 Q
& c+ n9 m1 s" H  [ SANDIANYUAN.JPG
; ]1 y3 ^$ i6 [  T2 ^4 v# |! X( e& S
[ 本帖最后由 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
: ?) }; |8 ^& K8 r这问题应该简单吧!9 D8 a. }" m/ Q* v7 q* X+ S

& V. \; |; b7 z. {3 s命令 :c. b& P4 o( }; y! F( K  Q( o
命令:3p. @7 I- a1 ]! @% K/ |9 S
第一点在A点; w+ |. o6 H. v, ]
第二点在B点5 h! }+ F7 q% z, F" @
命令: tan
; U# G# U9 j, _6 `, D1 y在圆弧上任意切一点
% n0 H  n1 b. [9 y/ U5 r& C" vOK
" I% h/ o" g0 x# t/ X: g, E: D3 }- I( E% ~: w1 ]# l
不知是不是楼主说的意思3 P. I7 t6 d1 \2 v; l8 `

9 t0 F8 R. C& E" b' d
) b) k" c( c: S/ T( M, F8 j995240

0 u3 B# v1 x2 z" d* Y$ |8 [* G% L咋就没想到3点画圆法呢,我真是笨死了!谢谢你!
发表于 2008-9-27 22:53:20 | 显示全部楼层 来自: 中国陕西西安

好东西好东好东西

好东西好东好东西

评分

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

查看全部评分

发表于 2008-9-28 09:25:30 | 显示全部楼层 来自: 中国上海
本要在此表示道歉...9 j+ z% \: r! C9 _5 C* \$ |3 b
没有考虑清楚就说这个自己用算的...) {2 N5 _/ j! [( T" b: O
后来算了一下发现没那么好算.对大家带来的麻烦表示歉意.
/ J' e/ S' O/ a6 V& n后来多方求教和查资料.总结一下可以按如下计算.
( K4 A& G) t( p* d设弦长为2a,弧长为2b,对应弧度为2x.半径为r* l6 f+ H% ]- T# m! N7 A" n
则有:sinx=a/r,; y7 L" L' I# S& S8 \
2b=2x*r* q% h2 D5 _9 l! P& k* e3 A
可得:sinx=x*a/b
! B1 A0 d# ?& _, ?/ A2 I: C这个方程解法相当麻烦.
+ w' G; y6 i+ p0 \2 X, C最准确同时也是最麻烦的解法是使用傅立叶级数.
* N% O- {6 r( A但研究下来发现有其他的近似办法:
2 T9 {! ~4 M0 Q  W1. 采用画图法:画出y=sinx和y=a/b*x两条函数曲线,交点处的x值及为所得.应该有2点.一个为小半弧,为一个大半弧4 U2 c; U7 i" I' o, `1 _
2. sinx采用无穷级数展开.sinX=X-X3/3!+X5/5!-X7/7!.....考虑到精度问题这么多应该是够用了(X3表示X的3次方,这里不知道怎么标上标)+ h" `7 R* r% i  j

/ D9 N2 R" c/ x0 R) Y以上就是方程的解法...: |9 E) }' F9 |, |$ L! f
和老大的给的宏那个好用大家自己看看吧.9 Z5 x9 W+ \# f# z: e

* }/ M; G. V7 b想问下xuj321123的方法是如何确定弧长的.我在使用到tan命令时点选空白的地方是没有用的.只有选一个本来有的线.这样弧长就和我所选的线位置相关,而不是一个确定的值了....

评分

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

查看全部评分

发表于 2008-9-28 10:04:32 | 显示全部楼层 来自: 中国江苏徐州
楼上的朋友,楼主说的很明白:已知“弧长”和“弦长”,有这两样你作不出图来?怎么是个空白地? :L
发表于 2008-9-28 11:09:19 | 显示全部楼层 来自: 中国云南昆明
“想问下xuj321123的方法是如何确定弧长的.我在使用到tan命令时点选空白的地方是没有用的.只有选一个本来有的线.这样弧长就和我所选的线位置相关,而不是一个确定的值了....”
- `, F  S- H8 f' \/ V1 [3 O. v4 d. H5 Q9 Q: j7 p: d+ V1 L

! q; R: _! n& s( n你做一条辅助线,分别交于已知的两条线,三点画圆法就可以了,TAN命令都不要用!
发表于 2008-9-28 12:20:20 | 显示全部楼层 来自: 中国山东青岛
这个二次开发好像很难的样子。。。
( y6 \/ l3 t  ]9 V8 K9 ]8 M
. A- L+ ?* m2 \. r  D* z这个圆弧按照楼主的意思好像并不是完全已知的,只知道弧长而已,哪来的三点
发表于 2008-9-28 12:27:32 | 显示全部楼层 来自: 中国上海
原帖由 xuj321123 于 2008-9-28 10:04 发表 http://www.3dportal.cn/discuz/images/common/back.gif( ?; ^9 v; T) [+ ~/ Z
楼上的朋友,楼主说的很明白:已知“弧长”和“弦长”,有这两样你作不出图来?怎么是个空白地? :L
7 w2 {" X: y. @- d4 u2 o7 {

& V1 t0 A* j& N1 v( x1 N研究了一下你的画法.
( s7 @4 b3 g6 t( m) [. K& S7 j' o不知道顺序是不是这样的  ^- r3 p: C4 ^! [3 r

) f4 Y% E: p; v- ?6 Z( C- Q* U( G先画好一个线段.长度等于弦长,再画一个弧,长度等弧长.
* y8 A( k- V' N7 t) E6 G再利用这2条线使用3点画圆法,画出圆来.
3 s( d6 l& \" x' W: Q
. o7 @( l# m/ Z! w我画的时候没有先画那个弧,直接在一条线段上画圆的2个点. 没有实体可供tan ,所以画不出来,提示点无效.
  q6 @9 G# O4 f( F3 s% [" s
, e# Y  q) n# b; o3 X问题是,你事先画好的弧如何保证他的弧长是楼主所需要的弧长?
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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