Перевод кода из Python в C#

Автор plvkk, 23.08.22, 14:21:54

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

plvkk

Всем доброго времени суток! Возникла необходимость перевести ниже представленный код из Python в C#. Так как я не силен в Питоне, прошу помощи здесь, надеюсь найдутся профессионалы, которые владеют обоими языками.
#  Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
MH.iKompasObject  = kompas_object

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication  = application


Documents = application.Documents
#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()

iFragment = kompas6_api5_module.ksFragment(iDocument2D.GetFragment())
iDefinition = iFragment.ksFragmentDefinition("C:/Users/123/Desktop/456.kle|123(1).frw", "C:\Users\123\Desktop\456.kle|123(1).frw", 0)
iPlacementParam = kompas6_api5_module.ksPlacementParam(kompas_object.GetParamStruct(kompas6_constants.ko_PlacementParam))
iPlacementParam.Init()
iPlacementParam.angle = 0
iPlacementParam.scale_ = 1
iPlacementParam.xBase = 0
iPlacementParam.yBase = 0
obj = iFragment.ksInsertFragment(iDefinition, True, iPlacementParam)
Код на Питоне получил при помощи записи макроса. Данный код вставляет уже построенный когда то фрагмент в чертеж.

p3452

Основной код "прозрачен" даже для начинающего кодера, если это кодер знаком с API Компас...
Цитата: plvkk от 23.08.22, 14:21:54Данный код вставляет уже построенный когда то фрагмент в чертеж.
- Не совсем верно.
Не плохо бы ознакомится, также, с типами файлов Компас - что такое файлы, с расширением "kle"?
ЭТО к тому, что "перевод" ВАМ ничего не даст...

P/S: Наберите в строке поиска "kle"...

plvkk

В Питоне и C# разный синтаксис, но немного похож. Единственное почему я не могу перевести, это опять же "болезнь" КОМПАС'а - непонятное SDK. Если бы было написано понятно, я бы и не просил помощи на форуме, но к сожалению таковым оно не является. Да и вовсе некоторые методы там не описаны.
Файлы с расширением .kle - библиотеки КОМПАС'а, в которых лежат фрагменты, они созданы мной руками.
Цитата: p3452 от 23.08.22, 15:13:19Данный код вставляет уже построенный когда то фрагмент в чертеж. - Не совсем верно.
А как тогда верно? Макрос делает именно это.
На счет даст/не даст чего - то мне этот код, я бы поспорил. Стало бы ясно каким образом используются отдельные методы, да и провести какие то параллели в синтаксисе этих языков.

p3452

Цитата: plvkk от 23.08.22, 15:22:05На счет даст/не даст чего - то мне этот код, я бы поспорил.
:-)))
Держите:
API5-Вставка фрагмента из kle.png
+ Благодарностей: 2