明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1777|回复: 0

第四章利用Excel的VBA,通过CADdxf文件格式,把Excel数据表与AutoCAD,LT图内的数据连

[复制链接]
发表于 2009-5-1 09:35 | 显示全部楼层 |阅读模式
第四章利用Excel的VBA,通过CADdxf文件格式,把Excel数据表与AutoCAD,LT图内的数据连接起来[br]

2009/04/29本人发表了” 利用Excel的VBA,通过CADdxf文件格式,把Excel数据表与AutoCAD,LT图内的数据连接起来.”的系统构思说明文章.

现在再就软件包的代码编制进行说明.

第四章

3.      AutoCADLT的操作

本例是使用AutoCADLT2006, 别的版本或者AutoCAD,也没有问题.

ü          Sub OpenCADProcessFile ()

ü          CADLTapp = Shell("C:\Program Files\AutoCAD LT 2006\aclt.exe", 3)’(AutoCADLT2006启动,3: vbMininizedFocus)

ü          Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 5) '5秒等待延时

5秒延时的原因是计算机启动AutoCADLT的等待时间,初次启动反应最慢.

ü          FileName = " Mypass & "\" & ProcessFile.dxf"

ü          SendKeys "^C^C_filedia" & Chr$(13) & "0" & Chr$(13) & "^C^C_fileopen" & Chr$(13) & FileName & Chr$(13), True

‘"filedia 0",设置CAD采用命令栏输入方式; "fileopen" 打开文件命令; "Chr$(13) ": Enter key事件; "True": 要等待.

ü          FileName = Mypass & "\" & UserForm1.TextBox3.Value ‘(TextBox3与dwg图纸目录列连接,逐次读入图名例:001.dwg)

ü          SendKeys "^C^C_saveas" & Chr$(13) & "LT2000" & Chr$(13) & FileName & Chr$(13) & "yes" & Chr$(13), True

‘别名保存为LT2000版本的001.dwg文件,如果有既存文件,则覆盖保存yes.

ü          If CntDrawing = True Then ‘如果选择连续作图

ü          SendKeys "^C^C_Quit" & Chr$(13), True

ü          Call ExcelSendtoCAD ’再次唤起dxf读写程序

ü          Else

ü          Unload UserForm1’关闭窗口

ü          End if

ü          End Sub

SendKeys 命令就如同扔手榴弹,出了手就失控了.如果AutoCADLT那边执行不同步,或无意按了键盘,动了鼠标,都可能影响一连串SendKeys 命令的有序执行. 特别是连续作图时,因编制的图纸目录与实际准备的dxf文件不符等故障,途中一旦卡住,随后就乱套了.

VBA怎样实时地监测AutoCADLT的运行状况,彼此保持协调的进程,是本人在程序编制过程中,始终寻求的方法.

4.        文件系统方案以Excel各个sheet间的关系

本文所涉及的VAB,对文件系统并没有特别的要求,只要是在Local Computer里面构筑文件系统,就不会有文件读取的困难.

本例:  基本文件夹: Mypass\AutoDrawing ‘(放包含了VBA程序的Excel文件,Process.dxf文件以及个人参考资料等)

CADdxf文件夹: Mypass\AutoDrawing\CADdxf ‘(放全部的dxf图文件)

CADdwg文件夹: Mypass\AutoDrawing\CADdwg ‘(放全部的dwg图文件)

Template文件夹: Mypass\AutoDrawing\Template ‘(放全部dxf形式的模板图文件)

把上述各个文件夹的名称写在Excel文件的sheet内,并实际作出这些文件夹,就可以拿着外层文件夹,拷贝到任何计算机的任意路径上使用. Mypass是VBA的一个当前路径变量,在Excel启动初始化程序里,写如如下语句,就可以读出当前路径,供文件读取使用.

ü          Mypass = ActiveWorkbook.Path & “\”   ‘例如当前路径是: D:\ 则语句执行以后  Mypass = D:\

Excel文件内部,有用来保存统一数据库的sheet “NewData0”, 有用来与AutoCADLT交换数据的读写sheet,还有与统一数据库相关连的各个Excel表格sheet.比如,电缆接线表,电气负荷表,仪表电器订货表等等.它们都是以一个元件行为单位,从统一数据库的各个列里读取数据.如果统一数据库的某个值改变了,比如温度传感器的图位号变了,那末与它相关连的所有sheet都同时改变,包括读写sheet,此时只要再执行一次Excelàdxf程序,就可以刷新CAD图纸.

Excel文件内部还有一些Link技巧,因为离开主题,不再叙述. 感兴趣者可以和我联系.

User3208cn@yahoo.com.cn

2009/05/01

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

本版积分规则

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

GMT+8, 2024-5-7 11:29 , Processed in 0.681700 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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