QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
3天前
查看: 2627|回复: 4
收起左侧

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。9 G6 n7 w9 O# c! d6 Q  q

9 v8 k1 L0 S3 d$ J我的源码如下附件。
5 K- H: b0 ?' S- O" W0 r! p我的环境:XP+AutoCad2004;
2 Z7 g% r' u% h8 c3 S' i关于怎么创建宏,参见我的帖子:. B4 Q9 |5 r" B5 U" I0 J
http://www.3dportal.cn/discuz/viewthread.php?tid=4393063 `+ @- p! y  L  d
+ r$ D  `4 P. c& b. h: r$ F8 |
[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!
+ y1 @4 H* }$ m  n为什么不贴源码?
  Y# w( b$ x, K7 _% W$ `% |因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!
  p" C8 J# g+ a3 F4 \. F关于你修改的程序,个人感觉很不错,谢谢了!
% Z6 i( |' g" U3 D. ^" \. j1 f但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧. h% ], `" i- s) }9 o
另外你更改的程序正是我占楼的原因:)
- c5 e& C8 e- R% H( p. E2 \+ X简单的正弦函数大家看来会了,现在我加点要求!) @) Z& P* ~+ O& R* u
1、起始点要能根据要求随时改变
% u  @, _1 C2 [+ K8 c2、幅值要能根据要求随时改变
2 [4 z  ?6 s3 F. S* J3、所要画的图形的周期要能改变。
# u0 |0 h& d0 l3 R0 d上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
! ?5 L3 ~/ N( d, N:)
5 L/ @. R2 W& N; O+ A  y3 [9 G. s2 [& W3 C
[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?
- X1 F; H  {$ n, {6 f以下是楼主的源码(越俎代疱了)。
( C  d; j4 T; Q1 |
' `" K) @* d" Q' ~Sub zxhs()/ n2 s" w& u, z2 ], ]0 j6 L8 A
  Const Pi As Double = 3.14159265358979 '声明常量π3 q# J! k# r& `& A& S. m3 {
  Dim TemPArray(0 To 188) As Double '定义要画的点的数列2 k7 J0 J/ W; F- F0 s
  Dim startTan(0 To 2) As Double '定义初始点的切角0 ?( U( k3 t" M& z' `+ g
  Dim endTan(0 To 2) As Double '定义终结点的切角" C9 N6 ^# R9 l5 K" S8 S
  Dim i As Double4 P4 C- @; P; j; b
  For i = 0.1 To 2 * Pi Step 0.1 '开始循环0 q5 M" L; ^- O3 F
    TemPArray(i * 30) = i' M0 J+ F; Z! Q
    TemPArray(i * 30 + 1) = Sin(i)
! M! L  A8 N- \$ i3 D, L3 c    TemPArray(i * 30 + 2) = 0
. `5 O* y' E, Q% n. T8 |3 k/ _" a  Next i
$ D4 t; ~0 I6 M8 g  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
! W4 A  X; J" @$ B4 T3 n  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0
9 R7 w0 y7 N5 t- D' {8 t  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线( l' z2 S: ^$ h2 D
End Sub
6 ^+ E( @/ t6 V* c' K: B
+ G( d+ T; ]. x4 e应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。5 W/ X' Y- X  O% @+ F/ W

" ?0 Y# O3 s0 C: Y2 J把楼主的程序修改了一下:
/ U+ _; m; v6 j$ G& J
- j* a+ {. Q+ R+ }Sub zxhs()
0 H: C% u+ P+ |3 T  Const Pi As Double = 3.14159265358979, @, e$ Y/ C* w5 }& Q
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。
& k2 W) }  i6 [  Dim startTan(0 To 2) As Double/ l4 l; d6 q' X: Z
  Dim endTan(0 To 2) As Double
1 m! U4 }. z5 Q  Dim A As Double$ i7 B" s: n$ ]" O% e, f
  ReDim TempArray(5)
) s# a! `7 k/ ~. D  For A = 0.1 To 2# * Pi Step 0.1$ a5 w$ ^( L* Q
    TempArray(UBound(TempArray) - 2) = A
1 g4 C% m9 q/ [3 [! h$ }& ^, w    TempArray(UBound(TempArray) - 1) = Sin(A)
+ u' ]. p3 O8 |" a# V    ReDim Preserve TempArray(UBound(TempArray) + 3)
4 S) E0 f4 M$ C  Next
, D: K& N! n/ [" O' G" v% j  TempArray(UBound(TempArray) - 2) = Pi * 2#
! o6 K, Z6 }) A; h% N5 z$ L  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)
8 T* ^7 m  l: t2 o2 n- ?8 E  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。
6 v" M, y- o) |3 x: X  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan
. B" o7 K# {8 n/ Z$ U/ R0 D( `End Sub: J0 G  o- U: ?; I, Q& z
' q7 I! ?$ b; @* @
纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。
# t% f) w7 t5 h$ r7 k' ]3 v1 v1 W参见附件7 W& @+ t7 H, e1 c6 _" C* f
其中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 )

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