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

Loading AutoCad Type Library with VB6

6 REPLIES 6
Reply
Message 1 of 7
sgikas
1877 Views, 6 Replies

Loading AutoCad Type Library with VB6

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

6 REPLIES 6
Message 2 of 7
Alfred.NESWADBA
in reply to: sgikas

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
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)
Message 3 of 7
sgikas
in reply to: sgikas

 

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

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

 

Thanks in advance

 

Regards

Message 4 of 7
Alfred.NESWADBA
in reply to: sgikas

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
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)
Message 5 of 7
Ed.Jobe
in reply to: Alfred.NESWADBA

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

EESignature

Message 6 of 7
sgikas
in reply to: sgikas

Thanks

 

I will try it.

 

Hopefully I can make it work with VB6

 

Regards

Message 7 of 7
cvc-it-mb
in reply to: Ed.Jobe

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

 

Thanks!

Jim

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

Post to forums  

Autodesk Design & Make Report

”Boost