初心者向けのLISP解説、今回は作成したコードを1つずつ実行して、変数がどう使われているか確認します。 コードをステップごとに実行してみよう前回作成したLISP(以下、plusone.lspと表記)の中で、それぞれの変数にどんな値が入るのか、ステップごとに実行しながら、確認してみましょう。VLISPエディタには以下のコードが表示されています。(defun c:plusone ( / ename elist dpair txtval num Newnum Newelist Newtxtval Newpair) (setq ename (car (entsel))) (setq elist (entget ename)) (setq dpair (assoc 1 elist)) (setq txtval (cdr dpair)) (setq num (atoi txtval)) (setq Newnum (+ 1 num)) (setq Newtxtval (itoa Newnum)) (setq Newpair (cons 1 Newtxtval)) (setq Newelist (subst Newpair (assoc 1 elist) elist)) (entmod Newelist) (princ))まず、2行目の(の前にカーソルを置き、デバッグ→ブレークポイントを切り替えを選びます。そうすると、(の背景色が赤になります。ブレークポイントを設定すると、その位置でコードの進行を一時停止することができます。次に、enameの文字列の中にカーソルを移動しダブルクリックします。そうするとename全体が選択されるので、デバッグ→ウォッチを追加を選びます。ウォッチが開き、ENAME = nilと表示されます。残りの変数も同じようにしてウォッチに追加してください。コードの画面と、ウォッチが図のようになったら、エディタ内のテキストをロードします。コマンドラインにplusoneと入力すると、VLISPエディタの2行目の表示が反転し、コマンドが止まります。ここからステップごとに実行します。デバッグ→ステップ インをクリックするかF8キーを押してください。3回続けるとコマンドラインに「オブジェクトを選択:」と表示されるので、数字を選択します。そうすると再度VLISPエディタがアクティブになるので、またステップ インしていきます。もう1度2行目全体が反転表示になると、ウォッチのENAMEに値が入っています。このままステップ インを進め、(princ)が反転表示されたところで一旦ストップします。ウォッチがこんな風になっているでしょうか。ウォッチに表示された内容を見てみましょう。enameには図形名が入り、elistにはオブジェクトのプロパティを示すリストが入っています。dpairはelistから文字内容を示す1を持つリストを取得し、txtvalでそのセットの後ろだけを抜き出しています。ここで、数字が” ”で囲まれているのは、文字扱いされているということです。そして、numで数字に変換しているので、” ”がなくなっています。Newnumで1足された数字となり、Newtxtvalで今度は文字扱いに変換、そして、1とのリストを作成してNewpairに入れて、Newelistでは、elistの1を持つリストが置き換えられています。elistとNewelistはウォッチでは見づらいとので、違う表示をしてみましょう。ウォッチのELISTとNEWELISTそれぞれを選択してダブルクリックしてください。検査という別のウインドウが表示されます。文字内容を示す1を持つリストが、elistでは(1 . “6”)、Newelistでは(1 . “7”)になっていることを確認できます。このようにして、コードの中で変数にどのような値が入っているかを、確認することができます。ただし、これらはローカル変数として定義されているため、コマンドが終了するとすべての値がnilに戻ります。なので、確認するためにはブレークポイントを設定して、処理を止める必要があります。変数でなくても、ウォッチに追加は可能です。関数式そのものを追加することもできるので、例えば(atoi txtval)を選んで追加すると、numと同じ値が表示されます。それぞれの変数の値が確認できたので、ステップ インをあと少し繰り返して、コマンドを終了しましょう。コード全体が反転表示され、選んだ数字が+1されたらコマンド終了です。ウォッチの各変数がnilになっています。ブレークポイントを設定した位置にカーソルを移動し、デバッグ→ブレークポイントを切り替えでブレークポイントを解除して保存します。ブレークポイントの解除を忘れると、使うときにその位置で止まってしまうので、注意してください。また、ウォッチもウインドウをクリアできれいにしておきましょう。 DXFグループコードを知ろう「文字内容を示すのは、1とセットなったリスト」、これはどうしたら分かるのかというと、ヘルプのDXFリファレンスで調べることができます。DXFリファレンスは、ヘルプ→開発者用ドキュメント→一般的なリソースの中にあります。DXFリファレンスを開いたら、概要 - DXF の ENTITIES セクションを開きます。AutoCADのデータで作図される文字や線分、寸法などはエンティティと呼びます。まずは図形に共通のグループ コード(DXF)を見てみましょう。0:図形タイプ6:線種名8:画層名62:色番号などがあります。次に概要 - DXF の ENTITIES セクションに戻り、TEXT[文字記入] (DXF)のところを見てみましょう。1のところは、既定値(文字列自体)となっています。このように、変更したいプロパティのグループコードを調べ、そのグループコードを持つリストを置き換えることで、オブジェクトを操作することができます。共通のグループコードでない場合は、同じ番号でも違う意味を持つので、注意が必要です。著者についてAUG-JPはAutodesk製品のユーザーで構成された独立したコミュニティです。 ユーザ同士の助け合いの場として、ウェブサイト、コミュニティ(SNS)などを運営しています。 多くの企業様にご協力を頂きながら全国各地でユーザ参加型の「学びと交流」を目的としたイベント 「AUG-JP WorkShop」を開催したり勉強会をサポートしています。Twitterでフォローする ウェブサイトを見る このライターによる他のコンテンツ