dunga77
Guest
こんにちは、このパラメータを extrapolate できるかどうか知っていますか?
パブリックサブ get_globalmoi_ofparts_in_this_assy()
'デスクトップパス
デスクトップパスを文字列として
デスクトップパス = gettop 'getdesktop 関数を使用するパスを取得する
'レコードのテキストファイルに書き込む
文字列として filepath を dim
filepath = デスクトップパスと "\getprops.txt"
出力用のオープンファイルパス#1
'アセンブリ ドキュメントの定義
dim oassemblydoc アセンブリドキュメント
oassemblydoc = thisapplication.activedocument を設定する
'set コンポーネント定義
dim ocompdef アセンブリcomponentdefinition
set ocompdef = oassemblydoc.componentdefinition 'this は、私たちが取り組んでいる全体的なアセンブリです
'使用リストを作成する
dim newoccurrencelist 新しいコレクションとして
アセンブリのサブパートの合計#を'get
dim totsubpartoccurence として 整数
totsubpartoccurences = ocompdef.occurrences.count
'各サブ部分を発症リストに追加する
dim の subpartcount として integer
サブパートの = 1 から totsubpartoccurences
各サブパートの
ocompdef.occurrences.item (subpartcount).definitiondocumenttype = kpartdocumentobject なら、
newoccurrencelist.add ocompdef.occurrences.item(サブパート) 'リストに追加
端 もし
次へ
'ヘルパー
dim lbstokg として倍: lbstokg = 0.453592
dim okgtolbs を倍増: okgtolbs = 2.20462
dim の inchtocm を倍増して下さい: inchtocm = 2.54
dim ocmtoin として 倍: ocmtoin = 0.393701
'宣言希望するプロパティ
二重として容積を薄暗くして下さい
dim の倍として固まり
'トップレベルの部品
dim momentsxyz(5) をダブル 'xyz それについての参照軸線の瞬間
dim momentsxyzglobal(5) をダブル ' グローバルに計算する
dim momentsofprince(2) としてダブル ' i1,i2,i3 プラニステラ軸について
'cg プレースホルダー
dimのpartcgxは倍として
dim partcgy として ダブル
dim partcgz として ダブル
dim omassprops として massproperties
'for ループ
dim i は整数者として
ディム j として 整数
'アセンブリや他の発生を介してiterate リスト内の部品
dim は整数として発生します
'リストに現在の部分を 'get し、次の操作を行います。
newoccurrencelist に 1 件を発行します。 カウント '最初の発症で始まります
componentoccurrenceとしてthisoccを薄暗くして下さい
set thisocc = newoccurrencelist.item(count)
'this は、partdoc として定義されています。
このoccpardef をpartdocument として dim
set thisoccpardef = thisocc.definition.document
'part docs コンポーネント def
componentdefinition として thisocccompdef を実行する
set thisocccompdef = thisoccpardef.componentdefinition
'部品名
部分名を文字列として区切る:partname = thisocc.name
'get これらのプロパティ
ボリューム = thisocc.massproperties.volume
質量 = thisocc.massproperties.mass
partcgx = thisocc.massproperties.centerofmass.x
partcgy = thisocc.massproperties.centerofmass.y
partcgz = thisocc.massproperties.centerofmass.z
'define 質量 props で moi 関数を使う
omassprops = thisocc.massproperties を設定する
'大量プロパティの結果がすでに高い精度で利用できるかどうかをチェックする
'またはより良い。 もしそうなら、単に結果をプリントアウトするなど、キャッシュしないフラグを設定します。
ドキュメントの「結果」
もし omassprops.availableaccuracy <> k_high と _
omassprops.availableaccuracy <> k_veryhigh その後
' 精度を高く設定します。
omassprops.accuracy = k_high
'set cacheresultsoncompute プロパティを false に設定して、結果が保存されていない
「文書と文書が「死」ではないので。
omassprops.cacheresultsoncompute = 偽
端 もし
「質量モイ関数を呼び出します
omassprops.xyzmomentsofinertia(momentsxyz(0)、currentsxyz(1)、currentsxyz(2)、currentsxyz(3)、currentsxyz(4)、currentsxyz(5)
'主moi関数を呼び出します
omassprops.principalmomentsofinertia(momentsofprince(0)、currentsofprince(1)、currentsofprince(2))
「グローバル・モイの計算」
'parallel 軸線理論
'i'(x',y',z') = i(xc,yc,zc) + md^2
'i'x',y',z' = モイ・ゴバル
'ixc,yc,zc = ローカルのセントロイドのmoi
'm = 質量
'd = cg と iglobal の ref 点間の通常の距離 ( 3d d = sqr(d1^2 + d2^2) )
'xxx の
whilesxyzglobal(0) = timesxyz(0) + マス * math.sqr(partcgy ^) 2 +partcgz ^ 2) ^ 2
イイイイ
whilesxyzglobal(1) = モーメントxyz(1) + マス * math.sqr(partcgx ^ 2 + パートcgz ^ 2) ^ 2
ツイート
whilesxyzglobal(2) = モーメントxyz(2) + マス * math.sqr(partcgx ^ 2 + パートキー ^ 2) ^ 2
'parallel の軸線のtheoremは全体的なプロダクトmoisのために
'i'(xy',yz',xz') = i(xyc,yzc,xzc) + m*ci*cj
'i'xz',yz',xz' = moi製品gobal
'ixyc,yzc,xzc = ローカルのセントロイドのmoi
'm = 質量
'ci = x,y,zグローバルcg座標
'cj = x,y,z グローバル cg 座標
'xy - ナ
whilesxyzglobal(3) = -(momentsxyz(3) + 質量 * partcgx * partcgy) ' "-" ipropネガティブ
'iyz - ナ
whilesxyzglobal(4) = -(momentsxyz(4) + 質量 * partcgz) ' "-" ipropネガティブ
'ixz - ナ
whilesxyzglobal(5) = -(momentsxyz(5) + 質量 * partcgx * partcgz) ' "-" iprop マイナスインテグラルタル
'moi'sを使用可能な単位に変換する
i = 0から5まで
whilesxyzglobal(i) = thisoccpardef.unitsofmeasure.convertunits(momentsxyzglobal(i), "kg cm^2", "lbmas in^2")
次へ
j = 0 から 2
モーメントオブプライアンス(j) = thisoccpardef.unitsofmeasure.convertunits(momentsofprince(j), "kg cm^2", "lbmas in^2")
次へ
'txt ファイルに書き込む
#1, "part: "&partname" を書く
& "vol(in^3): "&"&"&"&"&"&"&"&"&"vol(in^3&"、"&"_
& " 質量:" & 質量 / lbstokg _
& "xx: ""sxyzglobal(0)_
& " iyy: "&モーメントxyzglobal(1)_
「&モーメントxyzglobal(2)」
& "princ1: "&モーメントオブプライアンス(0) _
& "princ2: "&モーメントオブプライアンス(1)_
& "prince3: "&モーメントオブプライアンス(2) _
& "材料: "&thisocccompdef.material.name _
& vbnewlineの
' & " ixy: " & timesxyzglobal(3) _
' & " iyz: "&モーメントxyzglobal(4) _
' & " ixz: "&モーメントxyzglobal(5) _
次へ '次の発生例 アセンブリリストの一部
'テキストファイルを閉じる
クローズ 1
msgbox(「部分の支柱を得ている」)
エンドサブ
文字列として関数 getdesktop()
dim owshshell オブジェクトとして
owshshell = createobject("wscript.shell") を設定する
getdesktop = owshshell.specialfolders("デスクトップ")
owshshell = 何も設定しない
エンド機能
正確に言うことはできません。 決してやっていなかった。こんにちは、私はこの古い投稿とコードとのあなたの答えを参照してください。 ここで、このコードが情報を持つ発明者にどのように入力されるべきか? お問い合わせ