CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

AutoCADのプラグインを作る無料マニュアルの和訳(46ページまで)

2023-06-07 19:23:37 | Autocad

プロローグ

少年の頃、私はすぐにコンピューターに魅了されました。 いわゆるコンピュータ時代はまだ始まっていませんでした。 企業はカードトレイとタイプライターを使用していました。 手紙は郵便で送られてきました。 電話での連絡、それもスマホではありませんでした。 私が初めてプログラミングを体験したのは、1985 年頃の MSX でした。今日知られているようなインターネットはまだ存在していませんでした。 MSX はテレビに接続する必要があり、コードを保存するためにカセット プレーヤーを使用するコンピューターでした。 MSXのプログラミングはBASICという言語で行われました。 これは、コンピュータに実行する簡単なコマンドを与える、かなり単純な言語でした。 私の最初の実際のアプリケーションはスロット マシンでした。 あらゆる種類のシンボルが 3 つのブロックで回転し、完全にランダムに停止します。 スリーカードを獲得するとポイントが得られます。 とてもうまくいきました。 ただし、3 つの等しいシンボルが出現する確率が小さすぎることを除いては (実際のスロット マシンでも同様ですが、それはさておき)。 幸いなことに、コード内の数式を調整できたので、3 つが等しい可能性が大幅に高まりました。 あっという間に何百万ものポイントが集まり、画面に収まりきらないほどになりました。 結局のところ、いつも勝つのだから、プレイの楽しみはすぐになくなってしまった。 遊ぶことが目的ではなく、何かを実行するコードを書くことが目的でした。 そこから何を学んだのでしょうか? コンピューターゲームは楽しいですか? いいえ、プログラミングの方がずっと好きでした。 アイデアをコードに変換して、コンピューターが何をしたいのかを理解できるようにします。 初めて PC を購入した後、すぐに他の言語に切り替えました。 BASICはPCには向いていませんでした。 より優れた言語は Pascal でした。 Pascalでたくさんのツールを作りました。 その後、他の言語や Web デザインなどのテクニックを試してみました。 コードは PHP と JavaScript で記述されました。 これらの言語はどちらも C++ と非常に似ています。 プログラミングはまだ趣味でした。 専門的にはコンピューターも扱わなければなりませんでした。 私は土地測量士になっており、事務所では AutoCAD を使って測量を地図に変換する作業を頻繁に行っていました。 私は趣味から AutoCAD を自分の希望に合わせるために AutoLISP と VBA を勉強しました。 便利なツールを使用すると、時間のかかるさまざまなアクションを突然、はるかに速く実行できるようになります。 私は常々、趣味を仕事には絶対にしたくないと言ってきました。 そうなると趣味がなくなってしまうからです。 2011年、本人の意思とは関係なくプロのプログラマーになりました。 現在は、主に土木工学市場を対象とした、AutoCAD、Civil 3D、または Map 3D 内で実行される商用アプリケーションを開発しています。 それ以来、趣味はなくなりました。 2015年になって、やっぱり痒くなり始めました。 私にとって、本を書き始めるのは長い間楽しいと思っていました。 数多くの小説やスパイ本が成功を収めた後、いよいよ本番の時が来た。 私は本を書くという新しい趣味を見つけました。 プログラミングに関する本はたくさんあります。 さて、AutoCADについて。 しかし、AutoCAD のプログラミングについては、ほとんど何も見つかりません。 自分でいろいろ調べて試してみなければなりませんでした。 こういった本があればよかったと思います。 幸いなことに、私は自分の知識をこの本にまとめて、他の人が AutoCAD のプログラミングを学習する際の助けを得ることができるようになりました。

この本の読み方

