8.03 座標を活用

8.03.0 座標データをキャドで活用する

Autocad LTの標準機能だけで座標は扱えるのです。

線を引く

コマンドラインの活用

 仕事ではAutocad LTとMicrosoft Excelを使うことが多いのですが、キャドとエクセル間のデータのやり取りにはコツが必要になります。そのために各種アドインソフトが有償、無償を含めて数多くありますが、揃えるのは大変ですし、そのアドインソフトが入ったソフトしか利用できないのは不便なことです。キャドとエクセルの基本機能だけでなんとかならないか、試行錯誤してみました。

 座標を使用して正確に線を引くときは、まずコマンドラインに「line」とタイプ(文字を入力)し、[ENTER]を押します。すると「次の点を指定」と指示が出てきますので、X座標とY座標の間に「,」を入れて「23,35」とタイプします。また「次の点を指定」と指示がでてきますので、次の点として「43.23,63.2」をタイプします(小数でも良い)。これで線分が引けました。

 「line」の代わりに「l」1文字だけでも大丈夫です。ポリラインとしたいなら、「pline」です。

コマンドラインに入力
オートキャドのコマンドライン

エクセルデータの活用

 座標データがあるのなら、自動化したくなります。自動化といっても特別な言語を使ったりするわけではありません。手入力で使用した「line」とか「23,35」といった文字列をコマンドラインに連続して貼り付ければよいのです。

 連続する線分の場合、一番上のセルに「line」といれ、次の行からX座標とY座標の組(「23,35」のような)を1行に1組づつ並べていくと準備完了です。

連続する線分の例
エクセル表1

 セルA2、セルB2 はそれぞれX座標、Y座標を入れます。セルC2は文字を結合する式を入力して「23,35」が表示されればよいのです。

 ちなみにセルC2には「=A2&","&B2」という文字列が入っています。

 入力が終わったら、C1からC4を選択してコピーし、キャドのコマンドラインに貼り付けます。C1の文字列とC2の文字列の間には改行が挿入されていて、手入力で[ENTER]を実行するような効果があります。C4を含めるということで終了の合図としての[ENTER]を挿入することとなります。

[ENTER]の入力その1

 ばらばらの線分をちりばめるときは、1行に1つずつコマンドを並べる方法となります。「line」「23,35」「43.23,63.2」を合体させた文字列を一番右側のセルに表示させることになります。

ただ[ENTER]の入力でつまずくかもしれません。「line」の次と「23,35」の次は、[ENTER]を挿入する必要がありますが、セルの中の文字は簡単に[ENTER]になってくれません。いくつかの方法がありますが、まず簡単なのが半角スペースを代わりにすることです。これは手で入力する際も利用できる技で、「line」半角スペース「23,35」・・・と、入力してやればよいのです。

ばらばらの線分の例
エクセル表2

 E1には「="line "&A1&","&B1&" "&C1&","&D1&" "」が入っています。最後の半角スペースは2行以上一括で実行するときに必要になります。

文字を配置する

すべてのコマンドで応用可能

 コマンドの技は、線を引くだけのものではありません。オートキャドコマンドのほとんど(すべて?)はメニューやボタンのほかにコマンドラインからタイプすることで実行できます。

 重宝するのが文字の入力です。各座標に対して別々の文字列配置するのに威力を発揮します。どのようなコマンドになるのかは実際に自分でコマンドをタイプして研究してみてください。

[ENTER]の入力その2

 ここでまたも問題となるのが、改行の問題です。半角スペースでは単に文字列の一部と認識されてしまい、「実行」と解釈されないことがあるのです。次の方法としてエクセルのセル内に改行記号を入力する方法があります。「CHAR(10)」とセル内で入力すると改行になるのです。ただし、もうひとつ難問があります。改行を含むセルをコピーすると文字列の前後に「"」が付加されてしまうのです。「text・・・」と入力するつもりが「"text・・・」となるわけですからだめです。解決策としては一度テキストエディターに貼り付けて、置換コマンドですべての「"」を除去する方法があります。

文字の例
エクセル表3

 この場合、セルD1には「="text j bl "&A1&","&B1&" 8 0"&CHAR(10)&C1&CHAR(10)」が入ります。「CHAR(10)」の部分が改行となります。ちなみにこのコマンドは高さ8、回転角度0、左下基点で、内容が「文字列1」となります。

[ENTER]の入力その3

 どうせ、テキストエディターに貼り付けて前処理をするのでしたら、「CHAR(10)」なんて面倒な式を入れる代わりに、「●」みたいな簡単な目印を入力しておいて、置換コマンド実行の際に「●」を改行に変換するというのも手です。私が愛用している秀丸エディター(シェアウェア)では正規表現オプションをオンにして、置換後を「\n」とすれば、改行に置き換わります。

秀丸の例
秀丸の例

(09.06.15)

http://hint-eng.jp/jdy07317/

8.03.1 座標を取り出す

座標データを取り出したい

 前回は座標データがある場合の話でした。今回は逆に図面から座標を取り出します。

ポリラインの場合

 連続したポリラインの座標を取り出すのは比較的簡単です。

