Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime
Imports System.Drawing
Imports System.Drawing.Text
Imports System.IO
Imports System.Reflection
 
Public Class Initialization
 
    Implements IExtensionApplication
 
    Friend Shared kdLoad As Boolean = False
    Friend Shared reLoad As Boolean = False
    Friend Shared cuixLoad As Boolean = False
    Friend Shared bExist As Boolean = False
    Friend Shared fExist As Boolean = False
    Friend Shared rsLoad As Boolean = False
 
    Private cVersion As String
 
    Public Sub Initialize() Implements IExtensionApplication.Initialize
 
        cVersion = Core.Application.Version.Major & "." & Core.Application.Version.Minor
 
        Dim ed As Editor = Core.Application.DocumentManager.MdiActiveDocument.Editor
        ed.WriteMessage(vbCrLf)
 
        ed.WriteMessage(vbCrLf & "SomeSmallTools {0}.", My.Application.Info.Version)
 
        ed.WriteMessage(vbCrLf & "Версия среды: {0}.", cVersion)
 
        'Проверяем наличие файлов расширений
        Try
            Assembly.LoadFrom(My.Application.Info.DirectoryPath & "\Extensions\KDTree.dll")
            kdLoad = True
            ed.WriteMessage(vbCrLf & "Модуль KDSharp: Загружен. ")
        Catch ex As Exception
            kdLoad = False
            ed.WriteMessage(vbCrLf & "Модуль KDSharp: Не удалось загрузить. " & vbCrLf & ex.ToString)
        End Try
        Try
            Assembly.LoadFrom(My.Application.Info.DirectoryPath & "\Extensions\RandomExtension.dll")
            reLoad = True
            ed.WriteMessage(vbCrLf & "Модуль RandomExtension: Загружен. ")
        Catch ex As Exception
            reLoad = False
            ed.WriteMessage(vbCrLf & "Модуль RandomExtension: Не удалось загрузить. " & vbCrLf & ex.ToString)
        End Try
 
        'Проверяем наличие файлов шаблонов
        If File.
Exists(My.
Application.
Info.
DirectoryPath & "\Templates\Blocks.dwg") Then             bExist = True
            ed.WriteMessage(vbCrLf & "Файл шаблонов Blocks.dwg: Найден. ")
        Else
            ed.WriteMessage(vbCrLf & "Файл шаблонов Blocks.dwg: Не найден. ")
        End If
 
        'Проверяем наличие библиотек ресурсов
        Select Case cVersion
            Case "19.0", "19.1" 'Shared 2013+
                If File.
Exists(My.
Application.
Info.
DirectoryPath & "\Interface\Shared 2013+\SSToolsUI.dll") Then                     rsLoad = True
                    ed.WriteMessage(vbCrLf & "Компоненты интерфейса: Найдены. ")
                Else
                    ed.WriteMessage(vbCrLf & "Компоненты интерфейса: Не найдены. ")
                End If
            Case "20.0", "20.1" 'Shared 2015+
                If File.
Exists(My.
Application.
Info.
DirectoryPath & "\Interface\Shared 2015+\SSToolsUI.dll") And                     File.
Exists(My.
Application.
Info.
DirectoryPath & "\Interface\Shared 2015+\SSToolsUI_light.dll") Then                     rsLoad = True
                    ed.WriteMessage(vbCrLf & "Компоненты интерфейса: Найдены. ")
                Else
                    ed.WriteMessage(vbCrLf & "Компоненты интерфейса: Не найдены. ")
                End If
            Case "21.0", "22.0", "23.0", "23.1" 'Shared 2017+
                If File.
Exists(My.
Application.
Info.
DirectoryPath & "\Interface\Shared 2017+\SSToolsUI.dll") And                     File.
Exists(My.
Application.
Info.
DirectoryPath & "\Interface\Shared 2017+\SSToolsUI_light.dll") Then                     rsLoad = True
                    ed.WriteMessage(vbCrLf & "Компоненты интерфейса: Найдены. ")
                Else
                    ed.WriteMessage(vbCrLf & "Компоненты интерфейса: Не найдены. ")
                End If
        End Select
 
        'Проверяем наличие шрифтов в системе
        Dim fs As New InstalledFontCollection
        Dim fCount As Integer = 0
        For Each ff As FontFamily In fs.Families
            If ff.Name = My.Settings.SSToolsNormalFont Or ff.Name = My.Settings.SSToolsFramedFont Then
                fCount += 1
            End If
        Next
        If fCount = 2 Then
            fExist = True
            ed.WriteMessage(vbCrLf & "Шрифты: Установлены.")
        Else
            ed.WriteMessage(vbCrLf & "Шрифты: Не установлены.")
            With My.Settings
                .XYZDUsePluginFont = False
                .XYZDVertDiffsFrameOn = False
                .Save()
            End With
        End If
        ed.WriteMessage(vbCrLf)
 
    End Sub
 
    Public Sub Terminate() Implements IExtensionApplication.Terminate
        Console.WriteLine("Работа SomeSmallTools завершена. ")
    End Sub
 
End Class