QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2621|回复: 4
收起左侧

[讨论] 简单的画图问题(改进的正弦函数)

[复制链接]
发表于 2008-1-27 01:10:37 | 显示全部楼层 |阅读模式 来自: 中国江苏无锡

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。
2 h: N2 S* a8 G( W7 y
3 W/ c2 N5 N1 }6 t. Z5 S( M& @: g# s- S我的源码如下附件。
# ?: v/ M. I1 ~& T' V我的环境:XP+AutoCad2004;$ @4 q: y2 h2 {6 P; Y' j7 a
关于怎么创建宏,参见我的帖子:8 H6 ?6 |, k: H# C0 w
http://www.3dportal.cn/discuz/viewthread.php?tid=4393061 ^1 o) s: ?  A$ `6 S4 n4 c  N5 r

" r  D8 W8 M, [8 b, i# n0 r[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!" H' Y/ o) o; H# R$ _
为什么不贴源码?
% G2 K. B/ E. {2 o4 _2 Z因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!
' `  Y' H1 a& D) A  z关于你修改的程序,个人感觉很不错,谢谢了!" ]4 ?" C& |, t1 I
但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧! Y# A+ V2 ^% p
另外你更改的程序正是我占楼的原因:)
+ A2 ~0 z: r9 H9 S2 D简单的正弦函数大家看来会了,现在我加点要求!& j- h( V  b& |. t% t% L
1、起始点要能根据要求随时改变
; R, \1 `8 ^, ^4 ?3 S2、幅值要能根据要求随时改变) N8 R+ _" C' k; v
3、所要画的图形的周期要能改变。
2 j" W3 B% y$ `% q) x上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
" u8 n6 Z. B; F3 a+ ?# ]:)" N5 R3 v" G  {  {2 Q! _0 g
$ I7 c/ J* Z; [  v+ ~# {+ r
[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?
6 O5 y# B. M5 `$ o2 e以下是楼主的源码(越俎代疱了)。: ~/ P, _2 a! o
. q* w! g' Y+ @0 L& `# q9 ^* N
Sub zxhs()
4 n* P" ~5 ~' I8 t4 M6 a  Const Pi As Double = 3.14159265358979 '声明常量π
* `6 q0 a' w1 \9 P4 V8 P  Dim TemPArray(0 To 188) As Double '定义要画的点的数列1 x  f4 t: b( i4 ^) Y
  Dim startTan(0 To 2) As Double '定义初始点的切角* D7 {) ^. C" M+ u( d
  Dim endTan(0 To 2) As Double '定义终结点的切角* N: W8 m0 R- }( J. z
  Dim i As Double: s7 h8 J- Y' W( X
  For i = 0.1 To 2 * Pi Step 0.1 '开始循环3 M8 N; L' I1 p
    TemPArray(i * 30) = i
1 l5 t2 B7 Y* h3 e0 j    TemPArray(i * 30 + 1) = Sin(i)  F$ U! ?$ j. G1 g8 C, f5 c$ i
    TemPArray(i * 30 + 2) = 00 _. j. @/ L- R, r% D
  Next i$ V+ ^. m9 c, E5 [
  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
% X2 v- {% E, @% \3 J$ ]  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0
$ U5 n  a7 O% c* C  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线3 x5 L; G9 x6 f0 E
End Sub- r, G& ^/ k- A+ D& {  R2 W* ]
/ D  ~+ s' P+ k* ^8 X' I
应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。1 o& A, `& }( w0 v) Y3 P. @

3 }6 b9 F9 _+ f! D: Q4 o0 \. e, B把楼主的程序修改了一下:
8 f# t* g- e8 o0 |& P- t9 }& a+ l  [) ]( Q9 a% |5 W- u& [( ^% L
Sub zxhs()
6 \1 S' X/ R' ]0 ~' ^/ Q5 i2 @9 {  Const Pi As Double = 3.14159265358979, _# x0 E9 ~4 ^2 Q
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。
& q- t9 Z, [( E5 ]% p& h  Dim startTan(0 To 2) As Double
: ^7 G8 Q) `3 F# R$ H  @) s# |/ U  Dim endTan(0 To 2) As Double" q' |) J' G' K# }: k3 l* U
  Dim A As Double
6 ^& i- u: V$ p) ~- _* ^  ReDim TempArray(5)5 R5 p9 w# |6 _' y
  For A = 0.1 To 2# * Pi Step 0.1
' K5 \5 N9 A- R- o& q+ Q* E" Z    TempArray(UBound(TempArray) - 2) = A- w1 f# n/ e- B; N( {0 R2 O+ [
    TempArray(UBound(TempArray) - 1) = Sin(A)- g$ X8 j3 C/ w
    ReDim Preserve TempArray(UBound(TempArray) + 3)/ H5 c1 b9 }3 E% s2 m. @0 F6 a
  Next6 ]' ?  S. K6 d- Z, V# n8 F
  TempArray(UBound(TempArray) - 2) = Pi * 2#8 w0 m' E# h- n3 W( V$ {% A* k1 Y
  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)
5 Y, L8 S; _  t0 j) n  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。
, ~# A6 h" {  U: X" F  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan
* \3 \# [3 [: g) m+ xEnd Sub$ L, n! c( o! h7 |, x

# ?0 h! @; @& j! T纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

 楼主| 发表于 2008-1-27 21:53:09 | 显示全部楼层 来自: 中国江苏南通

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。5 w6 H2 R, U  P$ Z; n
参见附件3 S/ l$ l! B5 T. I& L; f4 }
其中PDF文件是我认为要注意的地方,DWG文件为源码及运行程序。

改进的正弦函数.pdf

100.76 KB, 下载次数: 13

改进的正弦曲线.rar

14.06 KB, 下载次数: 16

评分

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

查看全部评分

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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