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
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 -
Thanks for that, ...........but
How do i then load the associated Type Library programably???
Thanks in advance
Regards
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 -
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