Loading AutoCad Type Library with VB6

Loading AutoCad Type Library with VB6

Anonymous
Not applicable
2,169 Views
6 Replies
Message 1 of 7

Loading AutoCad Type Library with VB6

Anonymous
Not applicable

I am not a programer, I am an enginner using Visual Basic 6

 

In my VB6 program I need to check the Loaded AutoCad Version and then Load the associated Type Library

How can I do this

0 Likes
2,170 Views
6 Replies
Replies (6)
Message 2 of 7

Alfred.NESWADBA
Consultant
Consultant

Hi,

 

>> I need to check the Loaded AutoCad Version

Check the sysvar ACADVER, it gives you e.g. this value for AutoCAD 2012-based product:

ACADVER = "18.2s (LMS Tech)" (schreibgeschützt)

 

- alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
ISH-Solutions GmbH / Ingenieur Studio HOLLAUS
www.ish-solutions.at ... blog.ish-solutions.at ... LinkedIn ... CDay 2026
------------------------------------------------------------------------------------

(not an Autodesk consultant)
0 Likes
Message 3 of 7

Anonymous
Not applicable

 

Thanks for that, ...........but

How do i then load the associated Type Library programably???

 

Thanks in advance

 

Regards

0 Likes
Message 4 of 7

Alfred.NESWADBA
Consultant
Consultant

Hi,

 

>> How do i then load the associated Type Library programably???

You have to create different projects (can be the same source-code if signatures are compatible) each having it's version-depending references (as you can't create a project without having any references set).

Then don't decide what reference to load but what project to load.

 

- alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
ISH-Solutions GmbH / Ingenieur Studio HOLLAUS
www.ish-solutions.at ... blog.ish-solutions.at ... LinkedIn ... CDay 2026
------------------------------------------------------------------------------------

(not an Autodesk consultant)
0 Likes
Message 5 of 7

Ed__Jobe
Mentor
Mentor

If you set a reference to the ide, you can control it programatically. In vba, the reference is "Microsoft Visual Basic for Applications Extensibility 5.3". I don't remember what it is for VB. I wrote the following subs to load references by filename or guid.

Public Function SetReferenceByFile(FilePath As String, Optional DisplayErrors As Boolean) As VBIDE.Reference
    'returns True if successful in setting a reference in the current dvb,
    'given the FilePath of a tlb, olb, dll. The DisplayErrors option determines
    'whether or not an error message will be displayed upon erroring.
    On Error GoTo ErrorHandler
    Dim objVB As Object  'VBE
    Dim objRef As VBIDE.Reference
    Dim objRefs As VBIDE.References
    Dim strPath As String
    
    Set objVB = AcadApplication.VBE
    Set objRef = objVB.ActiveVBProject.References.AddFromFile(FilePath)
    SetReferenceByFile = True
    GoTo Finish:
ErrorHandler:
    If Err.Number = 32813 Then
        'reference was already set, just return the reference
         Set objRefs = objVB.ActiveVBProject.References
         For Each objRef In objRefs
             If objRef.FullPath = FilePath Then
                 Set SetReferenceByFile = objRef
             End If
         Next objRef
    Else
        If DisplayErrors = True Then
            MsgBox Err.Number & ", " & Err.Description, vbExclamation, "SetReferenceByFile."
        Else
        
        End If
        Set SetReferenceByFile = Nothing
    End If
Finish:
    Set objVB = Nothing
    Set objRef = Nothing
End Function

 Public Function SetReferenceByGUID(strGUID As String, maj As Long, min As Long) As VBIDE.Reference

     'Returns a Reference object if successful in setting a reference in the current dvb,
     'given the GUID of a tlb, olb, dll. Using a GUID avoids having to test
     'for a valid filepath.
     On Error GoTo ErrorHandler
     Dim objVB As VBE
     Dim objRef As VBIDE.Reference
     Dim objRefs As VBIDE.References
     Dim strPath As String

     Set objVB = Application.VBE
     Set objRef = objVB.ActiveVBProject.References.AddFromGuid(strGUID, maj, min)
     Set SetReferenceByGUID = objRef
     GoTo Finish:
ErrorHandler:
     If Err.Number = 32813 Then
         'reference was already set, just return the reference
         Set objRefs = objVB.ActiveVBProject.References
         For Each objRef In objRefs
             If objRef.GUID = strGUID Then
                 Set SetReferenceByGUID = objRef
             End If
         Next objRef
     Else
         Set SetReferenceByGUID = Nothing
     End If
Finish:
     Set objVB = Nothing
     Set objRef = Nothing
 End Function

 

Ed


Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
How to post your code.

EESignature

0 Likes
Message 6 of 7

Anonymous
Not applicable

Thanks

 

I will try it.

 

Hopefully I can make it work with VB6

 

Regards

0 Likes
Message 7 of 7

Anonymous
Not applicable

Can you provide a small snippet on how to use these 2 functions?

 

Thanks!

Jim

0 Likes