明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3995|回复: 8

这个标题不知在这里合适否?有关FORTRAN语言与EXCEL的问题。。。

[复制链接]
发表于 2003-10-20 20:35:00 | 显示全部楼层 |阅读模式
FORTRAN语言一直在很多领域里广泛使用,可是却没有绘图功能(反正我手里的版本没有这功能,可能即使有也不方便)。我想通过李版主(EXCEL TO CAD 绘图)的程序来达到绘图目的,问题是如何能使在FORTRAN里计算出来的数据自动转换到EXCEL指定的表格中?这一想法能实现吗?望各位斑竹指点!
发表于 2003-10-20 21:16:00 | 显示全部楼层
FORTRAN有没有ActiveX功能?
发表于 2003-10-20 21:42:00 | 显示全部楼层
FORTRAN77应该能绘图的啊,不过没听说过FORTRAN与ACAD的接口。有兴趣的话,我们可以聊聊FORTRAN在计算机绘图中的应用问题,只是在这好象不方便。
刚学计算机绘图时,因为FORTRAN在数学计算上的功能,基本上都是用FORTRAN作为算法描述语言,不过好多年没用过了。
 楼主| 发表于 2003-10-20 21:55:00 | 显示全部楼层
FORTRAN绘图不是它的强项,我手里的也就是FORTRAN77。不过VB可以调用FORTRAN,也就是混合编程(我还没有搞懂,好像要用到w32api)。
发表于 2003-10-20 22:00:00 | 显示全部楼层
有些软件没有提供ActiveX接口,但有时会提供一些API接口, 不知FORTRAN是否提供了这些接口。
 楼主| 发表于 2003-10-21 08:04:00 | 显示全部楼层
明总:FORTRAN没有提供那些接口。不过可以把FORTRAN程序编译成动态连接库.DLL..
发表于 2003-10-21 08:10:00 | 显示全部楼层
个人理解:
楼主的意思是想利用FORTRAN77的数学计算功能输出计算结果,再在ACAD绘制图形。这样的话,通过EXCEL好象太麻烦点。当然,可以将FORTRAN代码编译成可由其它程序语言调用的库函数(即所谓API接口)再由VBA调用。不过更简单更直接的方法是按照给定的统一的格式由FORTRAN将计算结果输出为TXT文本文档(甚至直接输出DXF亦无不可),在ACAD二次开发(VBA或者其它)中用同样的格式读取文本文档绘图。
接触到WIN95和C++后,我将原来的大部分FORTRAN程序都转到C++中去了,这以后再没用过FORTRAN,以上理解是否有误,请楼主指出。
 楼主| 发表于 2003-10-22 12:34:00 | 显示全部楼层
版主说得很对!
利用FORTRAN是因为现成的源程序很多,想省点事偷偷懒,呵呵。
版主提醒直接用文本文档转换的确是好办法,我先试试编一个。。。
 楼主| 发表于 2003-10-22 16:45:00 | 显示全部楼层
本帖最后由 作者 于 2003-10-22 20:53:08 编辑

这是FORTRAN程序:
  program sort
      dimension arr(10)
      integer n
      nupper=10
      open(1,file='e:beforesort.dat',status='old')
      do 10 n=1,nupper
      read(1,*) arr(n)
  10  continue
       close(1)
      open(2,file='e:aftersort.dat',status='new')
      do 40 n=1,nupper
      write(2,100)'第',n,'数',arr(n)
      write(*,100)'第',n,'个数',arr(n)
   40 continue
  100 format(1x,a5,i2,a5,1x,f8.3)
      close(2)
      end

在VB里用API函数调用FORTRAN
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Const infinite = -1&
Private Const synchroniz = &H100000

Private Sub Command1_Click()
Dim itask As Long, ret As Long, phandle As Long

filename1 = "a:\beforesort.dat"
filename2 = "a:\aftersort.dat"
Open filename1 For Output As #1
  For i = 0 To 9
   Print #1, Val(Text1(i).Text)
  Next
Close #1
itask = Shell("a:\sort.exe", vbHide)
phandle = OpenProcess(synchronize, False, itask)
ret = WaitForSingleObject(phandle, infinite)
ret = CloseHandle(phandle)
RichTextBox1.LoadFile filename2, rtfText
End Sub
问题解决!
可以通过API在VB或VBA里实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 19:31 , Processed in 0.165263 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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