用VB编写CAD绘图插件?

4年前 (2021-05-17)阅读467回复0
臻嫒无言
臻嫒无言
  • 管理员
  • 发消息
  • 注册排名40
  • 经验值290
  • 级别管理员
  • 主题58
  • 回复0
楼主
印刷厂直印加工●彩页1000张只需要69元●名片5元每盒-更多产品印刷报价➦联系电话:138-1621-1622(微信同号)

操作步骤:一、创建一个ACTIVEX DLL cadPro工程二、添加一个模块命名为ModCad.代码如下Public acadApp As ObjectPublic acadDoc As Object(这里建立一个新块主要是为了以后在多个窗体、类或者多个工程中可以调用)二、添加一个类ClsTest代码如下:Public Function MenuMain(MenuIndex As Integer) '下面的判断在VB中测试的时候可以用到,在生成DLL后VBA调用时可注释 If ModCad.acadApp Is Nothing Or ModCad.acadDoc Is Nothing Then ConnectToAcad setApp ModCad.acadApp setDoc ModCad.acadDoc End If Select Case MenuIndex Case 1 AutoCADTest Case 2 End SelectEnd FunctionPublic Function ConnectToAcad() On Error Resume Next Set ModCad.acadApp = GetObject(, "AutoCAD.Application.16.2") '16.2是CAD的版本 If Err Then Err.Clear Set ModCad.acadApp = CreateObject("AutoCAD.Application.16.2") End If If Err Then Err.Clear Set ModCad.acadApp = GetObject(, "AutoCAD.Application") If Err Then Err.Clear Set ModCad.acadApp = CreateObject("AutoCAD.Application") End If If Err Then Unload Me End If End If ModCad.acadApp.Visible = True Set ModCad.acadDoc = ModCad.acadApp.ActiveDocumentEnd FunctionPublic Function setApps(acadObj As AcadApplication) Set ModCad.acadApp = acadObj Set ModCad.acadDoc = acadApp.ActiveDocumentEnd Function'VB中要在CAD中实现的功能Private Function AutoCADTest() Dim cadLine As AcadLine Dim cadPoint As Variant cadPoint = ModCad.acadDoc.Utility.GetPoint(, "请选取一个插入点:") ModCad.acadDoc.ModelSpace.AddCircle cadPoint, 5End Function三、如果要在VB中调试,在添加一个EXE工程,引用ACTIVEX工程,添加一个窗体,在窗体上添加一个按钮,Private Sub Command1_Click() Dim Rec As New cadPro.MenuMain Rec.MenuMain 1 End Sub四、生成DLL文件在VBA中调用。在工具----设定引用项目中加入生成的DLL。代码如下:Option ExplicitPrivate clsGre As New cadPro.ClsTestPublic Sub cadtest() On Error Resume Next clsGre.setApp ThisDrawing.Application clsGre.MenuMain 1 End Sub按照以上四个步骤就可实现VB与AutoCAD的连接。以上程序在本机测试通过。OS:winxp sp2 chtAuotCAD Version:AutoCAD 2006

0
0
收藏0
回帖

用VB编写CAD绘图插件? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息