6 - 2015

Практический опыт адаптации программы ПС «Профиль» к ZWCAD+

Алексей Макаренко 
Генеральный директор ООО «Идея-Софт»
Алексей Макаренко
Генеральный директор ООО «Идея-Софт»

В мае 2014 года перед компанией «Идея­Софт» была поставлена задача адаптировать программу ПС «Профиль» к ZWCAD+. Инициатива постановки этой задачи принадлежит проектной компании ООО «ЦПИО», которая приобрела ZWCAD+. Заказчик пожелал скорейшей адаптации ПС «Профиль» к ZWCAD+.

Разработчики программы предполагали, что может наступить момент, когда придется сделать такой шаг, и совсем не обязательно, что адаптировать программу придется именно к ZWCAD+. Именно поэтому архитектура ПС «Профиль» в 2010 году была построена по модульному принципу. В архитектуре ПС «Профиль» отдельным файлом был выделен функциональный модуль для работы с AutoCAD.

Для адаптации ПС «Профиль» к ZWCAD+ нужно было переписать код модуля работы с AutoCAD. Как оказалось,  сделать это весьма просто и быстро, так как переписывать особо ничего и не пришлось. Достаточно было только в тексте исходного кода модуля сделать автоматическую замену нужных фрагментов текста и поменять ссылки на .NET­сборки для ZWCAD+. Вся работа по переводу кода заняла не более часа. Работы по тестированию функций модуля заняли еще два дня.

Для сравнения приведу пример кода программы. Как видно из кода, содержимое функции acadnet_Primitive_SetColor не требуется менять. Нужно только фрагменты текста Autodesk.AutoCAD заменить на ZWSoft.ZWCAD в операторах импорта .NET­сборок. 

‘ AUTOCAD API (фрагмент кода для работы с AutoCAD)

Imports CAD_APS = Autodesk.AutoCAD.ApplicationServices

Imports CAD_COL = Autodesk.AutoCAD.Colors

Imports CAD_GEO = Autodesk.AutoCAD.Geometry

Imports CAD_EDI = Autodesk.AutoCAD.EditorInput

Imports CAD_DBS = Autodesk.AutoCAD.DatabaseServices

‘ ZWCAD API (фрагмент кода для работы с ZWCAD+)

Imports CAD_APS = ZWSoft.ZWCAD.ApplicationServices

Imports CAD_COL = ZWSoft.ZWCAD.Colors

Imports CAD_GEO = ZWSoft.ZWCAD.Geometry

Imports CAD_EDI = ZWSoft.ZWCAD.EditorInput

Imports CAD_DBS = ZWSoft.ZWCAD.DatabaseServices

‘ фрагмент класса функций для работы AutoCAD или ZWCAD+

Public Class acad_function_net

    ‘ подпрограмма установки цвета примитиву

    ‘ Н — уникальный номер примитива,

    ‘ SetColIndex — номер цвета,

    ‘ db — база данных чертежа

    Public Shared Sub acadnet_Primitive_SetColor(ByVal H As String, _

                                                 ByVal SetColIndex As Integer, _

                                                 ByVal db As CAD_DBS.Database)

        If (H = “”) Then Exit Sub

        ‘ старт транзакции

        Using trans As CAD_DBS.Transaction = db.TransactionManager.StartTransaction

            Try

                ‘ получение доступа к примитиву

                Dim ln As Long = System.Convert.ToInt64(H, 16)

                Dim Hn = New CAD_DBS.Handle(ln)

                                Dim ID = db.GetObjectId(False, Hn, 0) ‘ идентификатор примитива

                Dim dbObj = trans.GetObject(ID, CAD_DBS.OpenMode.ForWrite, False, True)

                Dim ent = DirectCast(dbObj, CAD_DBS.Entity)

                If ent IsNot Nothing Then

                    ent.UpgradeOpen()

                    ent.ColorIndex = SetColIndex ‘ присвоение цвета примитиву

                End If

            Catch ex As System.Exception

            End Try

            trans.Commit()  ‘ подтверждение изменения в базе данных чертежа

        End Using

    End Sub

End Class

О компании «Идея-Софт»

Компания «Идея­Софт» основана в 2005 году. Сфера деятельности компании — разработка прикладного программного обеспечения в области САПР и информационно­справочных систем. Цель компании — создавать программы, имеющие максимально удобный и понятный интерфейс пользователя и несложные в администрировании. Достижению поставленной цели помогают частые общения с пользователями и системными администраторами фирм­заказчиков. Особое внимание компания уделяет качеству поддержки своих програм­мных продуктов. Каждое обращение пользователя не остается без внимания и обязательно регистрируется.

САПР и графика 6`2015