Random Thoughts |
Beat the 5 o'clock rush, leave work at noon!
|
言語 |
|
|
|
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 02:37:06 |
|
|
|
著者
|
トピック: スケッチが表示か非表示かをGetする方法 (閲覧数 2223 回) |
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
スケッチが表示か非表示かをGetする方法
« 投稿日: 2015/01/18 - 20:08:23 » |
|
お久しぶりです hiroponです 昔作ったマクロを改造しています 以前 アセンブリ中(子供である部品ファイルも含めて)で 表示状態になっているスケッチ を全て非表示にする マクロ を作成したのですが、IFeature オブジェクトで全てのスケッチ を選択して、最後に IModelDoc オブジェクトのBlankSketch メソッドで非表示にするような仕様になっており 部品点数が増えると ひじょーーーーに 遅くなってしまいます
表示されているスケッチだけを選択するようなものに変更すれば 速度がかなり改善できるのでは と思っており タイトルのように スケッチが表示状態か 非表示状態かを ゲットする 方法を知りたいのですが どなたかご存知のかた いらっしゃいますでしょうか?
ちなみに それらしいメソッドで IFeatureオブジェクトの ・GetUIState ・IsHiddenLock を試したのですが うまくいきませんでした
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:スケッチが表示か非表示かをGetする方法
« 返信 #1 投稿日: 2015/01/18 - 20:53:39 » |
|
書いておいてすぐ 自己解決ですみません IFeatureのVisible プロパティでできました
まぁ でもこれでも時間がかかりますねぇ もっと高速にできるやりかた ないかなぁ
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:スケッチが表示か非表示かをGetする方法
« 返信 #2 投稿日: 2015/01/21 - 12:03:35 » |
|
hiroponさん、こんにちは
既に試されているかもしれませんが、FeatureManagerTreeの更新を無効にしてみてはどうでしょうか。
APIヘルプのサンプル、Traverse Assembly and Hide All Sketches Example をベースに、作ってみましたので参考にしてみて下さい (ModelViewの更新も無効にしています)
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:スケッチが表示か非表示かをGetする方法
« 返信 #3 投稿日: 2015/01/24 - 09:41:44 » |
|
hisaさん こんにちは
返信 サンプル ありがとうございます
hisaさんのサンプルで動かしてびっくり 私ので1分以上かかるのが 3秒で終わってしました
喜んだのも束の間 質問のときに書いていなかったので申し訳なかったのですが 開発環境は 諸事情がありまして VB.NETで作っていまして そちらに移植した途端 速度は同じになってしまいました
この時点で Solidworks上のVBA と VB.NETでは サンプルでいうTraverse タイプのChildrenをどんどん読み込んでいくタイプのプログラム 速度が SolidworksVBA が高速であることがわかりました。 ちなみに ExcelVBAで作成しても VB.NETと同じ現象に陥りま した。
ダメかー と思ったのですが 何かあるはずと思い色々調べて いると こんなものを見つけました http://help.solidworks.com/2014/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISldWorks~CommandInProgress.html
ISldWorks の CommandInProgressプロパティ ヘルプにはちゃんと 書いてあって Improves performance of out-of-process applications by informing SolidWorks that a sequence of API calls will be made by the out-of-process application.
これをTrueにすると 速度が改善されました(もしかして知らないの私だけ?? )
これと hisaさんアイデアの FeatureManagerTreeの更新無効 ModelViewの更新無効 で使えるレベルに速度が改善することができました hisaさん本当にありがとうございます。
CommandInProgressプロパティを使わないと Traverseタイプの プログラムを外部アプリで作る場合 使い物にならないと今回 思いました
|
|
|
|
|
|
|
|