この件は以前に相当な時間をかけました。本当はAutodeskが提供すべき機能と思うのですが。以下のようにしました。
1. 図面から標高テキストとその位置,端点位置を抽出し,ファイルに書き出す。標高テキストは画層と,テキストが数字と小数点のみでできていること,端点は画層とCircleであることと,その大きさから判断する。
2. 1.の両者を突き合わせて,距離が最短の標高テキストと端点位置を関係づけ,ファイルに書き出す。
3. 2.の関係を線で結んで示す。
4. 2.は単純な処理なので,一つの端点に複数の標高が割り当てられている箇所がある。そのような箇所にマークを付ける。
5. 4.のマークを見ながら割り当てを修正する。5.はオペレーターがマウスで指示を与える対話的プログラム。
6. 結果を読み込み,XYZファイルを作成する。
初めはこれをDynamoでやっていました。が,Dynamoは
1. 必要な機能がない。
2. 動くべきように動かない。
3. 言語DesignScriptはAssociativeという独特な考え方で,自分はExcel的,と解釈している。が,いずれ,行き詰まる。普通の言語の動作であるImperativeに一時的に切り替えることもできるが,ここはImperativeを繰り出さないとダメか,と思うとモチベーションが下がる。
4. 遅い。
5. 落ちる。
と5拍子揃っていますので,見切りをつけ,.NETでやっております。とはいえ,Dynamoを使うのですが,DynamoのPython ScriptとInputとWatchだけを使います。Python Scriptに初めから入っているコードは.NET用にセットアップされています。
「遅い」に関してはサンプルのDynamoを付けました。N×N(N=40)個の正方形を描きます。はじめに(0, 0)と(2800, 1400)を対角線とする長方形を描き,この長方形を画面いっぱいにしておいてから2つのDynamoを実行してみてください。