アクティビティ

  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1778 日前
    また困りました。 AssemblyファイルをPartsとして保存するときに作成済みの部品用プロパティテンプレートを適用したいのですが、方法がわかりません。今は勝手に違う部品用テンプレートが適用されてしまいます。 保存時に指定プロパティテンプレートを適用する方法を教えて下さい。よろしくお願いします。
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1779 日前
    追記します。swComp.Name2で取得した構成部品名には、必ず末尾に子NO,がついてしまいますが、不要につきInStrRevで末尾から”ー”位置取得しMidにて取得した文字位置から文字列取得、Replaceで末尾”ー”以降を置換え(削除)するようにしました。  '現在の構成部品名を読み込み  Dim OldName As String  OldName = swComp.Name2   ...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1779 日前
    重箱の隅つつかれるとダダ漏れしますよ(笑)連休明けフル回転で煙もでてますが。。 Instrやっと理解できました。今回のように詳しく教えて頂かないと、すぐパンクするので手取り足取りで説明お願いします(笑)たしかにこの方法であれば、Nextで回してるので、つけたいプレフィックス名で判断がつくことになります。 If InStr(取得名, プレフィックス名) = 0...
  • 辻 直樹 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1783 日前
    InStrでの判定、これもうまく伝わっていないようですね。というかマクロを実行したときの挙動を把握出来ていないのかも知れません。(.AddPrefix専用コード?<-その話ではないです、これは私も初耳(目?)) STEP BY...
  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1783 日前
    ぼくも重箱の隅を・・ > PathName = Right(PathName, 1) 11個以上同じファイルがあるとだぶりそうです。ちなみにぼくはファイル名を配列に入れて逐一チェックしようかとイメージしてたのでそれよりはマシですね(笑) > 【設備ハンディボックス用カールコード】設計に必要アルかナシかで言えば、ナシ 見てわかりやすいのはいろいろ気づくきっかけになるので大事だと思いますよ!色もつけましょう!笑
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1783 日前
    理解しましたよ。 <>番号1のインスタンスを削除・・確かにレアケースではありますが、無くはないですね。さて、どうしましょう?少し考えます。明日からの3連休で記憶から消す可能性もありますが・・(笑)アップサンプル画像の【元データ構成】から、同名参照部品が何個あるか見分ける何かいい方法あれば、教えて頂けると助かります。 プレフィックスに関しては、表現が悪かったですね。.AddPrefix専用コード?で接頭につけていないです。単純に取得した名前の先頭に4桁の設備NO,&"_"をつけただ...
  • 辻 直樹 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1783 日前
    うまく伝えられなかったですかね。 一度構成部品を複数挿入・配置したけど、「やっぱりこれ要らんわ。」となって”-1”番目を削除していたら?という場合です。まあ、レアケースかもしれませんが無くはないということで。 InStrでの判定も、マクロ中のプレフィックス文字を付けるタイミングでの、「既に付いているか?」を見るので、その後の改定とはあまり関係ないかと思うのですが・・・。 また元々の名前に含まれている可能性についても、更に手間をかけると、プレフィックスなら文字の位置を...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1783 日前
    >可能性の話となりますが、複数ある構成部品の”-1”付きのインスタンスを削除したASSYの場合、 追番が繰り上がっては振られないようのでその構成部品は保存されなくなりますね。→ご指摘の答えになっているか??ですが、アップサンプル画像の【元データ構成】FutureManagerにあるように  <>内の追番が、swRootComp.GetChildrenで取得した構成部品名には-1,-2‥と付きます。 ...
  • 辻 直樹 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    一段落でホッとしているところ、気を挫くつもりはないのですが、、、 可能性の話となりますが、複数ある構成部品の”-1”付きのインスタンスを削除したASSYの場合、追番が繰り上がっては振られないようのでその構成部品は保存されなくなりますね。 別の識別方法として、名前に追加するプレフィックス(サフィックス)が既に含まれているかを”InStr”の戻り値が0かどうかで判定する方法もアリかと思います。(元々の名前にもう含まれているとダメですが・・・) &...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    こんな感じですかね?とりあえず問題なさそうです。   '現在の取得構成部品より追番取得  Dim PathName As String  PathName = swComp.Name2  PathName = Right(PathName, 1)   '追番が1の参照部品のみ保存対象  If PathName = 1 Then  '現在の構成部品名を読み込み  Dim OldName As...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    すいません。画像やっと投稿できました。。。 やはり、ファイル名からなんとかスキップさせる方法しかないですよね?イミディエイト確認したところ参照部品取得した時点で、必ず部品名末尾にー追番がつくので、追番取得しー1以外は保存しないようにする方向で考えてみます。 なにか方法あれば、教えて下さい。
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    【マクロ実行構成】構成部品7(同名2)、保存ファイル7(参照ファイル5) 【マクロ実行希望構成】構成部品7(同名2)、保存ファイル5(参照ファイル5)
  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    > 同名の保存部品が1ファイルでいいところ子ナンバー分、保存されてしまいます。 そうなんですよね。ファイル名チェックして,同名のファイルはスキップするとかでうまくいかないですかね。
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    【元データ構成】構成部品7(同名2)、保存ファイル5(参照ファイル5)
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1784 日前
    投稿遅くなりました。。 提供頂いたサンプルマクロ「SaveViaVBA31」ですが、新規、既存ともに問題なく名前変更し保存が出来ることを確認しました。私が求めていたことが出来てます。ただ、初投稿前にも確認済みではありましたが、swRootComp.GetChildrenで参照部品を取得すると同じ名前の参照部品がある場合、子ナンバー別に全て取り込んでしまう為、同名の保存部品が1ファイルでいいところ子ナンバー分、保存されてしまいます。 【元データ構成】構成部品7(同名2)、保存ファイル5(参照フ...
  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1785 日前
    あれ?ぼくがおいたサンプルマクロで,④もできるはずだけどなーと思ったら,「もとのアセンブリファイルの場所に新規フォルダ作る」手順になってたのでだめだったんですね。 フォルダ決め打ちだとできました。 内容的に外部参照は関係なさそうなので(中間ファイルには外部参照ないので)辻さん助言によりつくりなおしたSaveAsメソッド版をおいてます→サンプル 複数含まれてる部品のファイル名の変更がまだバグってますがサンプルにはなるかなと思います   ほんとは 保存ダイアログボックス...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1785 日前
    >ボリュームがあって,コードは読めてないんですが,困られてるのはどこになりますか?④になります。③は提供頂いたマクロを使わせて頂き問題なく使用可能です。 >これを見ると,Assyを上書きはできても新規保存はできない,のかなと思うのですが,そのとおりです。中間ファイル開き何も保存されていない状態から、アセンブリファイルと参照部品を名前変更し新規保存するときにどうするべきか悩んでます。 よろしくお願いします。
  • 西田将也 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1785 日前
    ボリュームがあって,コードは読めてないんですが,困られてるのはどこになりますか? > ③既存Assembly+参照Partsファイルを指定フォルダ+自動生成フォルダに保存>...
  • 福谷勇時 さんは、ブログ「APIに詳しい方、ご協力お願いします。」にコメントしました。 1785 日前
    色々とご回答頂き有難う御座います。 現在、ご教示頂いた内容を変数など、作成済みマクロで使えるように変更してます。 Pack and...
  • 福谷勇時 さんは、ブログ記事「APIに詳しい方、ご協力お願いします。」を公表しました。 1785 日前
    ファイル名自動生成API
    コメント
    • 福谷勇時 1776 日前

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

      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

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

    • 福谷勇時 1775 日前

      解決しました。

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

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

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

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

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

    • 西田将也 1774 日前

      解決しました。

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