連続したポリライン
説明図a

 対象となるポリラインを選択してから、「list」コマンドをコマンドラインに入力すれば、プロパティーが表示されます。

 プロパティーは、配置されている画層、面積、延長等の情報が記載されていますが、点の位置にはX座標、Y座標、Z座標が1行ごとに配置されています。1点がエクセルの行に対応しているので、比較的容易にエクセルに読み込むことができます。

取り出したポリラインのデータ
説明図b

 しかしながら、線分場合は、一つの線分ごとにプロパティーが表示されてしまうので、座標だけ取り出すのには工夫が必要です。できれば、ポリラインとして一つに結合させてからの方がずっと楽です。

線分のデータはバラバラ
説明図c

文字の場合

 文字の座標も何かと役に立ちます。文字の座標データを取り出し、同じ場所に文字を展開する、たとえば「No.1」「No.2」「No.3」・・・と並んでいる文字に対応した文字列「(1.00,1.00)」「(1.00,4.00)」「(3.00,5.00)」に置き換えることができるのです。

 置き換える場合には、前回に取り上げたように、いったんエクセルに読み込み、前回紹介したスクリプトで文字を配置することになるわけです。

同じ場所に対応する文字列
説明図d

 ところが文字のプロパティーを「list」コマンドで取り出すと、「線分」と同様に、一つのオブジェクトに対してデータが1行になってないので、エクセルとの相性には問題があります。うまく整形して、エクセルに読み込ませるよう工夫してみます。

文字のデータもバラバラ
説明図e

エクセルで活用する

ログファイルを保存する

 「list」コマンドでは、コマンドラインに結果を送り込むだけですから、そのデータを保管することが必要です。そこでログファイルを活用しましょう。

 「list」コマンドの前に、「logfileon」コマンドを実行することで、コマンドラインに表示される文字がファイルに保存されます。下図では「logfileon」コマンド実行の直後に「list」をタイプしています。なお、作業が終わったら「logfileoff」コマンドで、記録を止めましょう。

ログファイルを活用する
説明図f

 ログファイルは見つけにくい場所に記録されますので、ツールメニュー->オプションにある、ファイルタブで記録場所を確認し、使いやすい場所に変更しておきましょう。

ログファイルはここにある
説明図g

ポリラインの読み込み

 まずポリラインのデータは、「点の位置 X= 1.00 Y= 1.00 Z= 0.00」の部分を取り出して、テキスト形式のデータ(たとえば「変換用.txt」)として保存します。

 次にエクセルを起動し、先に保存した「変換用.txt」を開きます。開く画面では、最初は「.xls」などのエクセルファイルのみを表示するようになっていますから、拡張子が「.txt」を開けるファイルの種類を選択します。

 テキストファイルを読み込む時は、ウィザードが表示され、数値や文字列がきちんとセルに収まるようにあれこれ聞いてくれます。この座標データの場合、各数値や文字の間に空白が挟まっていますから、これを区切り文字として指定することにします。下図のように区切る箇所が縦の線で表示されますから、よければ次に進みます。

エクセルで開く
説明図h

 なお、ファイルを読み込んだ後でも「データ->区切り位置」メニューで同様の作業ができますから、細かい調整は後回しでもかまいません。

 エクセルに表示されたら「点の位置」「X=」などの不要な列を削除すれば完了です。

文字の読み込み

 先に示したとおり、文字の場合は、ひとつのオブジェクトに対して、1行のデータにはなっていません。ちょっとデータを加工して、エクセルに読み込めるようにしてみます。

 まず、「続けるには[Enter]キーを押してください:」の文字を消します。コマンドの実行時、1画面づつ確認できるよう表示が止まるのですが、次の表示に進めるための案内文字が「続けるには[Enter]キーを押してください:」です。オブジェクトのプロパティーの内容とは無関係に挿入されているので、文字の並びの規則を乱すだけです。

 次にすべての改行を消します。これは前回に紹介した技で、正規表現が使えるエディターの仕事となります。改行に相当する「\n」を「」に置き換えるわけです。これで、データはすべての改行が無くなり、1行になりました。ウィンドウズ付属のメモ帳の場合は手で消すしかありません。

まず改行を全部消す
説明図i

 今度は、1行にひとつのオブジェクトが対応するように、改行を挿入します。「text」の前に改行が入るように置き換えすることとなります。

 これらの処理のおかげで、ひとつのオブジェクトにつき、1行でデータが並ぶようになりました。

「text」の直前で改行を挿入
説明図j

 ポリラインと同様にエクセルで開くのですが、今回は数値だけでなく文字列が含まれていることに注意です。明らかに文字列と判断できれば良いのですが、数値や日付と紛らわしい文字については、「文字列」と指定してやる必要があります。たとえば「0001」は文字列として読み込まないと数値の「1」になってしまいますし、「2/12」という表現は日付と解釈されてしまうでしょう。

エクセルで開く
説明図k

 このように文字の座標もが取り出せました。ちょっと面倒ですが、必要となる点をポリラインで結んで座標を取り出す方法が手っ取り早いようです。

(09.08.10)