アクティビティ

  • 福谷勇時 さんは、ブログ記事「APIに詳しい方、ご協力お願いします。」を公表しました。 68 日前
    ファイル名自動生成API
    コメント
    • 福谷勇時 59 日前

      先日の投稿ですが、困っている内容が少し違ったので、再度投稿します。

      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

      何か方法あれば、教えて下さい。
      よろしくお願いします。

    • 福谷勇時 58 日前

      解決しました。

      アセンブリパーツをパーツとして保存する場合は、部品種類ごとに作成してあるテンプレートを選択できるように
      SW標準のテンプレート選択ウィンドウ表示し選択適用できるようにしました。

      参考コード抜粋:
      Dim Ptemp As String

      'SW標準のテンプレート選択ウィンドウ表示
      Ptemp = swApp.GetDocumentTemplate(swDocPART, "", 0, 0#, 0#)

      '部品デフォルトテンプレートを選択テンプレートに設定
      boolstatus = swApp.SetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplatePart, Ptemp)

      【システムオプション】→【デフォルトテンプレート】の設定は、
      「ドキュメントのテンプレートを選択するようプロンプト表示」を選択にして下さい。
      image

    • 西田将也 56 日前

      解決しました。

      勉強になりました。情報提供ありがとうございます!

  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 68 日前
    > 「構成部品保存」のときの"swExt"は各構成部品ドキュメントのエクステンションに定義されているでしょうか? ぼくも同じ間違いしてました。 部品のModelDocExtentionからSaveAsを使うと swModel = swComp.getModelDoc2swExt =...
  • 新谷淳さんがページ「通知設定を変更するには」を作成しました。 68 日前
    コメント通知がメールとJUG-RINGのメッセージが両方届いて面倒な場合の設定がわかりにくいので解説します。 まず、下図の「設定」をクリックし、 通知機能をクリック 一番下までスクロールして、コメント通知のEmailとサイト(メッセージ)のどちらかのみチェックを入れて、保存をクリックしてください。    
  • 新谷淳さんがページ「投稿に画像を貼り付けるには」を作成しました。 68 日前
    まず、貼り付けたい画像を準備して、わかり易い場所に保存します。PNG形式でデスクトップに保存するのがおすすめです。 ファイル名はできるだけ半角英数のみを使ってください。問題ないケースも多いのですが、文字によってエラーになることがあります。 注意:...
  • 新谷淳さんがページ「SWJUG-RINGの使い方」を作成しました。 68 日前
    SW-JUGRING(このサイト)を使うときに、やり方が分かりにくいところや、知っていると便利な機能を解説します。 書き込むスペースが狭くて編集しにくい時は 投稿に画像を貼り付けるには 通知設定を変更するには
  • 辻 直樹 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 69 日前
    コードが抜粋なので定かではありませんが、 「構成部品保存」のときの"swExt"は各構成部品ドキュメントのエクステンションに定義されているでしょうか? もしアセンブリのものだと、アセンブリを部品として保存することになりそうです。 その後の「Assemblyを保存」と同じなので気になりました。   また、リネームと構成部品のSaveAsを両方行っていますが、どちらか一方で良いのではないでしょうか? リネームの場合はアセンブリ保存のSaveAsのオプションで"_SaveRefe...
  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 71 日前
    そういえばリンクしたサンプルコード最後にバグがあってそのままだとアセンブリファイルが保存されないのでご注意ください,> errors = swApp.CopyDocument(source + sourcefile, target + sourcefile, (sourcefiles), (targetfiles), copyopt)第一引数をsource + sourcefile から sourcefile...
  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 71 日前
    たしかにModelDocExtentionのSaveAsメソッドでは,参照先書き換えてくれませんね。SaveAsメソッドのリファレンス Remarksのところに, Do not use ModelDocExtension::SaveAs to copy assemblies, drawings, or parts with in-context references. Instead, use ISldWorks::CopyDocument or...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 72 日前
    よろしくお願いします。
  • 福谷勇時 さんがこのサイトに参加しました 72 日前
  • 臼井隆之 さんがこのサイトに参加しました 73 日前
  • 由本 雅治 さんがこのサイトに参加しました 76 日前
  • 野洲 拓也 さんがこのサイトに参加しました 80 日前
  • 鵜飼和三 さんがこのサイトに参加しました 82 日前
  • 辻 直樹 さんは、議題「 押し出し面の自動認識が行われない。 」に返答しました これってバグじゃないですか?グループ内 85 日前
    前回のレス、表現がおかしくて誤解を招きそうでしたね。 「輪郭が少ないとき多重を認識しない」ではなく、「輪郭が少ないとき多重だと自動で押し出し領域を決定しない」 「輪郭が多いとき多重でも認識する」ではなく、「輪郭が多いとき多重なのに自動で押し出し領域を決定してしまう」 と言った方が良さそうです。 つまり「多重の場合は明示的にユーザーが指示して下さい」というのが本来の仕様であって、あまり輪郭が多くなると判定に計算の負荷がかかるので、100ヶを境に多重であることのチェックを放棄して負荷を下げて...
  • Hirotoshi Masumizu さんは、議題「 押し出し面の自動認識が行われない。 」に返答しました これってバグじゃないですか?グループ内 86 日前
    内部で輪郭の数をチェックしているのであれば、チェックを放棄する輪郭数を変更できれば解決できるかもしれませんね。 Optionなどでそういった入力個所がないか、探してみます。 もしご存じであれば、ご教授ください。
  • 辻 直樹 さんは、議題「 押し出し面の自動認識が行われない。 」に返答しました これってバグじゃないですか?グループ内 87 日前
    この場合、「輪郭が少ないとき多重を認識しない」のをバグとするのか、「輪郭が多いとき多重でも認識する」のをバグとするのかは微妙かもしれません。 多重のスケッチを押し出す場合、独立したソリッドボディが複数できてしまうので、本来は「輪郭の選択」で明示的に指定するのがセオリーということかと思います。 フィーチャーに使うスケッチはなるべく複雑にしない方が良いということもあるので、輪郭の選択が面倒になるほどのスケッチは作らないだろうということでの101ヶなのかも知れませんね。(自動で認識するというよりも...
  • Hirotoshi Masumizu さんは、議題「 押し出し面の自動認識が行われない。 」に返答しました これってバグじゃないですか?グループ内 87 日前
    辻さん、ご返信・検証ありがとうございます。 輪郭の数が押し出し面認識の線引きとなるのですね。 輪郭の数が少ないほうが認識は簡単そうですが、多いほうができるのは不思議です。。。 輪郭の数が少ないスケッチは、手動で押し出し面を選択するしか対策がないのでしょうか。
  • 辻 直樹 さんは、議題「 押し出し面の自動認識が行われない。 」に返答しました これってバグじゃないですか?グループ内 87 日前
    Masumizuさん、面白いことに気付きましたね! へ~と思って色々試してみた所、パターンには関係なく、3重丸では33はNG,34はOK、3重の四角でも同じ、4重丸では25はNG,26でOKとなりました。 どうやら「閉じた輪郭」が101以上あると、多重になっていても自動で認識するようでした。 ということは・・・101重丸も自動で認識する?と思い試してみると、、、出来ました!
  • Hirotoshi Masumizu さんは、新しく議題「 押し出し面の自動認識が行われない。 」を追加しました。 これってバグじゃないですか?グループ内 87 日前
    三重丸のスケッチを押し出ししようとすると押し出しされる面がうまく認識されませんが、三重丸の数を増やす(50個ほど)と問題なく押し出しの面が自動で認識されます。数が多いと認識されるのになぜ数が少ないとうまくいかないのでしょうか。こちらはバグという認識でよろしいでしょうか。