前回は座標データがある場合の話でした。今回は逆に図面から座標を取り出します。
連続したポリラインの座標を取り出すのは比較的簡単です。
連続したポリライン
対象となるポリラインを選択してから、「list」コマンドをコマンドラインに入力すれば、プロパティーが表示されます。
プロパティーは、配置されている画層、面積、延長等の情報が記載されていますが、点の位置にはX座標、Y座標、Z座標が1行ごとに配置されています。1点がエクセルの行に対応しているので、比較的容易にエクセルに読み込むことができます。
取り出したポリラインのデータ
しかしながら、線分場合は、一つの線分ごとにプロパティーが表示されてしまうので、座標だけ取り出すのには工夫が必要です。できれば、ポリラインとして一つに結合させてからの方がずっと楽です。
線分のデータはバラバラ
文字の座標も何かと役に立ちます。文字の座標データを取り出し、同じ場所に文字を展開する、たとえば「No.1」「No.2」「No.3」・・・と並んでいる文字に対応した文字列「(1.00,1.00)」「(1.00,4.00)」「(3.00,5.00)」に置き換えることができるのです。
置き換える場合には、前回に取り上げたように、いったんエクセルに読み込み、前回紹介したスクリプトで文字を配置することになるわけです。
同じ場所に対応する文字列
ところが文字のプロパティーを「list」コマンドで取り出すと、「線分」と同様に、一つのオブジェクトに対してデータが1行になってないので、エクセルとの相性には問題があります。うまく整形して、エクセルに読み込ませるよう工夫してみます。
文字のデータもバラバラ
「list」コマンドでは、コマンドラインに結果を送り込むだけですから、そのデータを保管することが必要です。そこでログファイルを活用しましょう。
「list」コマンドの前に、「logfileon」コマンドを実行することで、コマンドラインに表示される文字がファイルに保存されます。下図では「logfileon」コマンド実行の直後に「list」をタイプしています。なお、作業が終わったら「logfileoff」コマンドで、記録を止めましょう。
ログファイルを活用する
ログファイルは見つけにくい場所に記録されますので、ツールメニュー->オプションにある、ファイルタブで記録場所を確認し、使いやすい場所に変更しておきましょう。
ログファイルはここにある
まずポリラインのデータは、「点の位置 X= 1.00 Y= 1.00 Z= 0.00」の部分を取り出して、テキスト形式のデータ(たとえば「変換用.txt」)として保存します。
次にエクセルを起動し、先に保存した「変換用.txt」を開きます。開く画面では、最初は「.xls」などのエクセルファイルのみを表示するようになっていますから、拡張子が「.txt」を開けるファイルの種類を選択します。
テキストファイルを読み込む時は、ウィザードが表示され、数値や文字列がきちんとセルに収まるようにあれこれ聞いてくれます。この座標データの場合、各数値や文字の間に空白が挟まっていますから、これを区切り文字として指定することにします。下図のように区切る箇所が縦の線で表示されますから、よければ次に進みます。
エクセルで開く
なお、ファイルを読み込んだ後でも「データ->区切り位置」メニューで同様の作業ができますから、細かい調整は後回しでもかまいません。
エクセルに表示されたら「点の位置」「X=」などの不要な列を削除すれば完了です。
先に示したとおり、文字の場合は、ひとつのオブジェクトに対して、1行のデータにはなっていません。ちょっとデータを加工して、エクセルに読み込めるようにしてみます。
まず、「続けるには[Enter]キーを押してください:」の文字を消します。コマンドの実行時、1画面づつ確認できるよう表示が止まるのですが、次の表示に進めるための案内文字が「続けるには[Enter]キーを押してください:」です。オブジェクトのプロパティーの内容とは無関係に挿入されているので、文字の並びの規則を乱すだけです。
次にすべての改行を消します。これは前回に紹介した技で、正規表現が使えるエディターの仕事となります。改行に相当する「\n」を「」に置き換えるわけです。これで、データはすべての改行が無くなり、1行になりました。ウィンドウズ付属のメモ帳の場合は手で消すしかありません。
まず改行を全部消す
今度は、1行にひとつのオブジェクトが対応するように、改行を挿入します。「text」の前に改行が入るように置き換えすることとなります。
これらの処理のおかげで、ひとつのオブジェクトにつき、1行でデータが並ぶようになりました。
「text」の直前で改行を挿入
ポリラインと同様にエクセルで開くのですが、今回は数値だけでなく文字列が含まれていることに注意です。明らかに文字列と判断できれば良いのですが、数値や日付と紛らわしい文字については、「文字列」と指定してやる必要があります。たとえば「0001」は文字列として読み込まないと数値の「1」になってしまいますし、「2/12」という表現は日付と解釈されてしまうでしょう。
エクセルで開く
このように文字の座標もが取り出せました。ちょっと面倒ですが、必要となる点をポリラインで結んで座標を取り出す方法が手っ取り早いようです。
(09.08.10)
この話題に関する情報、ご意見などがありましたら是非お寄せください。
目次