查看: 8407|回复: 16
收起左侧

[Auto CAD] 求助:怎么通过excel让cad运行脚本啊

[复制链接]
发表于 2012-7-6 21:14 | 显示全部楼层 |阅读模式 来自: 中国辽宁大连
我想在excel中用VBA作一个按键,通过这个按键把excel中的一些内容写到一个scr文件里,然后打开cad,让cad运行scr,前面都没问题,cad也打开了,可不知道怎么让cad运行脚本,求高手指教
回复

使用道具 举报

龙船学院
发表于 2012-7-6 21:49 | 显示全部楼层 来自: 中国山东烟台
就是在“工具”的下拉菜单中有一个“运行脚本文件”,选择脚本文件运行就行了吧
另外,楼主可否能把你的杰作与我分享一下,没准对我也有帮助啊,多谢,我的邮箱shao_34105@163.com
回复 支持 反对

使用道具 举报

发表于 2012-7-6 21:50 | 显示全部楼层 来自: 中国山东烟台
shao_34105@163.com        shao后面是下划线
回复 支持 反对

使用道具 举报

发表于 2012-7-6 22:29 | 显示全部楼层 来自: 中国广东深圳
本帖最后由 林黛玉 于 2012-7-6 22:53 编辑

excel按钮:(EXCEL首先要添加引用CAD对象)
Private Sub CommandButton1_Click()
Dim AcadApp As AcadApplication
Set AcadApp = CreateObject("AutoCAD.Application") '定义对象
AcadApp.Visible = True‘CAD可见
AcadApp.ActiveDocument.SetVariable "FILEDIA", 0’设置0,避免弹出对话框
AcadApp.ActiveDocument.SendCommand "SCRIPT" & vbCr & "d:\1.scr" & vbCr‘运行脚本,脚本路径为“d:\1.scr”
AcadApp.ActiveDocument.SetVariable "FILEDIA", 1’设置1,回复设置
End Sub

-------------------------------
脚本内容:
-------------------------------
line 100,100
500,100
100,500
c
----------------------------
最后C是闭合


回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 22:37 | 显示全部楼层 来自: 中国辽宁大连
shawship 发表于 2012-7-6 21:49
就是在“工具”的下拉菜单中有一个“运行脚本文件”,选择脚本文件运行就行了吧
另外,楼主可否能把你的杰 ...

额,我是想直接用按键按下之后打开cad然后直接就出图了,我做的是螺旋桨画图的,还没做好呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 22:40 | 显示全部楼层 来自: 中国辽宁大连
林黛玉 发表于 2012-7-6 22:29
excel按钮:
Private Sub CommandButton1_Click()
Dim AcadApp As AcadApplication

这样做的话是否要求cad已经能用VBA 进行二次开发了呢?我cad没装VBA呢,是2012的版本,已经不再自带VBA了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 22:44 | 显示全部楼层 来自: 中国辽宁大连
本帖最后由 左岸 于 2012-7-6 22:46 编辑
林黛玉 发表于 2012-7-6 22:29
excel按钮:
Private Sub CommandButton1_Click()
Dim AcadApp As AcadApplication

输进去之后编译说“用户定义的类型未定义”怎么办啊?我刚学一点点的VBA,不太懂,我之前的代码是这样的:
Sub 按钮1_Click()
Dim i
i = 1
Open "d:\aa.scr" For Output As #1 '打开脚本
For i = 1 To 10
Print #1, Cells(i, 2).Value '把A1到A10写入脚本
Next i
Close #1
Shell ("C:\Program Files\Autodesk\AutoCAD 2012 - Simplified Chinese\acad.exe") '打开cad
End Sub
回复 支持 反对

使用道具 举报

发表于 2012-7-6 22:47 | 显示全部楼层 来自: 中国广东深圳
左岸 发表于 2012-7-6 22:40
这样做的话是否要求cad已经能用VBA 进行二次开发了呢?我cad没装VBA呢,是2012的版本,已经不再自带VBA了 ...

这是EXCEL里的VBA语句。
与CAD没有关系
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 22:50 | 显示全部楼层 来自: 中国辽宁大连
林黛玉 发表于 2012-7-6 22:47
这是EXCEL里的VBA语句。
与CAD没有关系

那“用户定义类型未定义”怎么解决啊
回复 支持 反对

使用道具 举报

发表于 2012-7-6 22:50 | 显示全部楼层 来自: 中国广东深圳
左岸 发表于 2012-7-6 22:44
输进去之后编译说“用户定义的类型未定义”怎么办啊?我刚学一点点的VBA,不太懂,我之前的代码是这样的: ...

在EXcel里面要引用CAD,
另打开CAD不要用shell,用SHELL能打开,但不能对打开的CAD进行控制和操作。
用我的方法
createobject创建对象


回复 支持 反对

使用道具 举报

发表于 2012-7-6 22:56 | 显示全部楼层 来自: 中国广东深圳
本帖最后由 林黛玉 于 2012-7-6 22:58 编辑
左岸 发表于 2012-7-6 22:44
输进去之后编译说“用户定义的类型未定义”怎么办啊?我刚学一点点的VBA,不太懂,我之前的代码是这样的: ...


