TOP PAGE > 記事閲覧
測量座標系(Lisp)
投稿日 | : 2018/04/12(Thu) 16:30 |
投稿者 | : かわ |
参照先 | : |
管理人さま
はじめまして
Lisp初心者です。
平面図(グリッド有り)を測量座標にしていのですが
なにかいい方法ありますか?
どうぞよろしくお願いします。
Re: 測量座標系(Lisp)
投稿日 | : 2018/04/13(Fri) 09:41 |
投稿者 | : アルサポ |
参照先 | : |
はじめまして、かわさん。
平面図をグリットをもとに測量座標へ合わせる方法を説明したいと思います。
合わせるには条件として、グリットの座標値が合っていること。
そして、平面図の縮尺がデータ上(用紙上の縮尺は関係ないです)で原寸または1/1000である事が必要です。
それでは合わせる手順はまず、デフォルトの設定では数学座標になっているので、測量座標に設定します。
1.Z軸を回転させます。
メニューの中から「ツール(T)」-「新規CCS(W)」-「Z(Z)」を選択します。
コマンドウインドウに「Z軸の回転を指定>>」と表示されているので「90」と入力します。Y軸(水平)X軸(垂直)に設定されます。
2.X軸を回転させます。
メニューの中から「ツール(T)」-「新規CCS(W)」-「X(X)」を選択します。
コマンドウインドウに「X軸の回転を指定>>」と表示されているので「180」と入力します。Y軸右方向がプラスに設定されます。
3.上記の(1)(2)で測量座標に設定できましたが、CCSに名前を付けておくと便利だと思います。
メニューの中から「ツール(T)」-「ユーザー座標系(CCS)マネージャー(C)」を選択します。
オプションが表示され、「座標系」-「名前指定」の中に、先ほど設定した座標系が「名前なし」という名前で作成されています。
それを「測量座標」とでも名前の変更を行って下さい。
次に、平面図のグリットの(座標値がわかっている)2点を利用して座標に合わせていきます。
1.すべての図形を選択し、「移動」のコマンドを実行します。
基点は、1点目の座標位置を指示します。
移動先を1点目の座標値を入力して移動させて下さい。
2.すべての図形を選択し、「回転」のコマンドを実行します。
基点は、1点目の座標位置を指示します。
コマンドウインドウに「回転角度を指定>>」が表示されているので、「r」を入力、次に「@」を入力します。
「2つ目の点を指定>>」が表示されているので、そこで2点目の座標位置を指示します。
「新しい角度を指定>>」が表示されているので、2点目の座標値を入力して下さい(角度入力ではなく、座標入力でも回転はできます)
この手順で平面図を測量座標に合わせる事が出来ると思います。
これを元にコマンド、またはlispを作成されてみてはどうでしょうか?
例えは、測量座標にするだけならば「^C^C_CCS;w;;z;90;;x;180;」でコマンドを作成出来ます。
Re: 測量座標系(Lisp)
投稿日 | : 2018/04/13(Fri) 09:52 |
投稿者 | : かわ |
参照先 | : |
アルサポさん
ありがとうございます。
参考にさせてもらいやってみるとできました。
ただ、lisp作成がよく分からなくて困っています。
お助けください。
Re: 測量座標系(Lisp)
Re: 測量座標系(Lisp)
投稿日 | : 2018/04/13(Fri) 10:08 |
投稿者 | : アルサポ |
参照先 | : |
すいません。
私としては、ここはARES (JDraf)を中心に情報共有の場にしたいと考えております。
AutoCADはあくまでARES (JDraf)との比較材料として載せております。
Re: 測量座標系(Lisp)
Re: 測量座標系(Lisp)
投稿日 | : 2018/04/23(Mon) 12:38 |
投稿者 | : だい |
参照先 | : |
私の場合は、まずCCS3点のコマンドで座標系の方向を合わせて、
新しい原点の位置を指定≫…ここで図面の座標値がわかっている点(トンボ)等を指定
通過点を使用して正の X-軸 を指定≫…X軸ではなくY軸のプラス方向上の点(方向角90°方向)を指定
CCS XY平面の正Y部分上の点を指定≫…Y軸ではなくX軸のプラス方向上の点(方向角0°方向)を指定
これで座標軸が合いました。(XYは逆です)
そして、CCS原点のコマンドで測量座標の原点を指定します。
: _CCS
デフォルト: ワールド(W)
オプション: エンティティに位置合わせ(E), 名前指定(NA), 前画面(P), ビュー(V), ワールド(W), X, Y, Z, Z軸(ZA) または
原点を指定≫ _Origin
デフォルト: (0.0000,0.0000,0.0000)
新しい原点の位置を指定≫…ここでCCS3点コマンドで指定した原点の座標値をXYと+−を逆にして入力
例)X=-152300,Y=+7500 であれば、"-7500,152300"と入力します。
これで座標系が合いました(※XYは逆です)
↓座標値を引出線記入するLISPコマンドで知りたいポイントの座標値が書き込めます。
------------------------------------------------------------------------------
(defun C:zahyousen_jdraf ( / pt x y d xcoord ycoord xmoji ymoji sa str1 str2)
(setq osm (getvar "OSMODE"))
(setvar "CMDECHO" 0)
(setq pt "0")
(while (/= pt nil)
(setq pt (getpoint "座標取得位置を指示:(右クリックで終了)"))
(setq x (car pt))
(setq y (cadr pt))
(setq xcoord (rtos x 2 4));(setq xcoord (rtos x 2 d))
(setq ycoord (rtos y 2 4));(setq xcoord (rtos y 2 d))
(setq xmoji (strlen xcoord));xcoordの文字数をxmojiに代入
(setq ymoji (strlen ycoord));ycoordの文字数をymojiに代入
(setq sa (abs (- xmoji ymoji)));文字数の差
;xcoordとycoordの文字数を揃えるため、文字数が少ない方にその数だけスペースを追加する
(cond
((< xmoji ymoji)(repeat sa (setq xcoord (strcat " " xcoord ))))
((> xmoji ymoji)(repeat sa (setq ycoord (strcat " " ycoord ))))
);cond
(setq str1 (strcat "X= " ycoord ))
(setq str2 (strcat "Y= " xcoord ))
(setvar "OSMODE" 0)
(command "_leader" "@" )
(getpoint pt "記入位置を指示:(右クリックで座標取得位置の再指示)")
(command "@" ""str1 str2"")
(princ)
(setvar "OSMODE" osm)
)
)
(defun *error* (msg)
(setvar "OSMODE" osm);オブジェクトスナップモードを元に戻す
(setvar "CMDECHO" 1)
(princ)
);*error*
(princ)