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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: SDM1.0ライブラリ 前のトピック 次のトピック
ページ: [1] 2 Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: SDM1.0ライブラリ  (閲覧数 12323 回)
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
SDM1.0ライブラリ
« 投稿日: 2004/07/13 - 09:27:51 »
引用して返信

こんにちわ。
「使用先の検索」トピックで、makoronさんとtamaさんにsdm1.0ライブラリの存在を教えてもらいました。
このライブラリを使うと、SolidWorksを起動せずに、あれこれでき、動きが速いようなので、少し勉強してみようと思います
とりあえず、昨日makoronさんの作られたマクロから、みようみまねで、部品表の機能を作ってみました。
ダウンロードエリアのエクセルVBAプログラムのところにアップして頂きましたので、よかったら試してみてください。内容は5行程度です
sdmHederWalk.getReferenceNameでは、部品の抑制状態が見分けられないみたいなので、このままではアセンブリにどんな部品が入っているのか、アセンブリを開くより速くわかるくらいしか用途がないですが、できればもうちょっとがんばって機能を追加していこうと思います。
議長に報告する   記録済み
hiropon
Sr. メンバー
****

オフライン

投稿: 84



I'm a llama!

プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #1 投稿日: 2004/07/13 - 15:24:06 »
引用して返信

y-nakatsukaさん みなさん
こんにちはhiroponです
早速ダウンロードさせて頂きました
ありがとうございました。
SolidWorksを起動させずにこんなことができるなんて
すごいですね SDMLibってーー
他にもいろいろ クラスやメンバ関数があるみたいですね。
以前、Makoronさんに教えてもらったんですが、
なにせHelp(Reference)がないので・・・・
私も時間をみつけてSDMLib解析していこうと思います。。。

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

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #2 投稿日: 2004/07/14 - 13:40:15 »
引用して返信

hiroponさんこんにちわ。
ちゃんと動きました??んですね。
他の環境でまったく何も試していないもので。申し訳ございません

以前にもsdmlibの話題は出ていたのですね。
全くついていけていませんでした

ところで、今回sdm関係で分かったことを、自分のメモがてらこのトピックに追記していこうと思います。
将来的に、reference的なものになっていけばなあ、と思います。(挫折可能性大)
無論、referenceが発行されれば一番よいのですが。

私はあまりプログラムのことはよくわかってなく、間違ってることを多々記入してしまうと思うので、もしよろしければバシバシ訂正していただければ幸いです。
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #3 投稿日: 2004/07/14 - 13:53:29 »
引用して返信

SDMLib = sdm 1.0 Type Library

ソリッドワークスを起動せずに、ソリッドワークス関連のファイルの内部の情報を利用することができる一連の命令の集まり。

SDMLibは、ソリッドワークスをインストールするのと同時にPCにインストールされる。
(インストールフォルダ内の「sdm.dll」)
よって、ソリッドワークスがインストールされていない(sdm.dllがない)PCでは、SDM関係の命令が入ったプログラムは使えない??

VB6.0(私の環境)で使用するには、
(1)VBの「ツール」→「参照設定」から「sdm 1.0 Type Library」にチェックを入れる。
(2)その後は「F2」ボタンを押せば、命令の一覧表が見れる。(正確には「クラス」とか「メンバ」)
(3)あとはプログラムの中で使っていく。

ただし、Helpが無いため、F2ボタンを押した時の命令の一覧表から機能を類推していく必要がある。
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #4 投稿日: 2004/07/14 - 14:03:30 »
引用して返信

「sdmHeaderWalk.loadHeader」

Sub loadHeader(fileName As String)

fileName As Stringの部分にファイルのフルパスを入れると、そのファイルのヘッダー部分が、sdmHeaderWalkのオブジェクトに取り込まれる。
以後、そのファイルに対して、getReferenceNameやReferenceCountが使えるようになる。

sdmHeaderとsdmHeaderWalkの違いは現状よくわかりません
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #5 投稿日: 2004/07/14 - 17:59:19 »
引用して返信

sdmHeaderとsdmHeaderWalkの違いについて
(y-nakatsukaさんと同じで、今わかっている範囲ですけど...。)

sdmHeaderオブジェクトのgetReferenceNameは、「そのファイルに直接構成されているファイルのみが取得できます。」

