VBA
Discuss AutoCAD ActiveX and VBA (Visual Basic for Applications) questions here.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

run VB6 application with different Autocad Version

5 REPLIES 5
Reply
Message 1 of 6
staubli
5173 Views, 5 Replies

run VB6 application with different Autocad Version

Hello,
I have a Visual Basic 6.0 Project , to manage CAD Data
I want to open a file in Autocad
1) in VB6 , I add Project / Reference / Autocad 2006 Type Library
2) I use following code (see below) , to select application , start Autocad if not already started , open File
3) I compile Mycode : MyCADProject.exe
=> start MyCADProject.exe , I select a DWG file and I can open the file in Autocad 2006 : OK

Problem , I have new PC one with Autocad 2010, one with Autocad 2009 (all other PC are with Autocad 2006)
in My VB6 Project
1) I can not sellect both library "Autocad 2006 Type Library" and "Autocad 2007 Type Library"
=> I get a Windows error Message "Librairie déja utilisée"
2) If I select only one Library , this run well for one version of Autocad , but not fot the other version !
I want to manage only one version of MyCADProject.exe

I do not find any solution on this forum

Is is possible to run a VB6 project with different version of Autocad ?





Dim Acadapp As AcadApplication

On Error Resume Next
Set Acadapp = GetObject(, "AutoCAD.Application")


If Err.Number <> 0 Then
On Error GoTo 0
Set Acadapp = CreateObject("AutoCAD.Application")
End If

Acadapp.Documents.Open (Myfile)
Acadapp.Visible = True
5 REPLIES 5
Message 2 of 6
zzippo
in reply to: staubli

you have to use late binding instead of setting a refference to an AutocadType Library.

 

Dim Acadapp As Object
Set Acadapp = CreateObject("AutoCAD.Application")

Acadapp.Documents.Open (Myfile)
Acadapp.Visible = True

 

 

This will work with all versions. You can later check with Acadapp.Version if you run on 2006 or later.

 

 

Message 3 of 6
staubli
in reply to: staubli

Hello,

 

I have test you solution this run well ! 

 

1) do not select "Autocad 2006 Library type"  nor "Autocad 2007 Library type"   in Project / References

 

2) Dim Acadapp As Object   '  instead of AcadApplication , because Autocad is not select (cf 1)

 

 

 thanks a lot

 


@staubli wrote:
Hello,
I have a Visual Basic 6.0 Project , to manage CAD Data
I want to open a file in Autocad
1) in VB6 , I add Project / Reference / Autocad 2006 Type Library
2) I use following code (see below) , to select application , start Autocad if not already started , open File
3) I compile Mycode : MyCADProject.exe
=> start MyCADProject.exe , I select a DWG file and I can open the file in Autocad 2006 : OK

Problem , I have new PC one with Autocad 2010, one with Autocad 2009 (all other PC are with Autocad 2006)
in My VB6 Project
1) I can not sellect both library "Autocad 2006 Type Library" and "Autocad 2007 Type Library"
=> I get a Windows error Message "Librairie déja utilisée"
2) If I select only one Library , this run well for one version of Autocad , but not fot the other version !
I want to manage only one version of MyCADProject.exe

I do not find any solution on this forum

Is is possible to run a VB6 project with different version of Autocad ?





Dim Acadapp As AcadApplication

On Error Resume Next
Set Acadapp = GetObject(, "AutoCAD.Application")


If Err.Number <> 0 Then
On Error GoTo 0
Set Acadapp = CreateObject("AutoCAD.Application")
End If

Acadapp.Documents.Open (Myfile)
Acadapp.Visible = True

 

Message 4 of 6
Peter.Huitsingh
in reply to: staubli

