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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 線種の設定 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 線種の設定  (閲覧数 3417 回)
shamoji
Full メンバー
***

オフライン

投稿: 45



I'm a llama!

プロファイルを見る
線種の設定
« 投稿日: 2011/03/14 - 10:39:18 »
引用して返信

皆様こんにちは。
いつもお世話になってます。

DrawingDocにて、線種の設定について教えてください。

まず、マクロで図面に指定した線種でスケッチを描きたいです。

現状は、スケッチを描いた後に   

swModel.SetLineWidth 0
swModel.SetLineStyle "CONTINUOUS"

で変更しております。
この場合スケッチを描く度に線種を変更しているので無駄な時間が多く掛かってしまいます。
そこで、予め設定を変更しておいてスケッチを描きたいのですがマクロからの設定方法が分かりません。

どなたか分かる方いらっしゃいましたらご回答宜しくお願いします。
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:線種の設定
« 返信 #1 投稿日: 2011/03/14 - 20:08:31 »
引用して返信

shamojiさん、こんにちは。

APIでの処理を見つけられなかったので、レジストリ設定の場所を書きます。
(図面を操作しているときに、何も選択していない状態で、線幅や線種を変更すると
次から描くスケッチの設定が変わりますが、そのレジストリ設定の内容です。)

[HKEY_CURRENT_USER\Software\SolidWorks\SolidWorks 2009\Drawings]
"Line Color"=dword:ffffffff
"Line Width"=dword:00000009
"Line Style"="BYLAYER"

もし、マクロで処理する場合には、マクロからレジストリの値を変更してあげると
うまくいくのではないかと思います。
(試したことがないので、正しく動作するかわかりませんが・・・。)
議長に報告する   記録済み
shamoji
Full メンバー
***

オフライン

投稿: 45



I'm a llama!

プロファイルを見る
Re:線種の設定
« 返信 #2 投稿日: 2011/03/15 - 11:41:18 »
引用して返信

makoron様
ご回答有難うございます。
やはりAPIでの処理は無いのでしょうか。。

そこで早速下記レジストリを確認させて頂きました。

引用:

[HKEY_CURRENT_USERSoftwareSolidWorksSolidWorks 2009Drawings]
"Line Color"=dword:ffffffff
"Line Width"=dword:00000009
"Line Style"="BYLAYER"


そこで、SW起動中にレジストリエディタにて書き換えてみたのですが、変更内容が反映されませんでした。
確かに、線種を選びなおしてSWを終了するとレジストリに反映されました。
SW起動前にレジストリを書き換えた場合は、その変更が反映されました。

SWの設定の問題でしょうか?
因みに私の環境はSW2009 SP4.0です。

素人考えですが、結果からみるとSW実行中は、レジストリが読み込まれているメモリの値を書き換える必要があるみたいです。(想像ですが)
ですが、その方法が分かりません。
もし、分かるようでしたらご教授お願いします。
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:線種の設定
« 返信 #3 投稿日: 2011/03/16 - 09:44:28 »
引用して返信


引用:
そこで、SW起動中にレジストリエディタにて書き換えてみたのですが、変更内容が反映されませんでした。
確かに、線種を選びなおしてSWを終了するとレジストリに反映されました。
SW起動前にレジストリを書き換えた場合は、その変更が反映されました。

SWの設定の問題でしょうか?
因みに私の環境はSW2009 SP4.0です。

shamojiさん、ごめんなさい。
私が紹介した方法はマクロ内では意味がない方法でした。
レジストリはSolidWorksの起動時にのみ読込まれるので、
SolidWorks起動中にレジストリの値を変更しても何もかわりません・・・。

お役に立てないのも悲しいので、解決策がないかを調べてみました。

マクロを組んで試してみると、確かにswModel.SetLineWidth の処理は遅いですね。
早くする方法を探してみて、スケッチの処理の前に
swModelView.EnableGraphicsUpdate = False
をいれるのが一番効果がでました。
swModelDoc2.SetAddToDB(True)も速くなるのですが、
作成するスケッチに自動拘束が必要なばあいはこの設定は難しいですね。

****** 一応サンプル *****
Code:
Sub main()
    Dim swApp As SldWorks.SldWorks
    Set swApp = Application.SldWorks

    Dim swModelDoc2 As SldWorks.ModelDoc2
    Set swModelDoc2 = swApp.ActiveDoc
   
    Dim swModelView As SldWorks.ModelView
    Set swModelView = swModelDoc2.ActiveView
    swModelView.EnableGraphicsUpdate = False
    Call swModelDoc2.SetAddToDB(True)
   
    Dim i As Long
    Dim swSketchSegment(50) As SldWorks.SketchSegment
    For i = 0 To 49
        Set swSketchSegment(i) = swModelDoc2.SketchManager.CreateLine(50 / 1000, (80 + i) / 1000, 0#, 100 / 1000, (80 + i) / 1000, 0#)
        Call swModelDoc2.SetLineWidth(3)
    Next

    Call swModelDoc2.SetAddToDB(False)
    swModelView.EnableGraphicsUpdate = True

End Sub


議長に報告する   記録済み
shamoji
Full メンバー
***

オフライン

投稿: 45



I'm a llama!

プロファイルを見る
Re:線種の設定
« 返信 #4 投稿日: 2011/03/16 - 11:26:18 »
引用して返信

Makoron様
ご回答有難うございます。

早速確認してみました。

swModelView.EnableGraphicsUpdate = False
swModelView.EnableGraphicsUpdate = True

を書き加えてみたところ、かなり速くなりました。
一つずつ表示しなくするだけでこれほど変わるとは驚きました。
ビューの数が多い重たい組図などの時はかなりの効果がありました。

swModelDoc2.SetAddToDB
は、自動拘束が必要なので今回はいじませんでした。

余談ですが、私はCallを省略してしまっておりますが、Callも記述した方が良いのでしょうか?



議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:線種の設定
« 返信 #5 投稿日: 2011/03/16 - 17:00:54 »
引用して返信


引用:
余談ですが、私はCallを省略してしまっておりますが、Callも記述した方が良いのでしょうか?

Callは記述しなくても問題ないです。
というより、ほとんどの人は記述しないと思います。

私がなぜCallを入れるかというと、
1.Callを入れない場合にメソッドと括弧の間にスペースが入ってしまい、他のメソッドと見た目が変わってしまう。
2.メソッドの戻り値を受け取りたくない場合にCallを使うことがあるので、その書き方と合わせるという意味もあります。

結局、見た目が気になってCallをつける癖がついただけです。
議長に報告する   記録済み
shamoji
Full メンバー
***

オフライン

投稿: 45



I'm a llama!

プロファイルを見る
Re:線種の設定
« 返信 #6 投稿日: 2011/03/17 - 10:47:04 »
引用して返信

Makoron様

ご回答有難うございます。

確かにCallを付けて()付の形にした方が見た感じ分かりやすいですね。

多少書ける様になってきたので、見やすさなどにも気を遣えるように頑張ってみます。

ありがとうございました。
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 線種の設定 前のトピック 次のトピック
ジャンプします: