第四章利用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 |