2015年7月7日

AutoCADとエクセルの連携

「AutoCADとエクセルの連携」と書くと何やら高度そうですが、全然難しいことはしません。

AutoCADでよくある”やりたいこと”の一つに、「エクセルで作成した複数の座標をAutoCADにプロットしたい」というものがあります。
10点位なら一つ一つやってもいいのですが、数十点とかなると一つ一つやっていては日が暮れてしまいます。

と、いうことで半自動的にプロットする手順を紹介しておきます。ちなみに”ほぼ全自動”はLispやVBAで書けば可能ですが、そこは今のところ置いておきましょう。

やることは至って単純。座標データをAutoCADのコマンドラインが読める形式に直して、コピペすればOKなんです。

 

わかりやすくするため、以下の座標で描画してみます。

この座標をプロットしてみます

この座標をプロットしてみます

 

エクセルでの座標一覧。

エクセルでの座標一覧

エクセルでの座標一覧


 

AutoCADのコマンドラインに流すには、座標を一つのセル内にカンマ”,”で繋げます。
文字列の接続には”&”を使用し、文字列はダブルクォーテーション””内に書きます。

カンマで繋ぎます

カンマで繋ぎます

 

しかし、上記は間違い
AutoCADは数学座標系で土木は測地座標系。XとYを入れ替える必要があります。正解は以下の通り。

XとYを入れ替えます

XとYを入れ替えます

 

ドラッグしてすべての行に入力。

ドラッグして全ての行に同様の処理

ドラッグして全ての行に同様の処理

 

AutoCADにはLINEコマンドで描画してみましょう。
エクセルで1行目にコマンド名を入力。エイリアスの”l”でもOK。
そしてコマンドを含む座標をコピーします。

コマンドと共にコピー

コマンドと共にコピー

 

そして、AutoCADのコマンドラインにペースト

コマンドラインに貼り付け

コマンドラインに貼り付け

すると描画されます!

座標通りにプロット

座標通りにプロット

これなら何点あっても簡単に描画できます。

では、Lineコマンド以外はどうでしょう?

例えばPointコマンド。以下ではNGなんです。

このPointコマンドはNGなんです

このPointコマンドはNGなんです

 

理由はPointコマンドでは座標の連続入力は出来ないからなんです。
ということで、Pointコマンドの時は以下の様に入力しましょう。”point”の後ろにはスペースがあります。コマンドラインではスペースがエンターの役割を果たします。片手でコマンド入力が出来るようにするための仕様なんでしょうね、きっと。

スペースを忘れずに

スペースを忘れずに

 

Pointでもいいんですが、CAD上では点は点群データでも無い限り見づらいですよね。
なので、Circleコマンドを使用して、円でプロットするのもアリだと思います。
ただし、Circleコマンドでは最後に円の直径を指定する必要がありますので、以下の様に入力しましょう。
円の直径は10としています。

circle+スペース+座標+スペース+直径、ということですね

circle+スペース+座標+スペース+直径、ということですね

 

以下、赤いPointとCircleで描画してみました。

やはり点は見落とすと思う

やはり点は見落とすと思う

 

知っていれば単純な話なのですが、知らないと膨大な時間がかかってしまう作業になってしまいます。
私もこれを知るまではひたすら座標を入力したことがあったもので…(;´Д`)

このエントリーをはてなブックマークに追加
Pocket

10 thoughts on “AutoCADとエクセルの連携”

  1. Autocad LTの限界

    初めまして。
    cadとexcelの連携に関してお聞きしたいことがあり、連絡させていただききました。

    マルチテキストコマンドをexcelにて記述したのですが、うまくいきませんでした。文字入力を求められるところまでは問題ないのですが。

    よろしければ記述の仕方を教えていただけないでしょうか?

    1. 蒲谷 淳吾

      Autocad LTの限界様
      コメントありがとうございます。
      返信遅れて申し訳ありません。

      Excelからのコピペは時々失敗する場合があるんですよね。
      ちなみに、記事にあったcircleコマンドを実行するときの記述方法は以下の通りです。

      < ↓ここから>
      circle 100,100 10
      circle 300,100 10
      circle 300,200 10
      circle 100,200 10
      < ↑ここまで>

      上記をコピーして、コマンドラインにペーストしてみてはいかがでしょうか?
      最後の行は改行も含めてください。

  2. 藏本優子

    はじめまして、座標値データの活用でこちらのサイトを利用いたしました。
    とてもわかりやすく、ためになりました。ありがとうございます。

    すみませんが、同様に座標番号を入力することは可能でしょうか?
    1.No.1から連番のテキストとなります。
    2.挿入位置は座標値データと同じです。

    改行問題なのか不明ですが、CAD上では「文字列の角度を指定 : 0」で止まってしまいます。
    よろしければ、ご教示いただけますようお願いします。

    1. 蒲谷 淳吾

      藏本優子様
      ご返事遅くなり申し訳ありません。

      試してみたのですが、結論から言うとこの方法で文字を入力することは出来ませんでした。
      この方法は、EXCELを利用してコマンドラインへのテキストデータの入力を行うことで、コマンドの入力を省力化しています。

      AutoCADでの文字入力は、コマンドライン上ではなく図面上に表示されるテキストボックスに文字を入力する為に、今回の方法では不可能ということになります。

      文字入力を自動化するにはLispが必要になるということですね・・・
      お役にたてず申し訳ありません。

  3. たまおっち

    テキスト入力もできますよ。
    _-text X,Y 0 表記文字
    これで大丈夫です。
    例えば、
    _-text -50160399,-52918219 0 T-10
    こんな感じです。

    1. 蒲谷 淳吾

      たまおっち様
      コメントありがとうございます。

      早速試してみたところ、問題は別の点にありました。
      TEXTコマンドによる文字入力の方法を、“[文字を編集]ダイアログ ボックス”に入力すると期待通り動作され、“インプレイス テキスト エディタ”で実行すると文字入力の時点で処理がストップしました。

      具体的に言うと、文字入力のシステム変数を1にするということで、”TEXTED”コマンドで1を指定する必要がありました。

      また、改行コードもテキストとして入力されてしまうため、連続して実行したい場合、以下のように一行開けるとEXCELからの連続入力が可能でした。
      _text -178,-6127 500 0 No.1

      _text -1644,968 500 0 No.2

      たまおっち様のできる、というご意見から試行錯誤した甲斐がありました。
      ありがとうございますm(_ _)m

  4. たすかった

    主様、たまおっちさん
    ありがとうございます。

    いろいろ試行錯誤しておりましたが、
    文字列が2行以上になり、できなかった。
    このブログにたどり着けて、やっと解決しました。

    textの前につく「_-」が肝だったんですね!!

    1. 蒲谷 淳吾

      たすかった様
      コメントありがとうございます。

      テキスト入力については、また別エントリーでまとめたいと思います。

  5. 佐藤

    主様

    エクセルからの連続入力がしたく、ここに辿り着きました。
    「_text -178,-6127 500 0 No.1」の部分のエクセルへの
    入力はどの様な記入をするのでしょうか?
    大変すみませんが、教えてください。

    1. 蒲谷 淳吾

      佐藤様
      コメントありがとうございます。

      エクセルへの入力は一つのセル内にコマンドを入力すればOKです。
      ただ、文字列を入力する場合は、入力した文字列を確定させるために、「改行」が必要となります。
      _text -178,-6127 500 0 No.1

      _text 0,0 500 0 No.2

      上記の様に改行目的で一行空けてエクセルを作成し、AutoCADにコピペすればOKです。

      システム変数”TEXTED”を”1″にするのを忘れないようにしてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)