先日の投稿ですが、困っている内容が少し違ったので、再度投稿します。
AssemblyファイルをPartsとして保存するときに「オプション」設定のデフォルトテンプレート(部品)が
適用されますが、これを指定して適用したい方法が不明です。
SW標準保存であれば、テンプレート選択ウィンドウが表示され選択可能なので、マクロ記録し試しましたが、
NewDocumentで指定した部品ファイルは開くが、モデルが保存されないです。
【SW標準保存記録コードAssemblyファイルをPartsとして保存】
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swSaveAssemblyAsPartOptions, swSaveAsmAsPartOptions_e.swSaveAsmAsPart_AllComponents)
' New Document
Dim swSheetWidth As Double
swSheetWidth = 0
Dim swSheetHeight As Double
swSheetHeight = 0
Set Part = swApp.NewDocument("指定テンプレート.prtdot", 0, swSheetWidth, swSheetHeight)
Dim swPart As PartDoc
Set swPart = Part
swApp.ActivateDoc2 "Part1", False, longstatus
"Part1"は、NewDocument実行した時点で、自動で割付され部品用指定テンプレートが開くが、
SW終了するまで、NewDocument実行するたび番号積算されるので、何番になるか毎回番号が
変わるので、実際は指定ができない。次番号が何番になるか確認し数字入れてはみましたが、
NewDocumentで開いた部品ファイルに保存されません。
Set Part = swApp.ActiveDoc
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameLeft = 0
myModelView.FrameTop = 0
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
swApp.ActivateDoc2 "テスト用Assemblyモデル.SLDASM", False, longstatus
Set Part = swApp.ActiveDoc
' Save As
longstatus = Part.SaveAs3("ファイルパス.SLDPRT", 0, 2)
End Sub
何か方法あれば、教えて下さい。
よろしくお願いします。
解決しました。
アセンブリパーツをパーツとして保存する場合は、部品種類ごとに作成してあるテンプレートを選択できるように
SW標準のテンプレート選択ウィンドウ表示し選択適用できるようにしました。
参考コード抜粋:
Dim Ptemp As String
'SW標準のテンプレート選択ウィンドウ表示
Ptemp = swApp.GetDocumentTemplate(swDocPART, "", 0, 0#, 0#)
'部品デフォルトテンプレートを選択テンプレートに設定
boolstatus = swApp.SetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplatePart, Ptemp)
【システムオプション】→【デフォルトテンプレート】の設定は、
「ドキュメントのテンプレートを選択するようプロンプト表示」を選択にして下さい。