まだプログラミングの経験はそれほど必要ありませんが、プログラミングをしたいという意欲は持っています。 適度なコンピュータ知識を持ち、自立していることが期待されます。 「うまくいかない」と叫ぶ消極的なタイプの人は、この本を読まないほうがいいでしょう。 何かがうまくいかない場合はどうすればよいですか? 次に、原因を見つけて修正します。 それは精神だ! 本書はそのような人たちに向けて書かれています。 この本はかなり読みやすいです。 章の順序は、コードの一部を説明し、その後に (必要に応じて) そのコードのより詳細な説明が続き、さまざまな章の間に理論の章が含まれることもあります。 この本の進行は、AutoCAD で何かを動作させる実践に焦点を当てています。 .NET で何ができるかについては詳しく説明されていません。可能性が広すぎるためです。 コードの各部分では、.NET に慣れるために十分な関数と構造について説明します。 知識が増えれば増えるほど、まだ知らないことを自分で調べることが容易になります。 これはダミー向けの本ではないため、中間ブロック、情報ブロック、ヒントや興味深いポイントは見つかりません。 ただし、最後に用語のリストと簡単な説明があります。 これは参考になります。 また、すべてのソース コードは Web サイト Books.huiz.net/ からダウンロードできるため、すべてを再度入力する必要はありません (実際には、その方が有益です)。 この新しいエディションは、Visual Studio 2022 と AutoCAD 2023 を使用するように更新されました。また、英語が私の母国語ではないことにも留意してください。 私はオランダ語で書かれた本をできるだけ正確に翻訳しようと努めました。 ただし、言葉の間違いを見つけた場合は、読み返していただき、私の無知をご容赦いただければ幸いです。 この本が有益であり、あなたにとって 1 ユーロまたは 1 ドルの価値があると感じていただければ幸いです。 学習頑張ってください! アントン・ホイジンガ「これまでやったことがないので、できると思います。」 長くつ下のピッピ

1. プログラミングを始める方法

プログラミングを学習する最適な方法は何かについては意見が分かれています。 最善の方法はプログラミングに関する良い本を読むことだという人もいるでしょう。 そこで、プログラミングに関する一般的な本であるべきなのか、それともこれからプログラミングする言語に関する本であるべきなのかという疑問が生じます。私は、「プログラミングはあなたの中になければなりません」と言います。 そうでなければ辞めた方が良いかもしれません。 車の運転を本から学ぶことはできません。 ギアのシフトやウインカーの操作、オイルの点検方法など、車の運転の仕組みを学ぶことができます。 しかし、適切な運転能力がなければ、交通状況を洞察したり、無意識のうちに車を操作したり、他の道路利用者に予測したりする能力は得られません。 プログラミングでも同じように機能します。 コンピューターが勤務時間中にのみ電源を入れればよい単なるツールである場合、この特別なデバイスの詳細に興味がない場合、コンピューターの素晴らしい世界をさらに深く掘り下げることに興味がない場合 、それならこの本を読むのをやめて、別の趣味に集中したほうがいいでしょう。 それは決して何かになることはありません。 今後の人生も頑張ってください! この記事を読み続ければ、あなたにはプログラミングを学ぶ意欲があり、おそらくプログラミングが上手くなりたいという意欲があると思います。 じゃあ、頑張ってね! この章はいくつかの退屈なことから始まります。 うまくいけば、それを乗り越えることができます。

AutoCAD のプログラミング

この本は AutoCAD のプログラミングについて説明しています。 この本は、Windows アプリケーションやモバイル アプリケーションのプログラミングに関する詳細を網羅した本ではなく、AutoCAD 用のプラグインの作成に関する本です。 特定のプログラミング領域をさらに深く掘り下げたい場合は、それに関する本が無数にあります。 しかし、残念なことに、AutoCAD のプログラミングに関する書籍はほとんどありません。 だからこそ、他の人の助けになればと思い、時間をかけて自分で記事を書きました。

どの言語が適しているか

プログラミングに使用できる言語はいくつかありますが、実際に選択することはできません。 学ぶのに最適な言語は C# です。 これはシーシャープと発音されます。 そして、なぜこれが最良の選択なのでしょうか? AutoCAD の場合は、次の言語 (およびその他の言語) でプログラムすることができるためです。 AutoLISP VBA (Visual Basic for Applications) VB.NET C++ C# AutoLISP は非常に強力で、これを使用してほとんどあらゆるものを作成できます。 ただし、Lisp ルーチンは難読化されていないか、難読化されていないため、サードパーティによる編集が可能です。 さらに、Lisp の構文は他の一般的なプログラミング言語とはまったく異なるため、別の言語を学習したり、異なる言語間で切り替えたりすることははるかに困難です。 AutoCAD での小さなアクションに適しており、知っていれば確かに役立ちますが、とにかく脇に置いておきましょう。 VBA は非常に強力でもあり、VBA を使用すると Windows 関数も実行できるため、Lisp よりもはるかに多くのことができます。 VBA には古い言語であるという欠点があり、何年も前から消滅したと宣言されてきましたが、今も復活し続けています。 さらに、これは Visual Basic 言語であるため、本物の (またはむしろ成功した) プログラマーによって真剣に受け止められていません。 VB.NET は最新のプログラミング言語であり、C# で可能なことはすべて実行できます。 どちらも .NET のバリアントであり、これらを使用して非常に強力なアプリケーションを作成できます。 構文を除けば 2 つの言語に違いはありませんが、繰り返しになりますが、この言語は成功した (つまり、必ずしも優れているわけではない) プログラマーによって真剣に受け止められていません。 VB.NET を学びたいかどうかはあなた次第です。おそらく、VBA で何かをやったことがあり、VB.NET の方が簡単に思えるからかもしれませんが、私はまだそれをお勧めしません。 VB.NET の構文は VBA とはかなり異なるため、すぐに C# を使用することをお勧めします。 私は、VB.NET ですべてを行う成功したプログラマーを 1 人だけ知っています。 それは Autodesk の Stephen Preston です。 古い C 言語の出身である彼は、.NET が登場したときに選択を迫られました。VB.NET か C# でしょうか? 彼の友人たちは VB.NET プログラマーよりも優れていると感じていたため、スティーブンは強い頑固さから自分の意見を主張するために VB.NET を選択しました。 しかし、インタビューの中で、彼は自分の選択について少し後悔しているようです:

