用.net写CAD命令,可以用netload 加载dll,但是无法卸载,有人问过ADN(不知道是什么?去查查,注册ADN成员要收费的)成员,他们说无法解决,也没有给出具体的解释。
这样我们调试完,加载dll,再调试编译的时候会出问题。网友也提出了用断点调试的方法(我用过,感觉不好)。现在给出一种全新的编写方法。(VS2010,CAD2012中调试)
1,建立一个空白的类项目,引用好dll (属性设置为不复制---在Myproject 点击引用,定位到引用的dll在属性框里面设置复制本地属性)
2,点击调试,设置启动外部项目为“E:\我的磁盘\源代码\VB.net\debug.exe”(当然你设你自己的),此debug.exe是自己写的一个VB程序,待会给出源码。
3,调出输出窗口具体步骤 调试--窗口--输出 ---右键 停靠
4,在类中写入一下代码:
- Imports Autodesk.AutoCAD.Runtime
- Public Class Class1
- <CommandMethod("xxx")> _
- Public Sub xxx()
- End Sub
- End Class
当然把sub 改为function也可,设置一些CommandMethod 参数亦行。
好了到目前为止,您的CAD.net开发模板建好了,保存,以后每次开发复制此套模板即可直接开发调试。
下面讲解debug.exe程序。
原理:启动CAD(手动),用此debug.exe获得 调试输出.dll的路径,每次调试更改一下程序集的名字,这个很重要,你可以后面添1,2,3l累加上去,不要和以前调试的名字重复就行否则无法编译。
debug.exe程序的源码如下(vb6编写):
- '引用 AutoCAD 2012 Type library
- '引用 Microsoft Scripting Runtime 当然这个可以不引用直接安装脚本格式(变体)写代码
- '引用 Microsoft VBScript Regular Expressions5.5
- '***********************************
- '江河梦小组 华夏梦清
- '2012.5.23
- 'QQ 772671249 RTX 61692
- '***********************************
- Private Sub Form_Load()
- On Error Resume Next
- Dim acadApp As AcadApplication, AcadD As AcadDocument
-
- Dim Fso As New Scripting.FileSystemObject
- Dim Folder As Scripting.Folder, File As Scripting.File
-
- Dim Reg As New RegExp
-
- Dim Folderstr As String, Filestr As String
-
- Me.Hide
- Folderstr = "": Filestr = ""
- Reg.Pattern = "\.pdb$"
- Reg.IgnoreCase = False
- Reg.MultiLine = False
- Reg.Global = True
-
- Open App.Path & "\debug.txt" For Input As #1
- Line Input #1, Folderstr
- Close
- Set Folder = Fso.GetFolder(Folderstr)
- For Each File In Folder.Files
- If Reg.Test(File.Name) Then
- Filestr = Reg.Replace(File.Path, ".dll")
- Exit For
- End If
- Next
-
- Set Fso = Nothing
- Set Reg = Nothing
- Set Folder = Nothing
-
- If Filestr = "" Then End
- Set acadApp = GetObject(, "AutoCAD.Application")
- Set AcadD = acadApp.ActiveDocument
- AcadD.SendCommand "filedia 0" & Chr(13)
- AcadD.SendCommand "netload " & Filestr & Chr(13)
- AcadD.SendCommand "filedia 1" & Chr(13)
- Set AcadD = Nothing
- Set acadApp = Nothing
- If Err.Number <> 0 Then
- MsgBox Err.Description & vbCrLf & "错误号:" & Err.Number, vbOKOnly, "江河梦小组"
- End If
- End
- End Sub
其实从源码中你就能看出究竟,我这里再啰嗦一下:
debug.exe的路径下要建立一个debug.txt文档,这个是用来放入vs编译输出的文件夹路径的比如:
E:\我的磁盘\源代码\VB.net\cad.net之vb.net\vb.net窗体\xxx\bin\Debug\
因为我无法操作VS的ide环境,来直接获取此路径,所以也只能这样搞。
这样,您写CAD.net程序步骤如下:
1,复制自己建的模板编写代码---调试(第一次调试)
2,点击输出窗口中“显示来源:"的"生成项" 复制此路径(不带文件名)粘贴于debug.exe
3,复制带文件名的在CAD中filedia--0--netload--贴入--输入命令(第一次调试而已,您已经可以随便改下代码直接调试了
,即即可忽略这一步)
4,更改代码,在Myproject ---应用程序---更改程序集名称(可以后面加数字,每次调试依次往上面叠加)
5,调试,在CAD中输入命令查看结果。
6,重复4,5步骤。
以上步骤CAD一直处于开启状态。
以后写程序使用1-6步骤即可调试CAD.net程序,如果您有更好的方法,欢迎指点!
原创帖子,转载请注明出处!
华夏梦清 2012-5-3
|