QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。
1 _1 l# D$ B4 `" y! _( i1 X8 C# b% |! l: r' D& P
我的源码如下附件。
' q) B! {4 S$ M: g7 T我的环境:XP+AutoCad2004;4 s8 A. K' X* G% M9 o
关于怎么创建宏,参见我的帖子:% \4 U' O; i& l
http://www.3dportal.cn/discuz/viewthread.php?tid=439306
  c& \0 o) n& Q( }- }* c6 Y- W/ a
[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!% r5 J5 K9 M) b' N! |
为什么不贴源码?7 ^' c# n4 i5 c" ?
因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!
, k! A" Q+ K$ Z# m5 i关于你修改的程序,个人感觉很不错,谢谢了!
& [7 e7 r+ g" q! C. a; ^0 }3 r2 M但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧
6 x3 f  |' Q$ ?( }$ q另外你更改的程序正是我占楼的原因:)
8 M) w! r3 e5 a6 B1 s. b4 D简单的正弦函数大家看来会了,现在我加点要求!! D' e( `2 c5 _6 n4 K' l+ C$ r' P
1、起始点要能根据要求随时改变
! z* Z' b/ y' [- F2、幅值要能根据要求随时改变, G% d  H5 D( @
3、所要画的图形的周期要能改变。- q4 _. u  ^4 e; {1 |6 ]
上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
0 ^! g$ K+ I, }2 ?% r: K& o:)$ `8 r3 d- N! b& d! J: E7 v

, o- I2 c8 z9 l1 H[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?
# k' D$ H) D# S* z以下是楼主的源码(越俎代疱了)。: O" ]7 j9 r( u" d, {, P; q: Y
# Y. ?+ o; s# L7 M! t2 l
Sub zxhs()
- o/ M" s5 q- B: I) p  Const Pi As Double = 3.14159265358979 '声明常量π  R" G6 B5 ]- N8 I1 n, o4 j) A
  Dim TemPArray(0 To 188) As Double '定义要画的点的数列
" X$ b+ S* \/ A& q4 [6 w  Dim startTan(0 To 2) As Double '定义初始点的切角
, P9 \% `; g8 A0 x0 R) x  Dim endTan(0 To 2) As Double '定义终结点的切角6 v) B- L1 B6 L( o9 I+ U
  Dim i As Double
( Y% i3 T9 a. K! s( q5 F( G  For i = 0.1 To 2 * Pi Step 0.1 '开始循环
1 ]1 c! Z# v0 u& `* Z3 E    TemPArray(i * 30) = i& @1 I) d+ C' B: t$ o3 g
    TemPArray(i * 30 + 1) = Sin(i)
4 W9 R8 y" a% i4 H    TemPArray(i * 30 + 2) = 0
! r5 I& X' G6 N; k( x8 W0 d- D  Next i
) ~8 W7 ^9 }( G5 Z" o. n" Z  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
  G+ W) w- O2 @8 Z/ J; H  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0; d/ C6 g0 l( C. h/ g+ d" a
  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线" h) U* _8 r1 r4 S4 m4 W) j
End Sub8 A4 u- p; T9 }. k

5 a( g0 m3 A8 n3 V1 D应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。
' ]2 I) W8 `+ ~- D1 `: K) o2 l/ B; R( T* [9 h0 \' m% ?7 t) ~/ ^
把楼主的程序修改了一下:
! ^! k3 Q5 ~$ ~# ?0 N5 N8 V! ]
# Q5 Z" A5 C, t/ tSub zxhs()/ d( U9 D* G8 ~% [+ o% K
  Const Pi As Double = 3.14159265358979- H0 @4 }: y7 B$ k1 h
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。6 x( H9 Y- |" j( T, [! E
  Dim startTan(0 To 2) As Double! R+ T$ i8 B5 r( L& c* A% [4 {' }( G
  Dim endTan(0 To 2) As Double# V- H$ H, K5 Q$ w1 z! d2 y4 s# M5 j
  Dim A As Double3 l, n" F; k  v! L
  ReDim TempArray(5)
" ~0 T  }6 N4 P! \& d/ Z  For A = 0.1 To 2# * Pi Step 0.1, @: [9 j- w+ Q& h1 {( r+ ^
    TempArray(UBound(TempArray) - 2) = A
4 n, O% D: n: J7 G0 q& r  @( p    TempArray(UBound(TempArray) - 1) = Sin(A)
- o* t; c- R( K$ i0 n1 h1 l    ReDim Preserve TempArray(UBound(TempArray) + 3)4 e. y9 q, {0 L4 L. s
  Next& q5 k( d( @- V1 f6 i
  TempArray(UBound(TempArray) - 2) = Pi * 2#, k" o$ O, ]' Q- o
  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)
) s0 w7 H5 ]- E6 z  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。7 m0 n" k# S. R# Y
  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan
! |7 Y% C- R  f+ Q6 pEnd Sub8 q4 x! ?0 C& M; w. d$ {8 Q

3 b1 ?, U; z3 Z" ~) _+ s( D! M纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。
/ a! R/ c# Z9 p5 ?参见附件
1 o, F3 g; G7 ]5 [! ^其中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 )

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