http://adndevblog.typepad.com/autocad/2012/05/vbnet-or-c-a-personal-perspective.html

C++ はかなり複雑な言語です。 学ぶことはできますが、始めるのにはほとんど適していません。 また、C# よりも少し強力です。 これは非常に複雑で、すぐに実際の障害を引き起こす可能性があるため、最初から始めるのには適した言語ではありません。 次に、C# は真剣に受け止められている言語であり、Java、PHP、JavaScript、C++ などの他の言語と構文が非常に似ている言語であるため、上にある別の言語の学習や理解が容易になります。 それの。 C# を読める場合は、インターネット上で JavaScript または C++ のサンプルを入手し、それを独自のコードに実装することもできます。 さらに、C# または C に似た言語には、VB.NET よりもはるかに多くのサンプル コードがあります。 C# には、非常に強力なアプリケーションを迅速かつ簡単に構築するために必要なものがすべて揃っています。 Windows アプリケーションであっても AutoCAD プラグインであっても、この言語は優れています。 したがって、プログラミングには C# が (最良の) 選択肢となります。VB.NET でもまったく同じことができるにもかかわらず、C# プログラマーはほぼすべての人からより真剣に受け止められ、また、良い仕事をより早く見つけることができます。 C# プログラマが VB.NET プログラマよりも先を行く正当な理由はありませんが、それでもそれは起こります。 出世してキャリアを築きたいですか? 次に、C# を選択します。

プログラミングはどうやって学ぶのですか?

それは難しい質問であり、人によって答えが異なる可能性があります。 どうすればプログラミングを学ばなくなるかという質問に答えるのははるかに簡単です。 それでも、誰もがプログラミングを学ぶために必要だと私が考えるいくつかのポイントについて言及します。 プログラミングに興味を持ちましょう。 やり始めてください。 いくつか試してみてください。 インターネットで調べてください。 行動することで学びが得られます。 他の人から学びましょう。 ソースコードを読んで、それが何を意味するかを理解してください。 ローレンド・アルメイダはかつてこう言いました、「一つの情報源から盗むことは盗作だ。多くの情報源から盗むことは研究だ。」 時間と機会があれば、証明書や学位を取得できるコースを受講してください。 これが必要な特定の仕事では常に役に立ちます。 協力的になりましょう。 グループの中で自分が最も優れている場合もあれば、最も劣っている場合もあります。 彼らから学びましょう。 プログラムを再構築します。 自分で解決策を見つける方法を見つけてください。 他のコンピューター言語を学びましょう。 自分でコーディング標準を計画します。 あなたを制限するのではなく、より構造化された方法で作業できるようにするためです。 言語は24時間では習得できません。 むしろ、年単位で数えてください。

.NET とは

