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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 関係式について 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 関係式について  (閲覧数 3965 回)
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が立ち上がり、寸法の変更を行います。

分かりにくい説明だと思いますが、アドバイスお願いします。
以上
 問合せ内容.txt
議長に報告する   記録済み
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回のみ」は参考になりました。
どうもありがとうございました
今度もまたお邪魔させてください。

以上
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 関係式について 前のトピック 次のトピック
ジャンプします: