QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。8 H  r) K! b) a; M- j6 n

) f0 m0 E' q2 {3 M9 o* C我的源码如下附件。
# K9 C! `% T( z) f我的环境:XP+AutoCad2004;1 x+ V% |# N) S% W$ Y6 I9 h) [
关于怎么创建宏,参见我的帖子:; A0 N7 j: j5 k; D
http://www.3dportal.cn/discuz/viewthread.php?tid=439306
: {4 p( s: V' C- \3 L- `( {
0 U  z1 R: ~( R4 e; E1 h[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!) C- E8 w" a+ D3 X# l' u8 Q
为什么不贴源码?
7 V2 F5 U0 I3 }4 r% G) O/ C6 C; n因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!1 V3 F; |  q; i
关于你修改的程序,个人感觉很不错,谢谢了!
  U; c' M- X  C8 v2 f6 w2 t) v但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧* u' J$ m% @' S) u& q; [6 [! y) M. g
另外你更改的程序正是我占楼的原因:)
& Y' _$ d% e6 J9 v8 l7 T简单的正弦函数大家看来会了,现在我加点要求!
% F4 n! Z0 k* m; T$ E, `# q& h1、起始点要能根据要求随时改变# u2 |) r' s/ X) q9 y6 I% ~( |9 h
2、幅值要能根据要求随时改变8 x, Y$ @% H8 s7 Z  S* s1 X) d
3、所要画的图形的周期要能改变。
7 c+ l) }5 v! W3 G3 b2 y" g# y上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
4 o- g3 _6 _8 I) A4 G8 [! K5 V:)4 R' [+ t' w" a" u$ A) k1 H
5 ^; f2 P. \' o2 }- R
[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?% _' l* Y7 n4 o
以下是楼主的源码(越俎代疱了)。
( J0 |3 z% k  U& A% g2 E+ J9 t- P! u- ~; _4 B1 w; Y
Sub zxhs()
/ t9 w; O/ z  Z/ \9 c  t  Const Pi As Double = 3.14159265358979 '声明常量π* j2 }  s2 s( H' z: U& r
  Dim TemPArray(0 To 188) As Double '定义要画的点的数列0 ~" S% b7 f% Y* f9 m4 h
  Dim startTan(0 To 2) As Double '定义初始点的切角
! u, h9 U% E) X  Dim endTan(0 To 2) As Double '定义终结点的切角* ^& k4 c1 e7 i4 `; S! F1 ?) `: t
  Dim i As Double- m( ?9 a! K! E/ Y# M
  For i = 0.1 To 2 * Pi Step 0.1 '开始循环/ s) [! P. a7 k. K# A# a9 `
    TemPArray(i * 30) = i
6 c9 c/ t. V$ O3 o+ c) N% a    TemPArray(i * 30 + 1) = Sin(i)
4 {. c$ L1 F7 N8 N& B2 A4 _    TemPArray(i * 30 + 2) = 02 m7 p. y4 m& P# V8 z
  Next i
2 c: F' Y* L2 R  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
! f/ ^/ {4 q. A: g  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0# t# {) o: `! U
  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线+ r& s) r: h4 u/ {6 @  O
End Sub
% |: I6 q% F3 C" b# B& T6 U9 a/ K$ y' }
应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。
$ }% f3 w8 q; M, r; _+ w2 U
, B7 R/ v/ {8 B3 {/ q. U! s把楼主的程序修改了一下:
! v! c, u( e/ R% z, Y0 w% X* d
$ @" U( O. i7 C2 LSub zxhs()! x6 p0 b4 b3 Y1 L" u" ^
  Const Pi As Double = 3.14159265358979
4 D0 P. Z, O. D2 x1 g  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。7 ~! w. j" V8 c' {/ i
  Dim startTan(0 To 2) As Double3 A" v2 }# t3 \* C4 |4 k
  Dim endTan(0 To 2) As Double! V" ~3 p& a, P7 ]
  Dim A As Double
/ h/ N: T( N5 b# g$ c5 D* d2 [  ReDim TempArray(5)
8 u% [; U( O9 F; K& J: B' T  For A = 0.1 To 2# * Pi Step 0.1
9 o4 p) [% Y0 _  m4 _* l3 n: H    TempArray(UBound(TempArray) - 2) = A8 \% ?0 R! a% M1 Y: U( ^" T
    TempArray(UBound(TempArray) - 1) = Sin(A)% K0 p. E* l$ z9 h3 f3 L
    ReDim Preserve TempArray(UBound(TempArray) + 3)
; A; n2 k# L9 W! [  Next
$ _: \1 \4 b0 A- F( \; S! N$ ~" a1 e  TempArray(UBound(TempArray) - 2) = Pi * 2#
* H  u/ b4 d# f+ m  B  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)- h  k5 f. H+ D( M; x+ ^
  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。
! x2 M3 ^# w/ P  H# @2 U  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan( U; N& o2 Y1 |; F
End Sub
  ^+ r+ X" K- W, d# j& q5 E# n% O5 _1 O
纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。0 J  s5 Z- U- Y9 u* A" x
参见附件
0 a4 _( H8 o3 @2 {. t, E其中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 )

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