では、.NET (ドット ネットと発音される) とは正確には何でしょうか? 聞いたことがあるかもしれませんが、そうでない場合は、簡単に説明させていただきます。 もっと詳しく知りたければ、それに関する良い本が見つかると思います。 昔は、アプリケーションを作成したい場合は、すべてを自分で解決する必要がありました。 たとえば、画面を制御する方法、キーボードを読み取る方法、マウスの動きを傍受する方法などです。 多くの場合、それを行う既製のコードやモジュールを購入できますが、デバイスごとに構成が異なるため、すべてのコンピュータで動作するアプリケーションを作成するのは常に複雑な作業でした。 メーカーはデバイスに対処する独自の方法を持っていましたが、それらは相互に互換性がありませんでした。 プログラマーとして、発生する可能性のあるすべての構成をテストすることはできず、アプリケーションがブランド X のマウスやブランド Y のモニターでは正しく動作しない可能性があります。 その後、Java が市場に登場しました。 これは、利用可能な Java 関数を使用してアプリケーションを実行できるフレームワークでした。 これにより、実際の作業を担当する関数を直接呼び出すことができるようになり、プログラミング時間が大幅に節約されました。 Microsoft は Windows に Java を実装することを許可されていなかったため、Java のアイデアに基づいて、より優れた独自のフレームワークを作成しました。 このフレームワークは .NET と呼ばれていました。 このフレームワークは、互換性のあるいくつかの言語の基礎として機能しました。 これは、.NET 言語で記述されたアプリケーションは相互に通信でき、コード内で使用できる関数ライブラリが膨大な数にあるためです。 それが .NET が成功した理由です。 C++.NET、VB.NET、F#、C# のどれを使用するかは問題ではなく、すべて互換性があります。 また、利用できる機能が豊富であることもプログラマーにとってはありがたいことです。 1 行のコードで、適切なボタンとアイコンを備えた通知ウィンドウを表示できます。 数行のコードを使用すると、パスが存在するかどうか、ファイルが上書きされるかどうかなどを個別にチェックできる保存ダイアログを呼び出すことができます。 .NET 自体は言語ではなく、さまざまな .NET 言語で使用できる機能が満載されたライブラリのコレクションです。 オートデスクは、AutoCAD の機能を利用できる .NET アプリケーションを AutoCAD にロードできるようにしました。 したがって、AutoCAD の .NET アプリケーションは、AutoCAD 関数だけでなく Windows 関数も呼び出すことができます。 オートデスクは、いわば AutoCAD の機能を満載したライブラリで .NET を拡張しました。 そのため、アプリケーションを .NET で公開する企業が増えています。 このように公開されたライブラリをAPI(アプリケーション・プログラミング・インターフェース)と呼びます。

エディタ

実際に何かを作成し始める前に言及すべきもう 1 つの重要な点は、エディタです。 これは、コードを記述する単なるエディターそのものではないため、IDE (統合開発環境) とも呼ばれます。 もちろん、メモ帳で C# を書くこともできますが、それは馬を荷車に乗せて自分で荷車を引くのと同じくらい面倒で時間がかかります。 迅速かつ簡単にプログラミングできるようにするには、選択した言語に焦点を当てたエディターを備えた IDE が必要です。 たとえばC#。 そして、このために非常に優れた IDE があります。 本書では Microsoft の Visual Studio のみを使用します。 これには無料版があり、一定の条件を満たしていればプログラミングが可能です。 営利企業に勤めていて、アプリケーションからも収入を得ている場合は、Visual Studio を購入するか、別の IDE を探す必要があります。 オープンソースの IDE もあります。 現在、Visual Studio 2022 が Microsoft の最新の IDE です。 以下のリンクから「Visual Studio 2022 Community」という無料バージョンをダウンロードできます:

https://visualstudio.microsoft.com/downloads/

Community Edition を選択します。 Visual Studio をインストールできない場合は、プログラミングを諦めることを検討するかもしれません。 成功したと仮定して、次の章でお会いしましょう。 ただし、もう 1 つヒントを教えておきます。 インストール中に、インストールするコンポーネントを指定できます。 単純な C# アプリケーションを開発することになるため、[デスクトップとモバイル] カテゴリで .NET デスクトップ開発オプションを選択するだけです。このセクションのみにチェックを入れ、提案されている右側のすべてのサブセクションを受け入れるだけで十分です。 今のところはそれで十分です。 追加のコンポーネントは後でいつでもインストールできますが、AutoCAD プラグインには必要ありません。

2. AutoCAD でのアプリケーション

この章では、AutoCAD にロードする小さなアプリケーションを作成し、AutoCAD のプログラミングの基本を説明します。 Visual Studio がインストールされており、もちろん AutoCAD もインストールされています。

プロジェクトの作成

AutoCAD のプラグインはクラス ライブラリ タイプです。 Visual Studio の起動画面で、[新しいプロジェクトの作成] を選択できます。次のステップで、[クラス ライブラリ (.NET Framework)] を選択します。 .NET Standard と .NET Core のバリアントもあるので、間違えないように注意してください。 それらを選択してはいけません! また、「カスタム コントロール ライブラリ」バリアント、「Windows フォーム」バリアント、「WPF」バリアントではなく、「クラス ライブラリ (.NET Framework)」のみが正しい選択です。

上部で

C#、Windows、ライブラリでフィルタリングしてリストを絞り込むことができます。

