Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
ソート順:
Issue 選択したオブジェクトが自動調整配列複写の要素かどうか判定して、自動調整配列複写であった場合に分解する実装するには、どのようなコードを記述すればいいでしょうか?       Solution 自動調整配列複写の対象となっているオブジェクト一式は、匿名ブロック(Anonymous Block)として自動調整フレームワークで管理、維持されています。   自動調整配列複写の判定には、AcDbAssocArrayActionBody::isAssociativeArray() メンバー関数を利用することが出来ます。同様に、分解には AcDbAssocArrayActionBody::explode() メンバー関数 を利用することが出来ます。   次のコードは、選択したオブジェクトが自動調整配列複写の構成要素だった場合に、トップレベルの調整配列複写を分解する例です。   ads_name ename; ads_point pt; int stat = acedEntSel(_T("\nオブジェクトを選択 : "), ename, pt); if (stat != RTNORM) return; AcDbEntity* pEnt; AcDbObjectId objId; acdbGetObjectId(objId, ename); Acad::ErrorStatus err = acdbOpenAcDbEntity(pEnt, objId, AcDb::kForRead); if (err != Acad::eOk) return; if (AcDbAssocArrayActionBody::isAssociativeArray(pEnt)) { acutPrintf(_T("\n自動調整配列です")); AcDbObjectId actId = AcDbAssocArrayActionBody::getControllingActionBody(pEnt, NULL); AcDbAssocArrayActionBody* pAryAct = NULL; err = acdbOpenAcDbObject((AcDbObject*&)pAryAct, actId, AcDb::kForWrite); if (err != Acad::eOk) { pEnt->close(); return; } if (AcDbAssocArrayPathParameters::cast(pAryAct->parameters())) acutPrintf(_T("\n - パス")); if (AcDbAssocArrayPolarParameters::cast(pAryAct->parameters())) acutPrintf(_T("\n - 円形状")); if (AcDbAssocArrayRectangularParameters::cast(pAryAct->parameters())) acutPrintf(_T("\n - 矩形状")); AcDbObjectIdArray newIds; pAryAct->explode(pEnt, newIds); pAryAct->close(); } else acutPrintf(_T("\n自動調整配列ではありません")); pEnt->close(); return;   EXPLODE コマンドで自動調整配列複写を分解する場合には、次のようなコードで AcDbAssocArrayActionBody::explode()  メンバー関数を代替することが出来ます。いずれの場合も、自動調整フレームワークが構成要素オブジェクトを保持しているため、すべてのオブジェクトを指定する必要はありません。   ads_name sset; acedSSAdd(NULL, NULL, sset); acedSSAdd(ename, sset, sset); acedCommandS(RTSTR, _T("EXPLODE"), RTPICKS, sset);      
記事全体を表示
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 文字を入力してください。
記事全体を表示
管理者権限で起動したコマンドプロンプトから 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 などと入力してみてください。       
記事全体を表示