Я работал над написанием некоторых повторяющихся действий в Solidworks с использованием python. Я потратил некоторое время, пытаясь пройти через библиотеку win32com, и мне удалось много работать, но наткнулся на блокпост. Поэтому я теперь пытаюсь управлять API через Iron Python. Просто пытаюсь прокатиться и столкнулся с проблемой. Я попытался запустить код ниже:Использование Iron Python с API SolidWorks
import clr
clr.AddReferenceToFileAndPath('..\\Redist\\SolidWorks.Interop.sldworks.dll')
clr.AddReference('SolidWorks.Interop.swconst')
from SolidWorks.Interop import sldworks
from SolidWorks.Interop import swconst
print sldworks
swApp = sldworks.ISldWorks()
swApp.Visible = True
На запуске этого кода я получаю «TypeError: Невозможно создать экземпляры ISldWorks, потому что он является абстрактным»
После глядя на документацию Solidworks here Я вижу эту информацию: «Этот интерфейс является объектом самого высокого уровня в SolidWorks API. Этот интерфейс предоставляет общий набор функций, которые позволяют выполнять операции на уровне приложения, такие как создание, открытие, закрытие и закрытие документов, размещение значков и окон , изменить активный документ и создать определения атрибутов.
Используйте CreateObject, GetObject, New или подобные функции для получения объекта ISldWorks из приложения Dispatch (Visual Basic или C++ Dispatch). Автономные приложения .exe C++ COM могут использовать CoCreateInstance. Все мастера надстройки SolidWorks API автоматически создают для вас объект ISldWorks.
События реализованы с делегатами в Microsoft .NET Framework. См. Раздел «Обзор» для списка делегатов для этого интерфейса. »
Теперь, когда я хорошо знаком с программированием на питоне, вся эта вещь .net - это новое животное для меня, поэтому я уверен, что что-то делаю просто неправильно, но я, безусловно, изо всех сил пытаюсь выяснить, что это такое. Спасибо за вашу помощь.
--UPDATE Итак, я прошел и посмотрел, как работает система .net, и я чувствую себя как я Если я правильно понимаю, моя цель - попытаться создать экземпляр объекта приложения Solidworks или ISldWorks, а затем я смогу получить доступ ко всем членам. В моих исследованиях я пришел через эти две статьи: Solidworks standalone app и документацию на железо python от них, и ваш очень полезный ответ, похоже, что код ниже должен работать. Хотя при запуске я получаю сообщение об ошибке «EnvironmentError: System.Runtime.InteropServices.COMException (0x8002802B): Элемент не найден. (Исключение из HRESULT: 0x8002802B (TYPE_E_ELEMENTNOTFOUND)), что привело бы меня к мысли, что объект по-прежнему не устанавливая правильность.
import System
t = System.Type.GetTypeFromProgID('SldWorks.Application')
swApp = System.Activator.CreateInstance(t)
swApp.Visible = True