Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
ソート順:
Issue ObjectARX Wizard の入手とインストール方法について押してください。   Solution ObjectARX Wizard は、https://aps.autodesk.com/developer/overview/autocad ページからダウンロードすることが出来ます。また、対応するバージョン毎に Github リポジトリからダウンロードすることも出来ます。   例えば、AutoCAD 2025 用の ObjectARX Wizard は、https://github.com/ADN-DevTech/ObjectARX-Wizards/raw/ForAutoCAD2025/ObjectARXWizardsInstaller/ObjectARXWizard.zip からダウンロードすることが出来ます。   ObjectARX Wizard のインストールでは、次の点に注意してインストールすることをお勧めします。 インストーラにデジタル署名がない旨の警告へ対応する。 管理者権限で起動したコマンドプロンプトで msiexec を使ってインストールする。 インストール時に Windows の ユーザーアカウント制御(UAC)の設定を オフ にする。 各注意点の詳細は、次のとおりです。   1.インストーラにデジタル署名がないない旨の警告へ対応する ObjectARX Wizard のインストーラ(.msi ファイル)にはデジタル署名が施されていないため、インストーラを起動しても警告が表示されてしまいます。インストール時には、次の手順でインストーラを実行してください。   2.管理者権限ドで起動したコマンドプロンプトで msiexec を使ってインストールする​ コマンド プロンプトを管理者権限で起動するには、スタート ボタンから [Windows システム ツール] >> [コマンド プロンプト] を見つけて、マウスの右ボタン メニューから [その他] >> [管理者として実行] を選択してください。 管理者権限で起動したコマンド プロンプトから、次のように、msiexec を使って ObjectARX Wizard をインストールしてください。 msiexec /i <ObjectARXWizardsName>.msi   3.インストール時に Windows の ユーザーアカウント制御(UAC)の設定を オフ にする 上記 1. ~ 2. でインストールしても ObjectARX Wizard が正しく動作しない場合は、ユーザ アカウント制御 (UAC)  の設定を一時的に無効にしてから再インストールすることをお勧めします。UAC を無効にしないと、インストール自体が成功しても、システム レジストリへの書き込みが出来ていない場合があります。    インストール中の RDS 入力について Registreterd Developer Symbol(RDS) は、アプリケーションの開発元を識別し てアプリケーション間で登録されたコマンドの競合を防ぐために使用されていましたが、.NET API への移行も進んだため、その役割を終えて、現在、登録サイトは削除されています。インストール中の次の画面では、単に任意の半角アルファベット 4 文字を入力してください。
記事全体を表示
Issue 複数の 3D ソリッドの底面を XY 平面(Z 座標値 0.0)に一斉に揃えることは出来ますか?   Solution 選択した 3D ソリッドの底辺を Z=0.0 に位置合わせするコードを作成する場合、オブジェクト(Solid3d)の境界ボックス座標を Entity.GeometricExtents プロパティで取得してから、Extents3d.MinPoint.Z で現在の底面の Z 値を取得、次に、XY 平面(Z 値 0.0)からのベクトル(Vector3d)からマトリックス(Matrix3d)を作成後、同マトリックスを反転して、Z 値 0.0 の移動させることで、底面の位置合わせを行うことが出来ます。次の例は、その C# コードとなります。 ご参考:オブジェクトを移動する(.NET) | Autodesk   Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; Database db = Application.DocumentManager.MdiActiveDocument.Database; Document doc = Application.DocumentManager.MdiActiveDocument; using (Transaction tr = db.TransactionManager.StartTransaction()) { PromptSelectionResult psr = doc.Editor.GetSelection(); SelectionSet sset = psr.Value; if (psr.Status == PromptStatus.OK) { Entity ent = null; Extents3d ext; foreach (SelectedObject so in sset) { ent = (Entity)tr.GetObject(so.ObjectId, OpenMode.ForWrite); if(ent.GetRXClass().Name == "AcDb3dSolid") { Solid3d sol = (Solid3d)ent; ext = sol.GeometricExtents; ed.WriteMessage("\nSolid3d Z value = {0}", ext.MinPoint.Z); Point3d pt = new Point3d(0, 0, 0); Vector3d vec = pt.GetVectorTo(new Point3d(0.0, 0.0, ext.MinPoint.Z)); sol.TransformBy(Matrix3d.Displacement(vec).Inverse()); } } } tr.Commit(); }
記事全体を表示
Issue オンラインヘルプ「レイアウトをパブリッシュする(.NET) 」の例では、PublishExecute メソッドを利用して DSD ファイルを使ったバッチ印刷の方法を説明しています。ただし、この例では "DWG to PDF.PC3" を指定してプロッタ環境設定をオーバーライド(上書き)しています。 印刷対象のレイアウトに設定されたページ設定を利用してバッチ印刷する方法はありますか?   Solution PublishDsd メソッドで、定義済みのページ設定(印刷デバイスと設定)を使用してレイアウトを印刷、または、/ファイル出力することが出来ます。この場合、また、DsdData.SheetType の値を SheetType.OriginalDevice に指定することで、プロッタ環境設定(.pc3)を指定せずに連続印刷をおこなうことが可能です。 次のコードは、その C# 例です。 Try Dim collection As DsdEntryCollection = New DsdEntryCollection() Dim entry As DsdEntry entry = New DsdEntry() entry.Layout = "レイアウト1" entry.DwgName = "c:\Temp\Drawing1.dwg" entry.Nps = "Setup1" entry.Title = "Sheet1" collection.Add(entry) entry = New DsdEntry() entry.Layout = "レイアウト1" entry.DwgName = "c:\Temp\Drawing2.dwg" entry.Nps = "Setup1" entry.Title = "Sheet2" collection.Add(entry) Dim dsd As DsdData = New DsdData() dsd.SetDsdEntryCollection(collection) dsd.ProjectPath = "c:\Temp\" dsd.LogFilePath = "c:\Temp\logdwf.log" dsd.SheetType = SheetType.OriginalDevice dsd.NoOfCopies = 1 dsd.SheetSetName = "PublisherSet" dsd.WriteDsd("c:\Temp\publisher.dsd") Dim nbSheets As Integer = collection.Count Using progressDlg As PlotProgressDialog = New PlotProgressDialog(False, nbSheets, True) progressDlg.UpperPlotProgressRange = 100 progressDlg.LowerPlotProgressRange = 0 progressDlg.UpperSheetProgressRange = 100 progressDlg.LowerSheetProgressRange = 0 progressDlg.IsVisible = True Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("BACKGROUNDPLOT", 0) Dim publisher As Autodesk.AutoCAD.Publishing.Publisher = Autodesk.AutoCAD.ApplicationServices.Application.Publisher publisher.PublishDsd("c:\Temp\publisher.dsd", progressDlg) progressDlg.Destroy() End Using Catch ex As Autodesk.AutoCAD.Runtime.Exception MsgBox(ex.Message) End Try End Sub なお、PublishDsd メソッドを使用して DSD ファイルをパブリッシュする前に、BACKGROUNDPLOT システム変数を 0 に設定する必要があります。
記事全体を表示
管理者権限で起動したコマンドプロンプトから ObjectARX Wizards をインストール後、正常にインストールが完了しても、Visual Studio で新規にプロジェクトを作成する際、 ObjectARX Wizards テンプレートがリストされない場合があります。同じ状況でインストールした AutoCAD .NET Wizards は正しく表示されています。  このような場面では、Visual Studio が使用するキャッシュ情報を削除するか、Visual Studio 2022 をアップデートすることで、ObjectARX Wizards  を認識、読み込むことが出来る可能性があります。   1. MEF キャッシュをクリーンアップする ディスク上の MEF キャッシュをクリアし、Visual Studio にキャッシュ情報を再構築させる。 MEF キャッシュをクリアする理由は、キャッシュが破損している可能性があるためです。これは通常、拡張機能または他の Visual Studio コンポーネントをインストールまたは更新するときに発生します。コマンドプロンプトから次のコマンドを実行、フォルダの内容を削除して、Visual Studio を再起動します。   %LOCALAPPDATA%\Microsoft\VisualStudio\<Instance>\ComponentModelCache   例) <Instance> の部分は、Visual Studio バージョンや使用環境によって変化します。(下記の例では 17.0_c96a97f2、17.0 はVisual Stufio 2022 の場合) C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\17.0_c96a97f2\ComponentModelCache   2 . Visual Studio を最新のアップデートに更新します。   Visual Studio を再起動して [新しいプロジェクトの作成] ダイアログを表示させると、強制的にキャッシュの再構築がおこなわれます。この操作でも ObjectARX Wizards が表示されないようなら、検索ボックスに ObjectARX などと入力してみてください。       
記事全体を表示