次のステップに進みます。 名前を入力し、プロジェクトを保存する場所を選択できます。 ここまでは特別なことは何もありませんが、先に進む前にいくつかの新しいことを学ぶ必要がある点が異なります。 作成するアプリケーションごとにプロジェクトが必要です。 プロジェクトには、すべてのプログラム コード、ダイアログで使用する画像などのリソース、さまざまな関数ライブラリへの参照、およびこのアプリケーションに適用される設定が含まれています。 すべてが一緒になってプロジェクトです。 1 つのプロジェクトが 1 つのアプリケーションにつながります。 したがって、プロジェクトはアプリケーションです。 ソリューション内に複数のプロジェクトを含めることができます。 したがって、ソリューションは、属するプロジェクトの集合です。 プロジェクトが相互に参照する場合、複数のプロジェクトを含むソリューションが確かに役立ちます。 この段階では、各プロジェクトが独自のソリューション内にあるというルールを使用します。 そしておそらく将来的には、他のことをすることは決してないだろう。 上記の場合、ソリューション名をプロジェクト名と同じにしても安全です。 ソリューションとプロジェクトを別々にし、同じディレクトリに置かないことをお勧めします。 次に、正しい .NET Framework バージョンを選択します。 これは必要に応じて後で変更できます。 必要なバージョンを知っておくと便利です。 AutoCAD のバージョンごとにこれは異なる場合があります。 リリース .NET Framework AutoCAD 2023 4.8 AutoCAD 2022 4.8 AutoCAD 2021 4.8 AutoCAD 2020 4.7 AutoCAD 2019 4.7 AutoCAD 2018 4.6 AutoCAD 2023 用のアプリケーションを作成する場合、プロジェクトは を参照する必要があります。 NET Framework 4.8 が使用されますが、AutoCAD 2018 用のものを作成する場合は、.NET Framework 4.6 を選択してください。 [作成] ボタンをクリックすると、エディターが表示され、クラス ライブラリ タイプの新しく作成されたプロジェクトが表示されます。 スクリーンショットのレイアウトはところどころ異なる場合がありますが、大部分は一致しているはずです。 コンポーネントが見つからない場合は、通常、[表示] メニューから検索して表示できます。 左側/中央の大きなフィールドは、コード ファイルを変更するエディタです。 右側にはソリューション エクスプローラーがあり、プロジェクトに属するすべてのファイルがあります。 その下には、選択したオブジェクトまたはファイルのプロパティを変更できる [プロパティ] ウィンドウがあります。 この本では、IDE の表示にライト テーマを使用しています。これはスクリーンショットに適しています。 テーマを暗いままにすることもできます。これは IDE のパフォーマンスには影響しません。

大きなコード

エディターには、開いているファイルが表示されます。 上部のタブには開いているファイルが表示され、ファイルを簡単に切り替えたり、閉じたり、並べたりすることができます。 コードは色を使用して表示されるため、コードのさまざまな部分が何を表しているのかがすぐにわかります。 コードにはいくつかの重要な機能もあります。すべて大文字と小文字が区別されます。中かっこを除くすべての行はセミコロンで終わります。コード行は中かっこでグループ化できます。これらは 1 つに属するコード ブロックです。

リファレンス ライブラリ

今のところは心配する必要はありません。結果が必要です。 まず、AutoCAD ライブラリを使用することをプロジェクトに伝える必要があります。 これを行うには、ソリューション エクスプローラーで [参照] を右クリックし、[参照の追加] オプションを選択します。 次のウィンドウで、必要な AutoCAD ライブラリを探します。 最近使用した参照がまだないため、[参照] ボタンを使用して検索する必要があります。 AutoCAD がインストールされている場所に移動し、ファイル「C:\Program Files\AutoCAD 2023\AcCoreMgd.dll」を添付します。 これには、アプリケーションから呼び出すことができる AutoCAD 関数が含まれています。 別のバージョンの AutoCAD を使用している場合は、対応するフォルダでファイルを見つけることができます。 このウィンドウの [アセンブリ] タブの [フレームワーク] セクションで次の項目も探します。

ライブラリ

「System.Windows.Forms」を選択します。 「OK」をクリックします。 エディターには新しいものは何も表示されませんが、ソリューション エクスプローラーで「参照」を開くと、選択したこれらのライブラリを見つけることができます。 デフォルトですでにリンクされているライブラリがいくつかありますが、ここでは何もする必要はありません。 必要なものもあれば、気にしないものもあります。 「AcCoreMgd」と「System.Windows.Forms」がその中にあれば、今のところは問題ありません。

