Практический опыт адаптации программы ПС «Профиль» к 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 году. Сфера деятельности компании — разработка прикладного программного обеспечения в области САПР и информационносправочных систем. Цель компании — создавать программы, имеющие максимально удобный и понятный интерфейс пользователя и несложные в администрировании. Достижению поставленной цели помогают частые общения с пользователями и системными администраторами фирмзаказчиков. Особое внимание компания уделяет качеству поддержки своих программных продуктов. Каждое обращение пользователя не остается без внимания и обязательно регистрируется. |