2014年クリスマス,某山本サンタからのプレゼントが便利だったので,ぼくも作ってみたいと思い年末年始の空き時間に勉強をしてみることにしたので,気づいたことなどあればここにメモしていこうと思います。
バージョン2015のAPIヘルプを見ながら進める。
とりあえず言語はなんでもいい(どれも馴染みがないので逆に)けど,とりあえずVB.NETにしようかな。
無料のVisual Studio Expressは2013までで,つぎははVisual Studio Communityという名前になっているらしい。
機能は上位っぽかったのでこれ(Community 2013)をインストール。
Solidworks インストレーションマネージャーから,機能追加でSolidworks API SDKをインストール。
これでVisual Studioのテンプレートに出てくるらしいが出てこない。
しらべてみるとここにやり方書いてくれている人が。
~以下引用&意訳~
apisdkのmsiファイル(インストーラー,カスタマーポータルのダウンロード→Solidworks→Accept→一番下に個別ダウンロードリンクがある,そこから入ってAPI SDKをダウンロードして回答したらSOLIDWORKS API SDK.msiというファイルができる)を,7-zipなどで解凍する。すると中にswcsharpaddin.zip と swvbaddin.zip がある。これがテンプレートファイルで,これをVisual Studioのテンプレートフォルダにコピーする。テンプレートフォルダはVSのツール→オプション→プロジェクト及びソリューション→全般 に設定されている。プロジェクトテンプレートのフォルダ。
~引用終わり~
これでテンプレートに出てくるようになり,めでたくぼくの一つ目のアドインが開始できるようになった。
機能は未定。
コメント
最初に”Imports・・・”と書いておくのは、各コマンドの在り処(入れ子状の入れ物?)を宣言しておくようなもので、ここで直前まで宣言しておくと、その後の構文内ではコマンド名だけ書けばいいのですが、宣言されていないと、構文内で入れ物の名前まで書かないといけなくなるんですね。
例えば、
Imports SolidWorks までしか宣言していないと構文内では Interop.sldworks.コマンド名
Imports SolidWorks.Interop まで宣言していると構文内では sldworks.コマンド名 や swconst.コマンド名
Imports SolidWorks.Interop.sldworks まで宣言していると構文内では コマンド名 だけでOK
なのでSolidWorksの宣言はせいぜい3~4つで済むので最初に Imports しておいたほうが楽ですね。
これは System でも同じことです。
ここだけの話し、某山本サンタ=Makoron です(^^)v
でも、過去の記憶をさかのぼるのが大変なので、カタマリの固まりが早く解消されるといいな!
2008バージョンなんですが,TopLevelオブジェクトがSldWorksとなっていて,
2015ではISldWorksに変わっている?のかな?
よくわかってませんが,これがヒントになって動きました!
SldWorks → SolidWorks.Interop.sldworks
SwConst → SolidWorks.Interop.swconst
SWPublished → SolidWorks.Interop.swpublished
で,それっぽいAPIに置き換えたら動きました。
SldWorksとかSwConstとかは,ぼくの環境ではそもそもインポートできませんでした。
山本さん:ありがとうございます!
それを参考に作るものイメージ出来たらまた考えます。
この辺の話,googleで調べてカタマリで(そしてMakoron氏発言で)ヒットするんですが,
行ってみたら工事中になってたんですよね 笑
新谷さん頑張ってください!
辻さん:コメントありがとうございます~
さっそく日本語版ダウンロードしてみました。
やっぱり日本語だと見やすいです。
2008バージョンなんですが,TopLevelオブジェクトがSldWorksとなっていて,
2015ではISldWorksに変わっている?のかな?
何個か前のレスで書いたYoutubeのコードはSldWorks.TaskpaneViewというプロパティが
未定義のエラーが出てしまうんですが2008バージョンのヘルプにはこれ乗ってました。
しかしSldWorksオブジェクト自体にはエラー出てないんですよね。
VBAマクロにするのはどうなんでしょう
単純に楽な方法という感じでexeにしてます(^^;)
■dll(アドイン)だと...
コマンドアイコンやメニューなどの部分まで作りこまなければいけないからめんどう。
アドインでプロパティマネージャに表示されるタイプだと、コントロールの種類がSOLIDWORKSのコントロールに限定されてしまうからヤダ。
■VBAマクロだと...
VB6ベースのコーディングルールとUIなので使いにくい。(DotNet環境が楽)
VBAのコントロールも微妙です。DotNetならWin7の見た目を気にしなくていい。
(VSTAもあるけど、無くなるとかの話も聞いたことあるから微妙)
という単純な消去法でVisual Bacic 2010 Expressで作っているだけです。
それぞれメリット、デメリットがあるから作りたいものに合わせて選択したらいいと思います。
西田さんAPIデビューおめでとうございます。頑張っていいの作って下さい!
私はSWのマクロメニューから起動できるVisual Studioしか使っていないので、Express版などはダウンロードしてないです。
アドインに仕込むのでなければ、山本さんがおっしゃるようにテンプレートも要らないので普通にマクロツールは作れますよ。
また、西田さんのように英語に堪能なら不要かもしれませんが、2008年版までならヘルプの日本語版もあります。
私は基本的なところは日本語版で調べて、最新情報を英語版で確認しながらやってます。
日本語版は、SWジャパンのサイトで、サポート>テクニカルサポート>API>ナレッジベースでログインし、左のメニューのAPI HELPダウンロード にあります。
ご参考まで。
ちなみにexeを使うのはなぜですか?dllは配布の問題かな。
VBAマクロにするのはどうなんでしょう
『SOLIDWORKSのテンプレート使わずに』
なるほど。
ぼくもちょっと,理解できてなさすぎるので,いっこずつ書いていったほうがいいかな~
Visual StudioではなくてVisual Bacic 2010 Express 使ってます!(どちらでも同じですね。)
手打ちというのは、『SOLIDWORKSのテンプレート使わずに』という表現の方がただしいですね。
アドインを作るときは『クラスライブラリ(DLL)』のテンプレートで作成してた様な気がします。(かなり昔)
もしかすると最近は『SOLIDWORKSのテンプレート』で無いと作成し辛いかもしれません。
自分は『Windowsフォームアプリケーション(exe)』ばかり作っているので微妙な回答になっちゃいます(^^;)