Thank you.In the parameter of the Saveas method in VB.NET,
acDoc.Database.SaveAs(acDoc.Name, True, DwgVersion.Current, _
acDoc.Database.SecurityParameters)
Is there not the value equivalent to AutoCAD Mechanical version equivalent to "AM2011" by the CAD command
in DwgVersion.AC1024?
Thanking you in advance.
Yes, AC1014 means it's AutoCAD Release 14. Here is the full table:
wiki on .dwg and here is a code example how I use it in VB .NET:
Public Shared Sub MyAwesomeSaveCommand(ByVal savePath As String) Dim l_acadDoc as Document = MgdAcApplication.DocumentManager.MdiActiveDocument Using acDocLck As DocumentLock = l_acadDoc.LockDocument Dim m_currentDoc As AcadDocument = DocumentExtension.GetAcadDocument(l_acadDoc) m_currentDoc.SaveAs(savePath, Autodesk.AutoCAD.Interop.Common.AcSaveAsType.acR14_dwg) End Using End Sub
Thank you for an immediate note.
I want you to tell whether you cannot save it in version of
AutoCAD Mechanical in Saveas method of this .NET.
I want you to tell Code if I can do it.
Thanking you in advance.
まず、お問い合わせの際の”Supported Product”が「AutoCAD」との事で、「Mechanical」では無い事より、純粋なAutoCAD製品のお問い合わせとして回答させていただきます。
結論から申し上げて、残念ですが、純粋なAutoCAD製品を用いてバーチカルなMechanical製品用のDWGに変換して保存する事(Mechanical用DWGに変換しての保存)はできません。 これは、純粋なAutoCADのDWGオブジェクト構造と、バーチカルなMechanicalのDWG内のオブジェクト構造が異なる事を意味しており、いかなるオートデスクオフィシャルなAPI群にも直接的なAPIは用意されておりません。
よって、このお問い合わせが純粋なAutoCAD製品をお使いになって、製品起動バージョン以外のMechanical用DWGを保存作成したいとの要望であれば、残念ですが不可能との回答になります。
次にDWGの保存ですが、バーチカルなMechanical製品の保存と純粋なAutoCAD製品の保存動作は異なります。
これは、バーチカル製品であるMechanical製品&API側の仕様制限より、純粋なAutoCAD製品上と Mechanical製品上での コマンド動作やAPIを使用した図面保存のメカニズムは全く異なる制限や動作仕様が存在しているのは、ご存知の通りです。 (過去のバージョンより、MechanicalやAutoCADの製品仕様やAPIに変化はありません)
既にお気づきのように、FILEDIAを"0"にして ネイティブなSAVEASコマンドを実行させてもご理解いただけますが、製品自体の保存メカニズムは大きく異なります。
仮にAutoCAD2013とした場合、純粋なAutoCAD2013とMechanical2013の製品側の SAVEASコマンドでもご確認いただけるものと思います。
<< 純粋なAutoCAD2013の場合 >>
コマンド: SAVEAS
現在のファイル形式: AutoCAD 2013 図面 ファイル形式を入力 [R14(LT98<97)/2000(LT2000)/2004(LT2004)/2007(LT2007)/2010(LT2010)/2013(LT2013)/標準仕様(S)/DXF/テンプレート(T)] <2013>: 2010 図面に名前を付けて保存 <C:\Users\SAITO\Documents\Drawing1.dwg>: c:\temp1\PureAutoCAD2010.dwg
<< Mechanical2013の場合 >>
コマンド: SAVEAS Current file format: AutoCAD Mechanical 2013 Enter file format [AM2013/2013(LT2013)/AM2012/AM2011/AM2010/AM2009/AM2008/AM2007/AM2006/AM2005/AM2004DX/AM2004/AM6/2010(LT2010)/2007(LT2007)/2004(LT2004)/2000(LT2000)/Standards/Template/DXF]<AM2013>:AM2011 図面に名前を付けて保存 <C:\Users\SAITO\Documents\Drawing1.dwg>: C:\Temp1\AdnAM2011.dwg モデルを再作図中。
これらに加え、一番重要な点は過去のMechanical製品から継続して、Mechanical用の専用の保存用APIは一切リリースされていない点です。
一方で、開発にご使用されるdotNetAPI(Lisp,VBA COM/ActiveX,ObjectARXも同様)は純粋なAutoCAD製品向けのAPIですので、直接acDoc.Database.SaveAsメソッドなどをご利用になられる場合は非常に多くの制限が存在し、実際にはほとんどのカスタマイズの場面での御使用はできない事は、既知の事実として知られています。
仮に、Mechanical製品上での保存動作においては、下位バージョンのフォーマット保存同様に、Mechanical製品側の「FILEDIAを"0"にした」「SAVEAS」コマンドのご利用を一度ご検討ください。 (他のデベロッパ様は、Mechanical上での保存はこの方式と理解しています)
これらの情報は、以下のテクニカルソリューション Autodesk -Technical Q&Aで紹介されていますので、参考にしてください。
QA-8386 Mechanical製品で下位バージョンのMechanical DWG として保存する方法 http://tech.autodesk.jp/faq/faq/adsk_result_dd.asp?QA_ID=8386
尚、このほかにも、Mechanical製品上を含め dotNetカスタムコマンドを作成し動作させる場合、ベースとなる純粋なAutoCAD製品の影響を配慮する必要が求められ、コマンドそのものの登録の際の「コマンド実行コンテキスト」による影響を充分考慮する必要があります。
これは、カスタムコマンドの処理の内容により、例えば「単純なデータベースのみをハンドリングするカスタマイズコマンド、フォームを使ったカスタマイズコマンド、保存処理を伴うカスタマイズコマンド、非表示のデータベースを取り扱うカスタマイズコマンド、dotNetカスタムコマンド内でMixedモードにしてCOM/ActiveX経由でAutoCADのオブジェクトモデルをハンドリングするカスタマイズコマンド」といったように、カスタマイズの処理内容に応じて、登録の際の「コマンド実行コンテキスト」による影響の度合いが異なります。
(言い換えれば、コマンドそのものの登録の際の「コマンド実行コンテキスト」の種類によって実装できるカスタムコマンド内部の処理内容が制限されるといっても過言ではありません)
これらは、以下のOn-Lineヘルプでご確認いただけます。 コマンド定義(.NET) http://docs.autodesk.com/ACD/2014/JPN/files/GUID-F77E8FE0-8034-4704-93BD-F717608F8223.htm
また、これらは、以下のテクニカルソリューション Autodesk -Technical Q&Aでも触れられています。
QA-8211 AutoCAD2014.Netカスタムコマンド環境のForm内から既存のDWGを開きエンティティを追加する方法 http://tech.autodesk.jp/faq/faq/adsk_result_dd.asp?QA_ID=8211