Writing code 
Expand the code in the editor. By default, this was written:

using System; 
using System.Collections.Generic;
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ClassLibrary1 

    public class Class1 
    { 
    } 

Remove this and replace by this: 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace ClassLibrary1 

    public class Class1 
    { 
        [Autodesk.AutoCAD.Runtime.CommandMethod("MyCommand")] 
        public void MyFirstCommand() { 

            System.Windows.Forms.MessageBox.Show("Hooray! AutoCAD is doing what I want!"); 
        } // void
    } // class 
} // namespace 

今のところ、それが何を言っているのか、それが何を意味するのかは心配しないでください。 いずれの場合も、エディターにエラーが含まれていないことが重要です。 これは、何かが間違っている場合、赤い波線で示されます。

ブラケットの位置も問題ありません。 デフォルトでは、これらは新しい行に配置されますが、左中括弧が同じ行に配置されるように設定することもできます。 エディターが上記のコードを別の方法で再配置しても、それは問題ではありません。 緑色の文字はコメント行です。 アプリケーションはこれらを無視します。コードの意味を理解することは、自分自身や他のプログラマーにとって役立ちます。 中括弧が多すぎるとどのブロックで終わるのか混乱する可能性があるため、短いコメント テキストを使用して、閉じ中括弧が void またはクラスまたは名前空間に属していることを示すことができます。 これは個人的な選択です。 上のスクリーンショットでは、コードが正しくコピーされず、エラーが検出されています。 必要に応じて、前に指定したコードをコピーします。ただし、コードにエラーがないかどうかを確認してください。エラーが発生すると機能しなくなります。 では、これを AutoCAD でどのように機能させるのでしょうか?

デバッグ

コードが正しく動作するかどうかをテストできます。 これをデバッグと呼びます。 これを実行するには、エディタで F5 をクリックするか、ツールバーの緑色のスタート ボタンを押すか、[デバッグ] > [デバッグの開始] メニューを使用します。 次のエラー メッセージが表示されます。 これは、プロジェクトの出力をすぐに開始できないことを意味します。 それは正しい。 Windows アプリケーション タイプのプロジェクトは EXE ファイルを生成し、Windows で直接開始できますが、クラス ライブラリ プロジェクトは DLL ファイルになります。 それを直接開始することはできません。 デバッグ時に何を開始するかをプロジェクトのプロパティで指定することで、この問題を修正できます。 ソリューション エクスプローラーの [プロパティ] でマウスを右クリックし、 [開く] オプションを選択します。 エディターに、プロジェクトのプロパティを含むページが表示されます。 「デバッグ」タブを選択します。

ここではデバッグ時にプロジェクトを開始するように書かれていますが、DLLファイルが実行できないため実行できません。 したがって、「外部プログラムの開始」オプションを選択します。 適切な場所でファイル「acad.exe」を見つけます。 もう一度「F5」をクリックします。 すべてがうまくいけば、AutoCAD が起動します。 しかし、新しく作成したアプリケーションは機能するのでしょうか? これを正しく理解するには、自分が今何をしたかを知ることが重要です。 これは段階的な計画で表すことができます。Visual Studio でプロジェクトを作成しました。 このプロジェクトは、デバッグを開始すると自動的に DLL ファイルに変換されます。 DLL ファイルは実行できないため、デバッグ時に外部アプリケーション、つまり AutoCAD を起動するように指定しました。 ただし、もちろん AutoCAD は DLL をまだ認識していないため、最初に DLL を AutoCAD にロードする必要があります。 AutoCAD が起動したら、コマンド ラインに「NETLOAD」コマンドを入力します。 ダイアログボックスが表示されます。 Visual Studio が作成した DLL ファイルを見つけます。 これは、プロジェクトの下のフォルダー「\bin\Debug\」にあります。 保存場所がわからない場合は、Visual Studio のソリューション エクスプローラーでプロジェクトを選択し、[プロパティ] ウィンドウでプロジェクトの場所を確認できます。 このテキストをコピーして AutoCAD のダイアログ ボックスに貼り付け、そこから「\bin\Debug\」に進むことができます。 私のコンピュータ上の場所とは異なる可能性があります。 それはプロジェクトを保存する場所によって異なります。 あなたの場所には、多数の DLL ファイルがあります。 ファイル「ClassLibrary1.dll」を選択し、「OK」をクリックします。 AutoCAD によってファイルがロードされるので、このセッション中にこの DLL で作成した関数にアクセスできるようになります。 AutoCAD を再起動しても、DLL は自動的に再ロードされません。 現時点では、デバッグ セッションごとにこの DLL を AutoCAD に手動でロードする必要があります。 AutoCAD にはロードされたものを一切信頼しないという冷酷な習慣があるため、おそらく次のウィンドウが表示されるでしょう。

