



Random Thoughts |
I used to work in an orange juice factory, until I got canned. Yeah, they put the squeeze on me, said I couldn't concentrate. You know, same old boring rind over and over again.
|

言語 |
|




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

著者
|
トピック: 関係式について (閲覧数 4202 回) |
|
judas
新人さん 
オフライン
投稿: 4

I'm a llama!
|
 |
関係式について
« 投稿日: 2010/06/10 - 08:16:06 » |
|
皆さん、はじめまして、よろしくお願いします。 APIについてはまったくの素人です。 他の部署から回ってきたテンプレートの中身をみてたら、これは使える!と思いました。
アセンブリファイルの中にパーツ間でいくつかの関係式を持たせてあります。 エクセルファイルから各パーツの修正したい寸法を読み込んでリモデリングしたいと考えています。 しかし、修正したい寸法は確かに更新されるのですが、関係式が!マークになってしまい イメージと違ったモデルになってしまいます。 尚、このアセンブリは各パーツの原点を合わせて作成し、原点あわせを行ってアセンブリしたので 合致はありません。
アセンブリの中の関係式をどのようにAPIで処理するべきか教えていただきませんか。 どなたかよろしくお願いします。
|
|
|
|
Makoron
カタマリの王様!?     
オフライン
投稿: 1277

SW2011SP5.0
|
 |
Re:関係式について
« 返信 #1 投稿日: 2010/06/10 - 08:47:25 » |
|
judasさん、はじめまして。
judasさんが書かれた内容を何度も読み返してみたのですが、わからない点が幾つかあります。 1.APIの処理は、マクロ?エクセル?のどちらで処理しますか? 2.APIの処理は、構成部品自身の寸法を変更?それとも関係式の数値を変更? 3.寸法が正しく更新されているとの事ですが、手動でその寸法変更を行ったときには!マークが表示されないのでしょうか?
あと、可能な範囲で、プログラムソースや関係式の内容、アセンブリイメージなど サンプルでもいいと思うので、添付などしていただけると理解しやすいです。
|
|
|
|
judas
新人さん 
オフライン
投稿: 4

I'm a llama!
|
 |
Re:関係式について
« 返信 #2 投稿日: 2010/06/10 - 14:22:01 » |
|
Makoronさん、こんにちは。 ご覧いただき、ありがとうございました。 素人のゆえに焦って書いてしまいました。
適切なお答になるとは分かりませんが、 分かる範囲で回答しますので、よろしくお願いします。
>1.APIの処理は、マクロ?エクセル?のどちらで処理しますか? →エクセルです >2.APIの処理は、構成部品自身の寸法を変更?それとも関係式の数値を変更? →構成部品自身の寸法を変更する事です。 >3.寸法が正しく更新されているとの事ですが、手動でその寸法変更を行ったときには!マークが表示されないのでしょうか? →Solid_Worksでは寸法の変更後、再構築すれば関係式が保たれた状態で問題なく更新できます。
下記の添付ファイルは、エクセルのVBAです。 D4〜D8間に5つの変更させたい寸法があり、VBAの実行で Solid_Worksが立ち上がり、寸法の変更を行います。
分かりにくい説明だと思いますが、アドバイスお願いします。 以上
|
|
|
|
judas
新人さん 
オフライン
投稿: 4

I'm a llama!
|
 |
Re:関係式について
« 返信 #3 投稿日: 2010/06/11 - 15:18:57 » |
|
すみません。 聞いた話だと64bitではトラブルが多いとの事ですが、自分のシステムについて 書き忘れてました。 OS:XP Professional X64 SP2 Solid_Works:2009 X64 Editon SP0.0 それでは、よろしくお願いします。
|
|
|
|
Makoron
カタマリの王様!?     
オフライン
投稿: 1277

SW2011SP5.0
|
 |
Re:関係式について
« 返信 #4 投稿日: 2010/06/15 - 09:07:52 » |
|
judasさん、返事が遅れました。
添付頂いたファイルの内容を確認して、サンプル環境を作って試してみましたが、 あくまでもサンプルデータでのテストだったので、judasさんの問題は発生しませんでした。
でも、幾つか問題の可能性がありそうなところがあったので、その辺りを書いてみます。
見せていただいたソースの中では、『boolstatus = Part.EditRebuild3()』が何箇所かに入っています。 また、前回の回答の中に『寸法の変更後、再構築すれば関係式が保たれた状態・・・』とあります。 もしかすると、各パーツの寸法変更後にPart.EditRebuild3()が実行されていますが、 その都度、関係式の更新が入り、計算が出来なくなっているような気がします。 (説明がうまく伝わらない様な気が・・・)
そこで、 『各寸法変更後のPart.EditRebuild3()をやめる』と 『一番最後に Part.ForceRebuild3(False) を入れる』 と言うことで解決できないでしょうか? (ちなみに、Part.EditRebuild3()何箇所も入っていると、その分時間もかかると思います。)
---------- 少しだけ直してみました ---------- Sub Register_API() Const RefFile As String = "C:Program FilesSolidWorks CorpSolidWorkssldworks.tlb" ' ActiveWorkbook.VBProject.References.AddFromFile RefFile
Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object Dim Component As Object
Dim Changed_dimension As Object
Set swApp = CreateObject("SldWorks.Application") swApp.Visible = True Set Part = swApp.OpenDoc6("E:Template_0609.SLDASM", 2, 0, "", longstatus, longwarnings)
boolstatus = Part.Extension.SelectByID2("Solder-1@Template_0609", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set Changed_dimension = Part.Parameter("D6@スケッチ1@Solder.Part") Changed_dimension.SystemValue = Range("D4").Value / 1000 '電極下部のはんだ高さを修正
boolstatus = Part.Extension.SelectByID2("Solder-1@Template_0609", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set Changed_dimension = Part.Parameter("D3@スケッチ1@Solder.Part") Changed_dimension.SystemValue = Range("D5").Value / 1000 'パッド長さ(フィレット)を修正
boolstatus = Part.Extension.SelectByID2("Solder-1@Template_0609", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set Changed_dimension = Part.Parameter("D4@スケッチ1@Solder.Part") Changed_dimension.SystemValue = Range("D6").Value / 1000 'パッド長さ(部品下)を修正
boolstatus = Part.Extension.SelectByID2("Ceramic-1@Template_0609", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set Changed_dimension = Part.Parameter("Ceramic_L@スケッチ1@Ceramic.Part") Changed_dimension.SystemValue = Range("D7").Value / 1000 '部品本体のLを修正
boolstatus = Part.Extension.SelectByID2("Ceramic-1@Template_0609", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Set Changed_dimension = Part.Parameter("Ceramic_H@スケッチ1@Ceramic.Part") Changed_dimension.SystemValue = Range("D8").Value / 1000 '部品本体のHを修正
Part.ClearSelection2 True boolstatus = Part.ForceRebuild3(False)
MsgBox "Changes Complete"
End Sub
|
|
|
|
judas
新人さん 
オフライン
投稿: 4

I'm a llama!
|
 |
Re:関係式について
« 返信 #5 投稿日: 2010/06/16 - 08:41:23 » |
|
makoronさん
ご返事ありがとうございます。 まず現状の説明しますと、64-bitをやめて32-bitに戻しました。 32-bitでは、問題となった関係式(値のところが赤い”!”マークとなる)が正常に計算されました。 ということで原因は分かりませんが、64-bit環境が良くないようです。 アドバイスしていただきました、「再構築は最後に1回のみ」は参考になりました。 どうもありがとうございました 。 今度もまたお邪魔させてください。
以上
|
|
|
|
|
|
|

|