关于autocad二次开发的,请高手指点。
我是vba新手,想请教两个问题:第一,从cad的vba管理器中新建工程,进入vb编辑器,做了一个dvb格式的工程,但是下一次怎样打开才能看到源代码,cad只能加载,但看不...
我是vba新手,想请教两个问题:第一,从cad的vba管理器中新建工程,进入vb编辑器,做了一个dvb格式的工程,但是下一次怎样打开才能看到源代码,cad只能加载,但看不到代码,即使再次进入vb编辑器也看不到。
第二,建立一个dvb工程后,他具有一个功能,比如可以读取一个点的坐标并存储,但在cad中加载工程后,怎么启动这个工程,实现这一功能呢?可能对于高手是很简单的问题,但我诚心希望有人给我讲解一下,先谢谢啦! 展开
第二,建立一个dvb工程后,他具有一个功能,比如可以读取一个点的坐标并存储,但在cad中加载工程后,怎么启动这个工程,实现这一功能呢?可能对于高手是很简单的问题,但我诚心希望有人给我讲解一下,先谢谢啦! 展开
1个回答
展开全部
示例插入一个文件(需要VBA与LISP配合)
在VBA中写入以下,并保存到C:\ZCAD\ZCAD.dvb
Sub DetailMtext()
On Error GoTo Err:
Dim Varian As Variant
Dim Pti(0 To 2) As Double
Dim PtH As String
Dim TextH As Double
Dim Po(0 To 2) As Double
Dim Texta As AcadText
Dim Tsc As Double
Dim BlocobjA As AcadBlockReference
Tsc = 1 ’比例
PtH = "C:\ZCAD\DrawBlock\DetailMtext.dwg" ‘此路径你自定义,必须有;没有会报错
If Dir(PtH) <> "" Then
Varian = ThisDrawing.Utility.GetPoint(, vbCr & "放置点:")
Po(0) = Varian(0): Po(1) = Varian(1): Po(2) = Varian(2)
Set BlocobjA = ThisDrawing.ModelSpace.InsertBlock(Po, PtH, Tsc, Tsc, Tsc, 0)
BlocobjA.Explode
BlocobjA.Delete
Else
MsgBox "<" + PtH + " >文件不存在!!!", vbCritical, "读取文件错误" ‘文件报错
End If
Err: ’错误停止运行
End Sub
'如果用命令显示窗口,则将中间的内容改为 UserForm1.Show
'UserForm1为窗口的名子
-------------------------------------------------------------------------------------------------
在LISP中写入以下,并保存到C:\ZCAD\ZCAD.lsp
(defun C:TT() (graphscr)(setvar "cmdecho" 0)(vl-vbarun "DetailMtext") (setvar "cmdecho" 1))
;;;在CAD中用TT命令调用VBA中的sub DetailMtext
(graphscr)(setvar "cmdecho" 0)(vl-vbaload "c:/ZCAD/ZCAD.dvb")(setvar "cmdecho" 1)
;;;加载此文件时加载c:/ZCAD/ZCAD.dvb
完了以后,AP加载C:\ZCAD\ZCAD.lsp,输入TT命令就可以运行了,你如果想CAD以后不用加载,就在启动组加入C:\ZCAD\ZCAD.lsp;或在安装目录下Support\acad200x.lsp中加入加载C:\ZCAD\ZCAD.lsp
在VBA中写入以下,并保存到C:\ZCAD\ZCAD.dvb
Sub DetailMtext()
On Error GoTo Err:
Dim Varian As Variant
Dim Pti(0 To 2) As Double
Dim PtH As String
Dim TextH As Double
Dim Po(0 To 2) As Double
Dim Texta As AcadText
Dim Tsc As Double
Dim BlocobjA As AcadBlockReference
Tsc = 1 ’比例
PtH = "C:\ZCAD\DrawBlock\DetailMtext.dwg" ‘此路径你自定义,必须有;没有会报错
If Dir(PtH) <> "" Then
Varian = ThisDrawing.Utility.GetPoint(, vbCr & "放置点:")
Po(0) = Varian(0): Po(1) = Varian(1): Po(2) = Varian(2)
Set BlocobjA = ThisDrawing.ModelSpace.InsertBlock(Po, PtH, Tsc, Tsc, Tsc, 0)
BlocobjA.Explode
BlocobjA.Delete
Else
MsgBox "<" + PtH + " >文件不存在!!!", vbCritical, "读取文件错误" ‘文件报错
End If
Err: ’错误停止运行
End Sub
'如果用命令显示窗口,则将中间的内容改为 UserForm1.Show
'UserForm1为窗口的名子
-------------------------------------------------------------------------------------------------
在LISP中写入以下,并保存到C:\ZCAD\ZCAD.lsp
(defun C:TT() (graphscr)(setvar "cmdecho" 0)(vl-vbarun "DetailMtext") (setvar "cmdecho" 1))
;;;在CAD中用TT命令调用VBA中的sub DetailMtext
(graphscr)(setvar "cmdecho" 0)(vl-vbaload "c:/ZCAD/ZCAD.dvb")(setvar "cmdecho" 1)
;;;加载此文件时加载c:/ZCAD/ZCAD.dvb
完了以后,AP加载C:\ZCAD\ZCAD.lsp,输入TT命令就可以运行了,你如果想CAD以后不用加载,就在启动组加入C:\ZCAD\ZCAD.lsp;或在安装目录下Support\acad200x.lsp中加入加载C:\ZCAD\ZCAD.lsp
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询