「一度ロード」または「常にロード」オプションを選択します。 これを回避する他の方法については、この本の後半で説明します。 コードを少しでも理解していれば、AutoCAD で使用するための新しいコマンドを思いついたことがわかります。 このコマンドは「MyCommand」と呼ばれ、テキストを含むダイアログ ボックスが表示されます。 うまくいくか見てみましょう。 コマンド ラインに「MyCommand」コマンドを入力し、メッセージが表示されるかどうかを確認します。 すべてがうまくいけば、次のように表示されます。おめでとうございます。 次の章に進むことができます。 うまくいかなかった場合は、本当にプログラミングを学びたいのか、やる気があるのかを自問してください。 どうやら、あなたはこの本の指示にうまく従えないか、数行のコードをコピーして貼り付けるのが苦手のようです。 または、よく読むのはあなたの趣味ではありません。 必要に応じて、上記の説明に従って再試行してください。 それがうまくいかない場合は、あきらめてください。

3. 注: AutoCAD でのアプリケーション 前の章では、プロジェクトを作成しました。 このプロジェクトには、AutoCAD への参照とコードの一部が含まれています。 デバッグにより、これらすべてが AutoCAD にロードできる DLL ファイルに変換されました。 しかし、正確には何が起こったのでしょうか?

参照

AutoCAD 関数を使用するには、その関数が使用可能になっている必要な AutoCAD ライブラリへの参照が必要です。 Visual Studio のソリューション エクスプローラーで [参照] 見出しの下を見ると、「accoremgd」への参照が表示されます。 これは AutoCAD コア マネージドの略で、これには AutoCAD のコア機能が含まれており、マネージドはマネージド コードへの参照であることを示します。 なぜこれがコアと呼ばれるのでしょうか? オートデスクは、.NET で数千の機能を利用できるようにしました。 これらの関数はすべて、わかりやすくするためにグループに分けることができます (オブジェクトの関数は、コマンド ライン、パレット、リボンの関数、または算術関数とは別のグループにあります)。 これらすべての関数グループを 1 つの DLL に入れることはできますが、非常に大きなファイルになります。 そのため、オートデスクは関数をグループに分割するだけでなく、異なる DLL ファイルにも分割しました。 コア関数は別の DLL にあり、現在プロジェクトにリンクされています。 マネージコードとは何ですか? .NET アプリケーションはマネージド コードで構成されており、コンピューターが常に制御します。 .NET 言語では、単にコンピュータをクラッシュさせることはできません (AutoCAD はクラッシュする可能性がありますが、これはそれほど難しいことではありません)。 .NET アプリケーションでエラーが発生すると、Windows はそれをインターセプトし、エラー メッセージを表示し、破損しているものや機能しなくなったものをシャットダウンします。 アンマネージ コードはその逆で、Windows が制御しないコードです。 その際にエラーが発生すると、Windows がクラッシュしたり破損したりする可能性があります。

コードテキスト

