Visual Basic Customization

Visual Basic Customization

Reply
Contributor
11 Posts
0 Kudos
Registered: ‎09-27-2007
Post 1 of 7

Loading AutoCad Type Library with VB6

1125 Views, 6 Replies
06-17-2012 09:20 PM

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

*Expert Elite*
9,827 Posts
1,216 Kudos
Registered: ‎06-29-2007
Post 2 of 7

Re: Loading AutoCad Type Library with VB6

06-21-2012 01:31 AM 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
-------------------------------------------------------------------------
Contributor
11 Posts
0 Kudos
Registered: ‎09-27-2007
Post 3 of 7

Re: Loading AutoCad Type Library with VB6

06-21-2012 01:42 AM in reply to: sgikas

 

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

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

 

Thanks in advance

 

Regards

*Expert Elite*
9,827 Posts
1,216 Kudos
Registered: ‎06-29-2007
Post 4 of 7

Re: Loading AutoCad Type Library with VB6

06-21-2012 01:59 AM 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
-------------------------------------------------------------------------
Distinguished Contributor
716 Posts
4 Kudos
Registered: ‎01-24-2003
Post 5 of 7

Re: Loading AutoCad Type Library with VB6

06-28-2012 07:43 AM 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

 

Contributor
11 Posts
0 Kudos
Registered: ‎09-27-2007
Post 6 of 7

Re: Loading AutoCad Type Library with VB6

06-28-2012 04:21 PM in reply to: sgikas

Thanks

 

I will try it.

 

Hopefully I can make it work with VB6

 

Regards

Active Contributor
49 Posts
0 Kudos
Registered: ‎10-20-2006
Post 7 of 7

Re: Loading AutoCad Type Library with VB6

08-27-2012 05:28 PM in reply to: eljobe

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

 

Thanks!

Jim

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Are you interested in helping shape the future of the Autodesk Community? To participate in this brief usability study, please click here. Your time and input is greatly appreciated!