一、《autocad vba入门》http://co.163.com/forum/content/211_242637_1.htm第一章 VBA入门 11.1了解嵌入和全局VBA工程 11.2用VBA管理器组织工程 11.3处理宏 31.4用VBA IDE编辑工程 41.5更多的信息 91.6回顾AutoCAD VBA 工程术语 91.7回顾AutoCAD VBA 命令 10第二章 理解ActiveX自动操作基础 10
一、《autocad vba入门》http://co.163.com/forum/content/211_242637_1.htm
第一章 VBA入门 1
1.1了解嵌入和全局VBA工程 1
1.2用VBA管理器组织工程 1
1.3处理宏 3
1.4用VBA IDE编辑工程 4
1.5更多的信息 9
1.6回顾AutoCAD VBA 工程术语 9
1.7回顾AutoCAD VBA 命令 10
第二章 理解ActiveX自动操作基础 10
2.2访问对象层次 14
2.3通过集合对象操作 15
2.4理解属性和方法 16
2.5理解父对象 17
2.6定位类型库 17
2.7在数据库中返回第一个图元 17
2.8在方法和属性中使用变体 18
2.9使用其它程序语言 19
第三章 控制AutoCAD环境 21
3.2设定AutoCAD参数 23
3.3控制应用程序窗口 23
3.4控制图形窗口 24
3.5重置活动对象 31
3.6设定和返回系统变量 32
3.7精确制图 32
3.8提示用户输入 37
3.9访问AutoCAD命令行 40
3.10工作于无打开文档状态 40
3.11输入其它文件格式 40
3.12输出到其它文件格式 41
第四章 创建和编辑AutoCAD图元 42
4.1创建对象 42
4.2编辑对象 49
4.3使用图层、颜色和线型 70
4.4添加文本到图形中 79
第五章 标注与公差 93
5.1标注的概念 93
5.2创建标注 95
5.3编辑标注 99
5.4利用标注样式 100
5.5在模型空间和图纸空间中标注 103
5.6创建引线及注解 103
5.7创建形位公差 105
第六章 定义菜单和工具栏 106
6.1理解MenuBar和MenuGroups集合 107
6.2加载菜单组 108
6.3改变菜单条 109
6.4创建和编辑下拉菜单和快捷菜单 111
6.5建立并编辑工具栏 117
6.6建立宏 123
6.7对菜单项和工具栏项增加状态栏帮助 126
6.8在右键菜单中增加条目 127
第七章 使用事件 128
7.1了解AutoCAD中的事件 128
7.2编写事件处理器的方法 129
7.3处理应用程序级事件 130
7.4处理文档级事件 132
7.5处理对象级事件 134
第八章 在三维空间下工作 136
8.1指定三维坐标 136
8.2定义用户坐标系统 138
8.3坐标转换 139
8.4建立三维对象 141
8.5在三维中编辑 145
8.6编辑三维实体 148
第九章 定义布局及打印 151
9.1了解模型空间和图纸空间 151
9.2了解布局 151
9.3了解视口 153
9.4打印图纸 159
第十章-高级绘图与组织技术 161
10.1使用光栅图像 161
10.2使用块和属性 165
2楼
VBA源代码CAD中:http://co.163.com/forum/content/211_104894_1.htm
回复
3楼
AUTOCAD编程用的VBA开发人员指南:http://co.163.com/forum/content/211_218793_1.htm
回复
4楼
部分VBA源代码示例:http://co.163.com/forum/content/211_100799_1.htm
回复
5楼
VBA]图层合并姊妹篇:http://co.163.com/forum/content/211_67622_1.htm
回复
6楼
我想问一下楼主,我想学CAD编程,你说是学LISP还是VBA啊?我以前学过VB的,有一定的基础,就是不知道怎么把VB给弄进去,最好有一个例子
回复
7楼
有VB基础,最好是学VBA了,而且OFFICE也带有VBA的,以后有利于相互交流,比如从EXCEL中读取数据画图。
下图是进入VBA编辑器的过程,VBA实例在本站有,等我的代码成熟了,我也可以上传参考!
回复
8楼
VBA编程和VB一样吧?两者差别有多大啊?
回复
9楼
语法差不多,但增加了针对CAD画图的命令(函数),你可以拷贝示例代码运行一下看看
Sub totalnumber()
Dim total As Double
total = 0
Dim ssetObj As AcadSelectionSet
Set ssetObj = CreateSelectionSet("numberobj")
Dim ftype, fdata
BuildFilter ftype, fdata, 0, "text"
ssetObj.SelectOnScreen ftype, fdata
For i = 0 To ssetObj.Count - 1
If IsNumeric(ssetObj.Item(i).TextString) Then
total = total + ssetObj.Item(i).TextString
Else
End If
Next i
ssetobj.delete
ActiveDocument.Utility.Prompt "总和=" & total
End Sub
Public function CreateSelectionSet(Optional ssName As String = "ss") As AcadSelectionSet
’返回一个空白选择集
Dim ss As AcadSelectionSet
On Error Resume Next
Set ss = ThisDrawing.SelectionSets(ssName)
If err Then Set ss = ThisDrawing.SelectionSets.Add(ssName)
ss.Clear
Set CreateSelectionSet = ss
End Function
Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
’用数组方式填充一对变量以用作为选择集过滤器使用
Dim ftype() As Integer, fdata()
Dim index As Long, i As Long
index = LBound(gCodes) - 1
For i = LBound(gCodes) To UBound(gCodes) Step 2
index = index + 1
ReDim Preserve ftype(0 To index)
ReDim Preserve fdata(0 To index)
ftype(index) = CInt(gCodes(i))
fdata(index) = gCodes(i + 1)
Next
typeArray = ftype: dataArray = fdata
End Sub
回复
10楼
第一步,新寻一个CAD文件,用TEXT命令,输入两个数字,注意不要用多行文本!
一个输入25,另一个输入659
回复
11楼
第二步打开VBA编辑器:
回复