Public Function Koppeling_AutoCAD(Optional ByRef Fout As Boolean, Optional Quiet As Boolean)
Dim OK As Boolean
Dim acV As String
Dim v()
Dim vv As String
Dim Index As Integer
Const ObjectString = "AutoCad.Application"

   Fout = False
   
   On Error Resume Next
   Index = CheckGetObject(ObjectString & ".")
   OK = IIf(Index <= 0, False, True)
   
   If OK Then
     v = LijstVersies
     'Set AcadColor = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor." & v(i))
     If InStr(1, v(Index), ".") Then
       vv = Mid(v(Index), 1, InStr(1, v(Index), ".") - 1)
      Else
       vv = v(Index)
     End If
     Set AcadColor = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor." & vv)
   End If
   
   If Not OK Then
     If Not Quiet Then Call MsgBox("No connection with AutoCAD", vbCritical)
     Fout = True
   End If
   
   If Not Fout Then
     Set AcadDoc = AcadApp.ActiveDocument
     Set AcadMod = AcadDoc.ModelSpace
     Set paSpace = AcadDoc.PaperSpace
     Set Util = AcadApp.ActiveDocument.Utility
     Set acTekeningen = AcadApp.Documents
     
     AcadApp.Visible = True
     AcadApp.ActiveDocument.Activate
     AchtergrondKleur = AcadApp.Preferences.Display.GraphicsWinModelBackgrndColor
  '   Call GetVersies(Index, acV, acadVersie)
   End If
   
   If acTekeningen.Count = 0 Then Fout = True
   If Fout Then acV = ""
   Koppeling_AutoCAD = acV
End Function 'koppeling_AutoCAD

Private Function LijstVersies()
Dim v(1 To 27) As Variant, vv As String
   v(1) = "1.0"
   v(2) = "1.2"
   v(3) = "1.3"
   v(4) = "1.4"
   v(5) = "2.0"
   v(6) = "2.1"
   v(7) = "2.5"
   v(8) = "2.6"
   v(9) = "9"
   v(10) = "10"
   v(11) = "11"
   v(12) = "12"
   v(13) = "13"
   v(14) = "14"
   v(15) = "15"
   v(16) = "15.1"
   v(17) = "15.2"
   v(18) = "16"
   v(19) = "16.1"
   v(20) = "16.2"
   v(21) = "17"
   v(22) = "17.1"
   v(23) = "17.2"
   v(24) = "18"
   v(25) = "18.1"
   v(26) = "18.2"
   v(27) = "19"
  LijstVersies = v
End Function

Private Sub GetVersies(Index, acV As String, acadVersie As String)
  acV = "": acadVersie = ""
  Select Case Index
    Case 27
      acV = "AutoCAD 2013"
      acadVersie = "2013"
    Case 26
      acV = "AutoCAD 2012"
      acadVersie = "2012"
    Case 25
      acV = "AutoCAD 2011"
      acadVersie = "2011"
    Case 24
      acV = "AutoCAD 2010"
      acadVersie = "2010"
    Case 23
      acV = "AutoCAD 2009"
      acadVersie = "2009"
    Case 22
      acV = "AutoCAD 2008"
    Case 21
      acV = "AutoCAD 2007"
    Case 20
      acV = "AutoCAD 2006"
    Case 19
      acV = "AutoCAD 2005"
    Case 18
      acV = "AutoCAD 2004"
    Case 17
      acV = "AutoCAD 2002"
    Case 16
      acV = "AutoCAD 2000i"
    Case 15
      acV = "AutoCAD 2000"
    Case 14
      acV = "AutoCAD R14"
    Case 13
      acV = "AutoCAD R13"
    Case Else
      acV = "AutoCAD ??"
  End Select
End Sub



 Dispite the Dutch words, I think it's readable enough to work with. Although the reply is late (couple of years), the problem remains for many users. In our Office we run AutoCAD2000-2009 + Civil2008-2013. Every year I have to add an extra number for the application.

 

Peter

 

Message 5 of 6
suns_444
in reply to: Peter.Huitsingh

i am nube in vba and vb6 pls can you tell me how to use above code to run

 

i guess it tell us that which autocad version is installed  on the computer

 

and second thing i just wanted to know that how to check if autocad is running from vb6

 

if autocad running the open new drawing in same instance of autocad

 

if not running open new instance of autocad

 

could you help me how to do that

 

Regards

Sunny Dedhia

Message 6 of 6
amiri.3433
in reply to: suns_444

hi my friend

if you can "run VB6 application with different Autocad Version" in vba6 

please say to me.

thanks

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

”Boost