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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 体積の取得 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 体積の取得  (閲覧数 4422 回)
hdyk_yamada
カタマリの王様!?
*****

オフライン

投稿: 500



NIGHTINGALE

プロファイルを見る
体積の取得
« 投稿日: 2005/12/15 - 20:24:55 »
引用して返信

お世話になります。

体積を取得し、プロパティに入れるプログラムを考えています。
前回 Descriptionに入れ方を教わったので今度は、Volumeを
作成して体積を入れようと思います。
Volumeの作成方法を入れ方は、わかったのですが、体積の取得
方法がわかりません。どなたか教えてください。
体積の単位は、cm3です。また、ボディが2個ある場合
合計で出るようにしたいのです。 よろしくお願いいたします。
議長に報告する   記録済み
y-nakatsuka
カタマリの王様!?
*****

オフライン

投稿: 187





プロファイルを見る
Re:体積の取得
« 返信 #1 投稿日: 2005/12/16 - 13:47:25 »
引用して返信

hdyk_yamadaさんこんにちわ。

マクロと関係ないし、内容はずしてるか、ご存知かもしれませんが、ご参考まで。
プロパティの「ユーザ定義」タブにある、「値へリンク」を使えば、部品ファイルの体積をプロパティとして扱えます。
(もしくはプロパティに"SW-Volume@ほにゃほにゃにゃ.SLDPRT"と記載)

cm^3の単位にはならないようです。
また、2つのソリッドが重なっているときには、重なった部分はべつべつの体積として扱われます。
議長に報告する   記録済み
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
Re:体積の取得
« 返信 #2 投稿日: 2005/12/16 - 14:13:01 »
引用して返信

こんにちは

体積の取得の方法としては、以下の方法が考えられます。

(1)ユーザー定義プロパティに値のリンクとして『体積』を指定。
 (y-nakatsukaさんが仰っている方法です)
(2)ModelDoc2もしくはBodyよりGetMasspropathiesで質量特性を取得。
 (配列として重心や質量も取得することとなります)
(3)SldWorks.GetMassProperties2で質量特性を取得。
(4)MassPropatyオブジェクトを作成し、Bodyを渡して体積(Volume)を取得。

上記は、手間がかからない順となってます。
しかし、y-nakatsukaさんが仰る通り(1)では単位がg/cm^3ではありません。
(2)は比較的簡単ですが、表示・非表示に関わらず全てのボディが対象となります。
(3)は(2)と同じような効果ですが、ファイルパス・コンフィギュレーションの指定が必要です。
(4)は、予め渡すボディだけ抽出して渡すことが出来る分柔軟性に富んでいます。

(4)に関しては、簡単なサンプルを作成したので添付します
(結果はDebug.Printで表示されています)

追記:いづれの方法もボディの重なりは判断しません。
   サンプルの変数がswBodysと変な単語になってるのは見逃して下さい…
 MassPropertys.lzh
議長に報告する   記録済み
hdyk_yamada
カタマリの王様!?
*****

オフライン

投稿: 500



NIGHTINGALE

プロファイルを見る
Re:体積の取得
« 返信 #3 投稿日: 2005/12/16 - 15:41:48 »
引用して返信

y-nakatsukaさんhisaさんありがとうございます。

(1)の方法は、思いついたのですが、
ファイルごとにcm3を設定しないと出ません。
ただ、普段使用するときはmmが基本なのでこの方法は取れませんでした。

(2)〜(4)は、試してみます。
(4)が良さそうなので、(4)で試します。

'
引用元: hisa 投稿日 '.timeformat('1134709981').'   
'
こんにちは

体積の取得の方法としては、以下の方法が考えられます。

(1)ユーザー定義プロパティに値のリンクとして『体積』を指定。
 (y-nakatsukaさんが仰っている方法です)
(2)ModelDoc2もしくはBodyよりGetMasspropathiesで質量特性を取得。
 (配列として重心や質量も取得することとなります)
(3)SldWorks.GetMassProperties2で質量特性を取得。
(4)MassPropatyオブジェクトを作成し、Bodyを渡して体積(Volume)を取得。

上記は、手間がかからない順となってます。
しかし、y-nakatsukaさんが仰る通り(1)では単位がg/cm^3ではありません。
(2)は比較的簡単ですが、表示・非表示に関わらず全てのボディが対象となります。
(3)は(2)と同じような効果ですが、ファイルパス・コンフィギュレーションの指定が必要です。
(4)は、予め渡すボディだけ抽出して渡すことが出来る分柔軟性に富んでいます。

(4)に関しては、簡単なサンプルを作成したので添付します
(結果はDebug.Printで表示されています)

追記:いづれの方法もボディの重なりは判断しません。
   サンプルの変数がswBodysと変な単語になってるのは見逃して下さい…
議長に報告する   記録済み
hdyk_yamada
カタマリの王様!?
*****

オフライン

投稿: 500



NIGHTINGALE

プロファイルを見る
Re:体積の取得
« 返信 #4 投稿日: 2005/12/16 - 15:55:33 »
引用して返信

お世話になります。
(4)は試しました。
ファイルの質量特性の単位がcmになっている時はcm3になりますが、
mmになっている時は、mm3になりますね。
質量特性の単位の判断は出来ないものでしょうか?
議長に報告する   記録済み
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
Re:体積の取得
« 返信 #5 投稿日: 2005/12/16 - 16:55:53 »
引用して返信


引用:
質量特性の単位の判断は出来ないものでしょうか?


実はドキュメントプロパティの単位取得・設定は、長さと角度しかAPIで
対応していないっぽいのです…

ですので、以下のように変更すれば対応出来ると思います。

'質量特性の単位をシステム設定(True)にするかドキュメント設定(False)とするか
swMass.UseSystemUnits = True

'ボディの配列をポインタで渡す
swMass.AddBodies (swBodys)

'質量特性のオプション設定をシステム設定とし単位換算
Debug.Print "Volume  = " & swMass.Volume * 1000000 & " cm^3"
Debug.Print "Density = " & swMass.Density / 1000 & " g/cm^3"
Debug.Print "Mass    = " & swMass.Mass * 1000 & " g"

swMass.UseSystemUnitsをTrueにすることでシステムの設定(m,rad,kg)を
常に使用します。(ヘルプにはgとありましたがどうやらkgっぽいです)
ちなみに、デフォルト値はTrueなのでこの行は省いても構いません。
サンプルとして載せてみましたが余計でしたね

あとは、結果から希望の単位にするように手を加えればいけると思います
議長に報告する   記録済み
hdyk_yamada
カタマリの王様!?
*****

オフライン

投稿: 500



NIGHTINGALE

プロファイルを見る
Re:体積の取得
« 返信 #6 投稿日: 2005/12/20 - 13:39:19 »
引用して返信

ありがとうございました。
よく見ればわかりましたね。済みませんでした。
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 体積の取得 前のトピック 次のトピック
ジャンプします: