仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 02:37:06
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: スケッチが表示か非表示かをGetする方法 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: スケッチが表示か非表示かを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!!

プロファイルを見る WWW
Re:スケッチが表示か非表示かをGetする方法
« 返信 #2 投稿日: 2015/01/21 - 12:03:35 »
引用して返信

hiroponさん、こんにちは

既に試されているかもしれませんが、FeatureManagerTreeの更新を無効にしてみてはどうでしょうか。

APIヘルプのサンプル、Traverse Assembly and Hide All Sketches Example をベースに、作ってみましたので参考にしてみて下さい
(ModelViewの更新も無効にしています)
 Hide_All_Sketch.lzh
議長に報告する   記録済み
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タイプの
プログラムを外部アプリで作る場合 使い物にならないと今回
思いました
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: スケッチが表示か非表示かをGetする方法 前のトピック 次のトピック
ジャンプします: