用VB编写CAD绘图插件
本人对VB仅是了解一些,并不熟。现在想用VB编写一个CAD绘图插件。请各位帮帮忙。要求:比如绘制一个矩形,或一段样条曲线。或给定一条线段以及半径,自动生成三维图。要求用V...
本人对VB仅是了解一些,并不熟。
现在想用VB编写一个CAD绘图插件。请各位帮帮忙。
要求:比如绘制一个矩形,或一段样条曲线。或给定一条线段以及半径,自动生成三维图。要求用VB插件的界面输入数值,但确定以后要在CAD的绘图窗口中输出结果。
我想要的是方法,我想通过代码了解一下VB与CAD之间是如何实现交互的。请各位高手或过来人多多指教。非常感谢。
回答满意我追加100分。也只有这么多了。 展开
现在想用VB编写一个CAD绘图插件。请各位帮帮忙。
要求:比如绘制一个矩形,或一段样条曲线。或给定一条线段以及半径,自动生成三维图。要求用VB插件的界面输入数值,但确定以后要在CAD的绘图窗口中输出结果。
我想要的是方法,我想通过代码了解一下VB与CAD之间是如何实现交互的。请各位高手或过来人多多指教。非常感谢。
回答满意我追加100分。也只有这么多了。 展开
展开全部
操作步骤:
一、创建一个ACTIVEX DLL cadPro工程
二、添加一个模块命名为ModCad.代码如下
Public acadApp As Object
Public 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 Select
End Function
Public 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.ActiveDocument
End Function
Public Function setApps(acadObj As AcadApplication)
Set ModCad.acadApp = acadObj
Set ModCad.acadDoc = acadApp.ActiveDocument
End Function
'VB中要在CAD中实现的功能
Private Function AutoCADTest()
Dim cadLine As AcadLine
Dim cadPoint As Variant
cadPoint = ModCad.acadDoc.Utility.GetPoint(, "请选取一个插入点:")
ModCad.acadDoc.ModelSpace.AddCircle cadPoint, 5
End Function
三、如果要在VB中调试,在添加一个EXE工程,引用ACTIVEX工程,添加一个窗体,在窗体上添加一个按钮,
Private Sub Command1_Click()
Dim Rec As New cadPro.MenuMain
Rec.MenuMain 1
End Sub
四、生成DLL文件在VBA中调用。
在工具----设定引用项目中加入生成的DLL。代码如下:
Option Explicit
Private clsGre As New cadPro.ClsTest
Public Sub cadtest()
On Error Resume Next
clsGre.setApp ThisDrawing.Application
clsGre.MenuMain 1
End Sub
按照以上四个步骤就可实现VB与AutoCAD的连接。
以上程序在本机测试通过。
OS:winxp sp2 cht
AuotCAD Version:AutoCAD 2006
一、创建一个ACTIVEX DLL cadPro工程
二、添加一个模块命名为ModCad.代码如下
Public acadApp As Object
Public 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 Select
End Function
Public 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.ActiveDocument
End Function
Public Function setApps(acadObj As AcadApplication)
Set ModCad.acadApp = acadObj
Set ModCad.acadDoc = acadApp.ActiveDocument
End Function
'VB中要在CAD中实现的功能
Private Function AutoCADTest()
Dim cadLine As AcadLine
Dim cadPoint As Variant
cadPoint = ModCad.acadDoc.Utility.GetPoint(, "请选取一个插入点:")
ModCad.acadDoc.ModelSpace.AddCircle cadPoint, 5
End Function
三、如果要在VB中调试,在添加一个EXE工程,引用ACTIVEX工程,添加一个窗体,在窗体上添加一个按钮,
Private Sub Command1_Click()
Dim Rec As New cadPro.MenuMain
Rec.MenuMain 1
End Sub
四、生成DLL文件在VBA中调用。
在工具----设定引用项目中加入生成的DLL。代码如下:
Option Explicit
Private clsGre As New cadPro.ClsTest
Public Sub cadtest()
On Error Resume Next
clsGre.setApp ThisDrawing.Application
clsGre.MenuMain 1
End Sub
按照以上四个步骤就可实现VB与AutoCAD的连接。
以上程序在本机测试通过。
OS:winxp sp2 cht
AuotCAD Version:AutoCAD 2006
展开全部
要是我知道CAD是怎么画出三维图来的,我用VB应该就能写出这样的一个程序来.(用vb来控制CAD),可惜我不会用CAD
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果要写CAD插件的话,就不要选VB了,用C++吧.
用VB的话,基本上说是很难的.
用VB的话,基本上说是很难的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询