私は Python を使用して、Solidworks でいくつかの反復動作のスクリプト作成に取り組んできました。私はwin32comライブラリを調べようとしてしばらく時間を費やし、なんとか多くの作業を行うことができましたが、障害に遭遇しました. だから私は今、Iron Python 経由で API を制御しようとしています。ローリングしようとしているだけで、問題が発生しました。以下のコードを実行しようとしました。
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 のドキュメント を見ると、次の情報が表示されます。ドキュメント、アイコンとウィンドウの配置、アクティブなドキュメントの変更、および属性定義の作成。
CreateObject、GetObject、New、または同様の関数を使用して、Dispatch アプリケーション (Visual Basic または C++ Dispatch) から ISldWorks オブジェクトを取得します。スタンドアロン .exe C++ COM アプリケーションは、CoCreateInstance を使用できます。SolidWorks API アドイン ウィザードはすべて、自動的に ISldWorks オブジェクトを作成します。
イベントは、Microsoft .NET Framework のデリゲートで実装されます。このインターフェイスのデリゲートのリストについては、概要トピックを参照してください。」
さて、私はPythonプログラミングに精通していますが、この.net全体は私にとって新しい動物なので、何か単純な間違いをしていると確信していますが、それが何であるかを正確に理解するのに苦労しています. ご協力いただきありがとうございます。
--UPDATE そこで、.net システムがどのように機能するかを調べてみました。したがって、私の目標は、Solidworks アプリケーション オブジェクト (ISldWorks) のインスタンスを作成することであり、すべてのメンバーにアクセスできるはずです。私の調査では、次の 2 つの記事に出くわしました: これらのSolidworks スタンドアロン アプリと鉄の python ドキュメント、およびあなたの非常に役立つ応答、以下のコードが機能するようです。実行すると、「EnvironmentError: System.Runtime.InteropServices.COMException (0x8002802B): Element not found. (Exception from HRESULT: 0x8002802B (TYPE_E_ELEMENTNOTFOUND))」というエラーが表示され、オブジェクトがまだ正しく起動していません。
import System
t = System.Type.GetTypeFromProgID('SldWorks.Application')
swApp = System.Activator.CreateInstance(t)
swApp.Visible = True