コード自体はテキスト形式で記述されます。 これはプロジェクト内に CS ファイルとして保存されます。 CS は C# の略語です (これがどのように発音されるかについては、「プログラミングの開始」の章を参照してください)。 Windows エクスプローラーでこのファイルを検索し、テキスト エディターで開くことができます。 このファイルの先頭には、便利な関数を含む名前空間への参照 (using) があります。 これは必須ではありませんが、あると便利です。 この例では、それは必要さえありません。 using で始まる行をすべて削除しても、コードは引き続き機能します。 赤い下線は表示されず、再度デバッグしても問題は発生しません。 それで、使用とは何ですか? using はコードをより速く書くのに役立ちます。 基本的にはショートカットです。 次の行を見てください。 System.Windows.Forms.MessageBox.Show("やったー! AutoCAD は私が望むことを実行しています!"); 青い文字の MessageBox はオブジェクトです。 このオブジェクトには Show 機能があります。 実行すると、指定されたテキストを含む通知ウィンドウが表示されます。 このようなウィンドウをコード内の数十箇所に表示したい場合は、通知ウィンドウを表示するたびに System.Windows.Forms.MessageBox オブジェクトを参照する必要があります。 を使って短く書くこともできます。 MessageBox オブジェクトは、System.Windows.Forms という名前の名前空間にあります。 名前空間については、この本の後半で詳しく説明します。 ただし、using を使用してこの名前空間をコードの先頭に置くと、未知のオブジェクトに遭遇するとすぐにコード自体が正しい名前空間を探すようになります。 この行を次のように変更します。 MessageBox.Show("やったー! AutoCAD は私が望むことを実行しています!"); 次に Visual Studio で表示されるのは、テキスト MessageBox が青ではなくなり、赤い下線が付けられたことです。 マウスを上に置いたままにすると、現在のコンテキストでは MessageBox が使用できないことを示すメッセージが表示されます。 次に、最初の行の先頭に次の行を追加します。 メッセージボックスのテキストが再び青くなり、赤い線が消えることがすぐにわかります。 青い文字の CommandMethod も同様です。 これもオブジェクトですが、Show などのメソッドはありません。 これは、Autodesk.AutoCAD.Runtime という名前空間に存在します。 [Autodesk.AutoCAD.Runtime.CommandMethod("MyCommand")] という行を次のように置き換えます: [CommandMethod("MyCommand")] 赤い下線が再び表示されます。 今度は、赤下線の部分をマウスの左ボタンで 1 回クリックします。 このテキストの下の左側、または行番号の付いたバーにボタンが表示されます。 それをクリックすると、ドロップダウン メニューが表示されます。 したがって、 using を配置するか(最初のオプション)、現在の CommandMethod テキストを Autodesk.AutoCAD.Runtime.CommandMethod に置き換えるか(2 番目のオプション)を選択できます。 これはまさにあなたが望んでいないことです。なぜなら、あなたがすでに持っていたもので終わることになるからです。

最初のオプションを選択します。 Visual Studio は、新しい using を一番上に配置し、CommandMethod というテキストが再び青色になります。 完全なコードは次のようになります。

using System.Windows.Forms; 
using Autodesk.AutoCAD.Runtime; 

namespace ClassLibrary1 

    public class Class1 
    { 
        [CommandMethod("MyCommand")] 
        public void MyFirstCommand() 
        { 
            MessageBox.Show("Hooray! AutoCAD is doing what I want!"); 
        } // void 
    } // class 
} // namespace 

アプリの動作に関しては、usingを使用しても問題ありません。 むしろ、より効率的にコードを書く機会となります。

デバッグ

コードが機能するかどうかをテストすることをデバッグと呼びます。 デバッグはデバッグ プロセスの開始であり、その目的はエラー (バグ) を見つけることです。 これには、プログラミング エラーの検出だけでなく、アプリケーションの動作が期待どおりであるかどうかも含まれます。 Visual Studio に赤い下線が表示されなければ、アプリケーションは正しく動作していると思われるかもしれませんが、実際に実行してみないとわかりません。 public void MyFirstCommand() { という行を private void MyFirstCommand() { に変更しても、Visual Studio はこれで問題ありません。 これは、両方の行がコード的に正しいためです。 アプリケーションを AutoCAD にロードすると、AutoCAD はコマンドを認識せず、「不明なコマンド "MYCOMMAND"」というメッセージが表示されます。 F1 を押してヘルプを表示します。 パブリックとプライベートの違いについては、後ほど詳しく説明します。 機能するまでコードを復元すると、プライベートが再びパブリックになります。

4. 理論: Visual Studio

この章では、Visual Studio に関するいくつかの理論について説明します。 ただそれを読んで、そこに何が書かれているかを理解するように努めてください。 背景知識を知っておくと常に役に立ちます。

Visual Studio IDE

Visual Studio は、さまざまな言語のコードをアプリケーションに変換するのに役立つアプリケーションです。 この変換はコンパイルと呼ばれます。 これにより、書かれたコードがコンピュータが理解して実行できるファイルに変換されます。 Windows アプリケーション (EXE ファイル)、関数ライブラリ (DLL ファイル)、コンソール アプリケーションなど、さまざまな種類のアプリケーションを作成できます。 後者は、Windows のダイアログ ボックスを使用しないアプリケーションであり、基本的には、まだそれが何であるかを知っている人にとっては昔ながらの DOS プログラムです。 最近では、Visual Studio を使用して携帯電話用の Windows アプリやブラウザー用の Web アプリを作成することもできます。 AutoCAD にロードできるのは関数ライブラリだけであるため、本書では関数ライブラリの作成についてのみ説明します。 IDE はコードを記述する部分です。 IDE は、さまざまな部分に色を使用したり、エラーを早期に検出して表示したりすることで、作成を支援します。 また、IDE には、適切な関数と適切なパラメーターを見つけるのに役立つ IntelliSense と呼ばれる優れた機能が含まれています。



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。