明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5724|回复: 4

一起来学vb.net(2,CAD.net调试不再是问题)

  [复制链接]
发表于 2012-5-23 12:52:35 | 显示全部楼层 |阅读模式
      用.net写CAD命令,可以用netload 加载dll,但是无法卸载,有人问过ADN(不知道是什么?去查查,注册ADN成员要收费的)成员,他们说无法解决,也没有给出具体的解释。
    这样我们调试完,加载dll,再调试编译的时候会出问题。网友也提出了用断点调试的方法(我用过,感觉不好)。现在给出一种全新的编写方法。(VS2010,CAD2012中调试)
    1,建立一个空白的类项目,引用好dll (属性设置为不复制---在Myproject 点击引用,定位到引用的dll在属性框里面设置复制本地属性)  
2,点击调试,设置启动外部项目为“E:\我的磁盘\源代码\VB.net\debug.exe”(当然你设你自己的),此debug.exe是自己写的一个VB程序,待会给出源码。
   3,调出输出窗口具体步骤 调试--窗口--输出  ---右键 停靠
   4,在类中写入一下代码:
  1. Imports Autodesk.AutoCAD.Runtime
  2. Public Class Class1
  3.     <CommandMethod("xxx")> _
  4.     Public Sub xxx()
  5.     End Sub
  6. End Class

当然把sub 改为function也可,设置一些CommandMethod 参数亦行。
好了到目前为止,您的CAD.net开发模板建好了,保存,以后每次开发复制此套模板即可直接开发调试。
下面讲解debug.exe程序。
原理:启动CAD(手动),用此debug.exe获得 调试输出.dll的路径,每次调试更改一下程序集的名字,这个很重要,你可以后面添1,2,3l累加上去,不要和以前调试的名字重复就行否则无法编译。
debug.exe程序的源码如下(vb6编写):
  1. '引用 AutoCAD 2012 Type library
  2. '引用 Microsoft Scripting Runtime  当然这个可以不引用直接安装脚本格式(变体)写代码
  3. '引用 Microsoft VBScript Regular Expressions5.5
  4. '***********************************
  5. '江河梦小组  华夏梦清
  6. '2012.5.23
  7. 'QQ 772671249 RTX 61692
  8. '***********************************
  9. Private Sub Form_Load()
  10. On Error Resume Next
  11.     Dim acadApp As AcadApplication, AcadD As AcadDocument
  12.    
  13.     Dim Fso As New Scripting.FileSystemObject
  14.     Dim Folder As Scripting.Folder, File As Scripting.File
  15.    
  16.     Dim Reg As New RegExp
  17.    
  18.     Dim Folderstr As String, Filestr As String
  19.    
  20.     Me.Hide
  21.     Folderstr = "": Filestr = ""
  22.     Reg.Pattern = "\.pdb$"
  23.     Reg.IgnoreCase = False
  24.     Reg.MultiLine = False
  25.     Reg.Global = True
  26.    
  27.         Open App.Path & "\debug.txt" For Input As #1
  28.             Line Input #1, Folderstr
  29.         Close
  30.         Set Folder = Fso.GetFolder(Folderstr)
  31.         For Each File In Folder.Files
  32.            If Reg.Test(File.Name) Then
  33.               Filestr = Reg.Replace(File.Path, ".dll")
  34.               Exit For
  35.            End If
  36.         Next
  37.         
  38.     Set Fso = Nothing
  39.     Set Reg = Nothing
  40.     Set Folder = Nothing
  41.    
  42.     If Filestr = "" Then End
  43.         Set acadApp = GetObject(, "AutoCAD.Application")
  44.         Set AcadD = acadApp.ActiveDocument
  45.           AcadD.SendCommand "filedia 0" & Chr(13)
  46.           AcadD.SendCommand "netload " & Filestr & Chr(13)
  47.           AcadD.SendCommand "filedia 1" & Chr(13)
  48.         Set AcadD = Nothing
  49.         Set acadApp = Nothing
  50.     If Err.Number <> 0 Then
  51.         MsgBox Err.Description & vbCrLf & "错误号:" & Err.Number, vbOKOnly, "江河梦小组"
  52.     End If
  53.     End
  54. 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

评分

参与人数 1明经币 +2 金钱 +15 收起 理由
雪山飞狐_lzh + 2 + 15 赞一个!

查看全部评分

发表于 2012-5-23 20:46:17 | 显示全部楼层
先收藏先。
发表于 2012-6-27 19:10:24 | 显示全部楼层
收了,不错的思路,谢谢分享!
发表于 2015-7-1 16:09:12 | 显示全部楼层
这样只能算是测试吧,没有“调”的过程了。不过在类似天正下面开发应该是有帮助的,因为可以打开天正再用GetObject(, "AutoCAD.Application.xx"),这样避免了设置启动对象的尴尬
发表于 2018-11-29 13:13:33 | 显示全部楼层
收了,不错的思路,谢谢分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 10:06 , Processed in 0.205365 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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