対して、sdmHeaderWalkのオブジェクトのgetReferenceNameは、「そのファイルに使用されている全てのファイルが取得できます。」
(ゴメンなさい、言葉で説明するのが難しい 
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #6 投稿日: 2004/07/14 - 18:07:37 »
引用して返信

makoronさんお返事ありがとうございます!

あるアセンブリファイルに対し、実行した場合、

・sdmHeaderwalkだと「サブアセンブリの中身」まで取得できる
・sdmHeaderだと、アセンブリの直下のファイルまで

という解釈で大体あってますか?
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #7 投稿日: 2004/07/14 - 18:19:51 »
引用して返信

'
引用元: y-nakatsuka 投稿日 '.timeformat('1089796057').'   
'makoronさんお返事ありがとうございます!

あるアセンブリファイルに対し、実行した場合、

・sdmHeaderwalkだと「サブアセンブリの中身」まで取得できる
・sdmHeaderだと、アセンブリの直下のファイルまで

という解釈で大体あってますか?


そういうことです!
(断言しちゃって良いのかわかりませんが...)
私が確認できていることとしては、この解釈です。

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

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #8 投稿日: 2004/07/14 - 18:28:32 »
引用して返信

納得!

すごくすっきりしました。
ということは部品表を作成するには「sdmHeaderWalk」であっていたわけですね。
ありがとうございます!
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #9 投稿日: 2004/07/14 - 18:50:24 »
引用して返信

sdmHeaderwalkやsdmHeaderで疑問があります。
(試していないだけだけど

抑制や非表示、コンフィグなどの状態で、どの様な参照を返してくるのか?

私の想像では、アセンブリに使用されていれば、抑制などは関係なしに、全て参照としていると思っているのですが、どなたか詳細を確認してみた人はいますでしょうか?
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #10 投稿日: 2004/07/14 - 19:15:37 »
引用して返信

sdmHeaderWalkの場合、getReferenceNameでも、ReferenceCountでも普通・抑制・非表示の違いは関係ないみたいです。

getReferenceNameで取得できる部品の「個数」で、3つ同じ部品があったとき、1こが抑制、1こが非表示、1こが普通、でも3つと出てきます。

ReferenceCountのほうも、全部抑制している部品もカウントに入れてきます。


sdmで、抑制状態を確認する方法がまだわかってないので、部品表として使う際にいまいちだなーと思っているところです

コンフィギュレーション関係のことでsdmHeaderを使うとtamaさんがおっしゃっていたので、sdmHeaderのほうでいろいろできるのかもしれませんね。
議長に報告する   記録済み
tkinu
Sr. メンバー
****

オフライン

投稿: 141





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #11 投稿日: 2004/07/14 - 19:53:04 »
引用して返信

y-nakatsukaさん、Makoronさん
こんにちわ。

私が使ってみた限りでは、
sdmHeaderにgetConfigNameとかgetConfigPropertyとかありますが、
これはsdmHeaderのオブジェクトに設定した、アセンブリのコンフィギュレーションの
情報を取得する為のもののようです。

使い方間違っているかもしれませんが・・・。

Makoronさんが言うように、アセンブリの構成部品が取得できたなら、その表示
状態やコンフィギュレーションの状態を取得できるものがあってもいいような・・・。
何かあるのかな?
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #12 投稿日: 2004/07/15 - 18:20:07 »
引用して返信

tkinuさんこんにちわ。
情報ありがとうございます

sdmHeader関連では、今のところ

「incontextref」

がついた命令は、どうも「アセンブリ前後関係(更新フォルダ)」のカウントをするもののようで、弊社ではあまり使わなさそう。

ということが何とかわかりました
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #13 投稿日: 2004/07/15 - 18:31:24 »
引用して返信

「sdmHeaderWalk.ReferenceCount」

sdmHeaderWalkオブジェクト内にloadHeaderによって取り込まれたファイルが持つ、「参照先」の個数を返します。

sdmHeaderWalkのReferenceCountは、sdmHeaderの場合と違い、取り込まれたファイルが「アセンブリファイル」であった場合、サブアセンブリの中身も「参照先」としてカウントされます。

ちなみに、別々のサブアセンブリに同じ部品ファイルが入っていた場合、同じ部品ファイルでも「別々に」カウントされます。よって、アセンブリファイルを開いて、「参照先検索」した場合と、個数がことなる場合があります。

参照先が「部品」であろうと「アセンブリ」であろうと、同様に1コとしてカウントされます。
カウントされる際、抑制、非表示、コンフィギュレーションの区別はされません。
議長に報告する   記録済み
Tama
Jr. メンバー
**

オフライン

投稿: 12



I'm a llama!

プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #14 投稿日: 2004/07/15 - 21:12:29 »
引用して返信

こんにちは〜。Tamaです。
面白そうなので、y-nakatsukaさんのReference作りに勝手にお手伝いしますね。

「smBitMap.extractBitMap2File」

Function extractBitMap2File(partFileName As String, fileName As String) As Long

サムネイル画像をファイルに保存します。
  partFileName ... SolidWorksのファイル名
  fileName ... BMPのファイル名
メソッドの実行が成功すると0、失敗すると-1を返します。

使い方
Code:

Dim objSmBitMap As SDMLib.smBitMap
Set objSmBitMap = New SDMLib.smBitMap
Dim lngResult As Long
lngResult = objSmBitMap.extractBitMap2File( _
                "C:MyPartsPart1.sldprt", _
                "C:MyPartsPart1.bmp")
Set objSmBitMap = Nothing
議長に報告する   記録済み
hiropon
Sr. メンバー
****

オフライン

投稿: 84



I'm a llama!

プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #15 投稿日: 2004/07/16 - 13:08:00 »
引用して返信

みなさん こんにちは
hiroponです

y-nakatsukaさん遅ればせながら動作しましたよーー
でも、やはりネックになっているのはConfiglationですねー。
tkinuさんも書かれていますが、

sdmHeaderにgetConfigNameとかgetConfigPropertyが
あるので私の予想ですが、

sdmHeader.loadheader(目的ファイルパス)

sdmHeaderに目的ファイルパスを設定してその後

sdmHeader.getConfigNameやsdmHeader.getConfigProperty

とやって、返り値でコンフィグレーション名をGetするのではないでしょうか?
ということは

Call sdmHeaderWalkObj.getReferenceName(i, pReferenceName, pRefExtension, pRefPath, pUserCount)  '参照先の名称と個数入手

で GetしたpRefPathを用いてsdmHeader.loadheader(pRefPath)
とすることでできる(コンフィグレーションGetできる)んじゃないでしょうか?

時間がないんで試してはいませんし、話題についていけてないので
論点がずれたことをいっているかもしれませんが
どうでしょう
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #16 投稿日: 2004/07/16 - 18:42:37 »
引用して返信

Tamaさんお返事ありがとうございます!
お手伝いしていただけるなんて、感激です

SOLIDWORKSを使わずにプレビューをファイルとして保存できるとは、かなり有用そうですね。
コードまで付けていただいているので、さっそく試してみます

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

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #17 投稿日: 2004/07/16 - 19:20:27 »
引用して返信

hiroponさんお返事ありがとうございます

動作したとのことでよかったです。sdmlibの参照先が、c/program..../solidworks2004/sdm.dllとなっているので、solidworks2003だと動かないかなーとか思ってますが、詳細はわかりません。

sdmHeaderWalkで参照先のファイルパスが取得できるので、確かにsdmHeaderでそれぞれの部品のコンフィギュレーションに何があるのかを確認することができますね

ただ、sdmHeaderでは、tkinuさんがおっしゃるように、選択した部品の持つコンフィギュレーションを取得できるだけのようなので、上位のアセンブリ(walkのほうで見たもの)がどのコンフィギュレーションを参照しているかは、やっぱりわからないかなーと
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:SDM1.0ライブラリ
« 返信 #18 投稿日: 2004/07/16 - 19:45:57 »
引用して返信

「sdmHeaderWalk.getReferenceName」

Sub getReferenceName(index As Long,pReferenceName,pRefExtension,pRefPath,pUserCount)

sdmHeaderWalkオブジェクト内にloadHeaderによって取り込まれたファイルが持つ、「参照先」のそれぞれ
(1)ファイル名
(2)拡張子名
(3)フルパス
(4)個数
を取得することができます。

indexは、各参照先の通し番号です(0からReferenceCount - 1 まであります)。

「pRefなんちゃら」のpは不勉強でよく意味がわかりません(ポインタのp?)が、とにかくここにvariant型の変数名を書いておけば、その中にindexに対応する参照先の情報が取得されます。

抑制、非表示、サブアセンブリ内の同一部品の扱いについては、ReferenceCountの項目で書いた通りです。


for文でReferenceCountの個数分、処理を繰り返すことで、全ての参照先の(1)~(4)について、情報を得ることができます。
部品表作成の仕組みはそれだけです。

これでsdmHeaderWalkとsmBitMapコンプリート!
議長に報告する   記録済み
webmaster
管理人
議長
カタマリの王様!?
*****

オフライン

投稿: 649





プロファイルを見る WWW メールアドレス
Re:SDM1.0ライブラリ
« 返信 #19 投稿日: 2004/07/16 - 19:47:11 »
引用して返信

y-nakatsukaさんおめでとう! ついに王様ですね

昔、SolidWorks Explorerがうまく起動できないトラブルがあって、色々試している中でsdm.dll をコピーしなおすと直ったことがありました。その時にsdm.dllはSW Explorer用のdllなんだなと理解したんですが、このスレッドを見てると結局sdm.dllでは基本的にはSW Explorerの機能だけしか使えないかなという感じがします。実際はどうなんでしょう
議長に報告する   記録済み

webmaster (仕事のカタマリ管理人)
ページ: [1] 2 Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: SDM1.0ライブラリ 前のトピック 次のトピック
ジャンプします: