yahiro
Jr. メンバー
オフライン
投稿: 22
|
|
SWの最小化
« 投稿日: 2008/08/25 - 17:22:24 » |
|
こんばんわ。 WinXPx64でSW2006SP4.1を使用しています。
VB.NETでプログラムを組んでいるのですが、SWを最小化することはできないでしょうか? DRAWINGにAPIで線を描いたり文字を貼り付けたりしていると、画面が固まってしまうのですが、最小化して処理をすると画面が固まらず正常に処理が終了します。
そこで、処理はじめにSWを最小化しようかと思うのですが、ヘルプを探してもそれっぽいのがないもので・・・ 最小化するのはアプリでもドキュメントでもOKです。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:SWの最小化
« 返信 #1 投稿日: 2008/08/26 - 10:04:55 » |
|
yahiroさん、お早う御座います。hisaです
最小化の回答ではないのですが、APIでのスケッチ要素追加の場合、 以下の処理を追加すると高速化出来ます。
============================== swModel.SetAddToDB True swModel.SetDisplayWhenAdded False
"スケッチ描画処理"
swModel.SetAddToDB False swModel.SetDisplayWhenAdded True ==============================
SetAddToBD:スケッチ要素をSlidWorksのデータベースに直接追加するかを設定 SetDisplayWhenAdded:要素追加に伴う表示の更新をするかを設定 となります。
以前投稿した長穴スケッチ描画マクロを参考にして頂いても良いです
ご参考まで。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:SWの最小化
« 返信 #2 投稿日: 2008/08/26 - 10:30:34 » |
|
最小化に関していろいろと調べたてみました。 SolidWorksAPIでは、それらしいのは見つからず、VB.NETから直接ウィンドウ操作する場合でもWindowsAPIを使う方法しか見つかりませんでした。しかし、yahiroさんの環境は64bitなので、WindowsAPIのあたりがどうなるかわかりません。(64bitは使った事がないのです・・・)
「最小化して問題が発生しなくなる」と言う状況から、「画面描画の部分で問題が出ている」と想定して、APIでの処理時に、ModelView::EnableGraphicsUpdateを使って画面描画をしない設定にしてしまうと改善が出来るかも知れません。 (上手くいけば、最小化する必要がなくなるかもしれません。)
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:SWの最小化
« 返信 #3 投稿日: 2008/08/26 - 12:10:41 » |
|
一応、最小化についても調べてみました
Makoronさん仰るとおり、x64環境でどうなるは確認が取れないんですが、x86環境のサンプルを載せます。 Code:Private Declare Function CloseWindow Lib "user32" _ (ByVal hWnd As Long) As Long
Private Declare Function OpenIcon Lib "user32" _ (ByVal hWnd As Long) As Long
Dim swApp As SldWorks.SldWorks Dim swFrame As SldWorks.Frame Dim swhWnd As Long
Sub main()
Set swApp = CreateObject("SldWorks.Application")
Set swFrame = swApp.Frame
swhWnd = swFrame.GetHWnd
CloseWindow swhWnd
MsgBox "最小化したよ!"
OpenIcon swhWnd
MsgBox "元に戻したよ!"
End Sub |
FrameからのhWnd取得の部分は、swFrame.GetHWndx64というメソッドがあったので x64環境用のWindowHandle値が取得出来るのかもしれません。
ご参考まで。
|
|
|
|
yahiro
Jr. メンバー
オフライン
投稿: 22
|
|
Re:SWの最小化
« 返信 #4 投稿日: 2008/08/28 - 10:51:45 » |
|
回答ありがとうございました。 Makoronさんの ModelView::EnableGraphicsUpdate を組み込んだら不具合が解消しました。 この現象は32bitPCでは出ず、64bitPCのみで発生していました。
また、hisaさんの swModel.SetAddToDB True swModel.SetDisplayWhenAdded False はパターン(ModelDoc2::CreateLinearSketchStepAndRepeat)が動作しなくなるようで、採用できませんでした。
貴重な情報ありがとうございました。
|
|
|
|