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
|