根据你的意思,
excel里面首先添加引用CAD对象
然后
sub xxx_click()
--------------
写scr文件这里你的代码
------------------
下面用我的代码
----------------
end sub

还要保证你的scr脚本格式写的正确、
看你的脚本写的不正确好像。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 23:00 | 显示全部楼层 来自: 中国辽宁大连
林黛玉 发表于 2012-7-6 22:50
在EXcel里面要引用CAD,
另打开CAD不要用shell,用SHELL能打开,但不能对打开的CAD进行控制和操作。
用我 ...

为什么还弹出“用户定义类型未定义”呀,是不是一定要private类型?在那改呢?我一创建宏它就是通用,都不知道那改
回复 支持 反对

使用道具 举报

发表于 2012-7-6 23:02 | 显示全部楼层 来自: 中国广东深圳
左岸 发表于 2012-7-6 23:00
为什么还弹出“用户定义类型未定义”呀,是不是一定要private类型?在那改呢?我一创建宏它就是通用,都不 ...

尝试用new
Dim AcadApp As new  AcadApplication
或者
Dim AcadApp As new  autocad.AcadApplication
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 23:04 | 显示全部楼层 来自: 中国辽宁大连
左岸 发表于 2012-7-6 23:00
为什么还弹出“用户定义类型未定义”呀,是不是一定要private类型?在那改呢?我一创建宏它就是通用,都不 ...

这样子是吗?前面写文件应该没错,都写出来了
Sub 按钮1_Click()
Dim i
i = 1
Open "d:\aa.scr" For Output As #1 '打开脚本
For i = 1 To 10
Print #1, Cells(i, 2).Value '把A1到A10写入脚本
Next i
Close #1
Dim AcadApp As AcadApplication
Set AcadApp = CreateObject("AutoCAD.Application") '定义对象
AcadApp.Visible = True 'CAD可见
AcadApp.ActiveDocument.SetVariable "FILEDIA", 0 '设置0,避免弹出对话框
AcadApp.ActiveDocument.SendCommand "SCRIPT" & vbCr & "d:\1.scr" & vbCr '运行脚本,脚本路径为“d:\1.scr”
AcadApp.ActiveDocument.SetVariable "FILEDIA", 1 '设置1,回复设置
End Sub
可还是出现那个错误了,然后箭头指向sub那,变成**,而且“Dim AcadApp As AcadApplication”被选定,成蓝色
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 23:05 | 显示全部楼层 来自: 中国辽宁大连
林黛玉 发表于 2012-7-6 23:02
尝试用new
Dim AcadApp As new  AcadApplication
或者

还是会,怎么办怎么办,用new了
Sub 按钮1_Click()
Dim i
i = 1
Open "d:\aa.scr" For Output As #1 '打开脚本
For i = 1 To 10
Print #1, Cells(i, 2).Value '把A1到A10写入脚本
Next i
Close #1
Dim AcadApp As New autocad.AcadApplication
Set AcadApp = CreateObject("AutoCAD.Application") '定义对象
AcadApp.Visible = True 'CAD可见
AcadApp.ActiveDocument.SetVariable "FILEDIA", 0 '设置0,避免弹出对话框
AcadApp.ActiveDocument.SendCommand "SCRIPT" & vbCr & "d:\1.scr" & vbCr '运行脚本,脚本路径为“d:\1.scr”
AcadApp.ActiveDocument.SetVariable "FILEDIA", 1 '设置1,回复设置
End Sub

回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 23:21 | 显示全部楼层 来自: 中国辽宁大连
林黛玉 发表于 2012-7-6 23:02
尝试用new
Dim AcadApp As new  AcadApplication
或者

似乎是excel没有连接到cad上,怎么连啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-7 11:36 | 显示全部楼层 来自: 中国辽宁大连
林黛玉 发表于 2012-7-6 23:02
尝试用new
Dim AcadApp As new  AcadApplication
或者

把dim后面的as去掉就可以了,但不知道为什么,代码如下:

Sub 按钮1_Click()
Dim i
i = 1
Open "d:\aa.scr" For Output As #1 '打开脚本
For i = 1 To 10
Print #1, Cells(i, 2).Value '把A1到A10写入脚本
Next i
Close #1
Dim Acadapp
'Set Acadapp = GetObject(, "AUTOCAD.APPLICATION")
Set Acadapp = CreateObject("AutoCAD.Application") '定义对象
Acadapp.Visible = True 'CAD可见
Acadapp.ActiveDocument.SetVariable "FILEDIA", 0 '设置0,避免弹出对话框
Acadapp.ActiveDocument.SendCommand "SCRIPT" & vbCr & "d:\aa.scr" & vbCr '运行脚本,脚本路径为“d:\1.scr”
Acadapp.ActiveDocument.SetVariable "FILEDIA", 1 '设置1,回复设置
End Sub
谢谢咯
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|标签|免责声明|龙船社区

GMT+8, 2024-9-21 11:07

Powered by Imarine

Copyright © 2006, 龙船社区

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