この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

autocadだと動かない
(defun C:zahyou_csv ( / dcl_id ZLS)

(setq ZLS (open "C:\\lisp\\zahyou_csv.txt" "r"));使用環境に合わせて正しくファイルパスを記述する事
(if (= ZLS nil)
(setq set_lst (list "P-" "1" "0" "4" "8"));初回 zahyou_csv.txt が存在しない場合
(progn
(setq set_val (read-line ZLS))
(setq set_lst (list set_val))
(while (/= set_val nil)
(setq set_val (read-line ZLS))
(setq set_lst (append set_lst (list set_val)))
);while
(close ZLS)
);progn
);if

(setq settougo_str (nth 0 set_lst))
(setq kaishi_str (nth 1 set_lst))
(setq kinyuu_val (nth 2 set_lst))
(setq h_keta_val (nth 3 set_lst))
(setq y_keta_val (nth 4 set_lst))

(setq kinyuu_data (list "点名のみ" "+座標"))
(setq h_keta_data (list "0" "0.0" "0.00" "0.000" "0.0000" "0.00000" "0.000000" "0.0000000" "0.00000000"))
(setq y_keta_data (list "0" "0.0" "0.00" "0.000" "0.0000" "0.00000" "0.000000" "0.0000000" "0.00000000"))

(setq dcl_id (load_dialog "zahyou_csv.dcl"))
(new_dialog "zahyou_csv" dcl_id "" '(1220 120))

(start_list "kinyuu" 3)
(mapcar 'add_list kinyuu_data)
(end_list)

(start_list "h_keta" 3)
(mapcar 'add_list h_keta_data)
(end_list)

(start_list "y_keta" 3)
(mapcar 'add_list y_keta_data)
(end_list)

(set_tile "settougo" settougo_str)
(set_tile "kaishi" kaishi_str)
(set_tile "kinyuu" kinyuu_val)
(set_tile "h_keta" h_keta_val)
(set_tile "y_keta" y_keta_val)

(action_tile "accept" "(SaveTileVal)(done_dialog 1)");OKボタンの場合
(action_tile "cancel" "(done_dialog 0)");キャンセルボタンの場合

(setq ddiag (start_dialog))
(unload_dialog dcl_id)

(if (= (getvar "DIASTAT") 1)(kaishi));最後に使用したダイアログ ボックスの終了方法が"OK"で閉じたら
(princ)
);zahyou_list


(defun SaveTileVal ()
(setq settougo_str (get_tile "settougo"))
(setq kaishi_str (get_tile "kaishi"))
(setq kaishi0 kaishi_str)
(setq kinyuu_val (atoi (get_tile "kinyuu")))
(setq h_keta_val (atoi (get_tile "h_keta")))
(setq y_keta_val (atoi (get_tile "y_keta")))
);SaveTileVal


(defun kaishi ( / dcl2_id ZLS tenban pt X Y pt2 zero_kosuu xcoord ycoord sa str1 str2 str3 txy moto ato)
(setq osm (getvar "OSMODE"))
(setvar "CMDECHO" 0)
(setq ZL (open "C:\\lisp\\zl.csv" "w"));書き込み用にファイルを消去して開く
(if (= ZL nil)
(setq ZL (open "C:\\lisp\\zl.csv" "a"));ファイルが存在しないときは作成して開く
);if
(write-line "// ARES座標読み取りデータ//" ZL)

(setq tenban "0")
(setq pt "0")
(setq pt2 "0")
(while (/= pt nil)
(initget 1)
(command "_ID" pause)
(setq pt (getvar "lastpoint"))
(setq X (cadr pt))
(setq Y (car pt))

(setvar "OSMODE" 0)
(setq pt1 (trans pt 1 0))
(command "_ucs" "w")
(command "_leader" pt1)
(setq pt2 (getpoint pt1 "記入位置を指示:(右クリックで座標取得位置の再指示)"))
(setvar "OSMODE" osm)


(setq zero_kosuu(- (strlen kaishi_str)(strlen (itoa (atoi kaishi_str)))))

(setq str1 (strcat settougo_str kaishi_str))

(setq xcoord (rtos X 2 h_keta_val))
(setq ycoord (rtos Y 2 h_keta_val))
(setq sa (abs (- (strlen xcoord)(strlen ycoord))));文字数の差
(cond ;xcoordとycoordの文字数を揃えるため、文字数が少ない方にその数だけスペースを追加する
((< (strlen xcoord)(strlen ycoord))(repeat sa (setq xcoord (strcat " " xcoord ))))
((> (strlen xcoord)(strlen ycoord))(repeat sa (setq ycoord (strcat " " ycoord ))))
);cond

(setq str2 (strcat "X= " xcoord ))
(setq str3 (strcat "Y= " ycoord ))

(if (= kinyuu_val 0)
(command pt2 "" str1 "")
(command pt2 "" str1 str2 str3 "")
)
(command "_ucs" "p")
(princ)

(if (/= pt2 nil)
(progn
(setq tenban (itoa (+ (atoi tenban) 1)))
(setq txy (strcat tenban "," str1 "," (rtos X 2 y_keta_val) "," (rtos Y 2 y_keta_val)));文字列 [点番,点名,X座標,Y座標]
(write-line txy ZL)
(setq moto (strlen (itoa (atoi kaishi_str))));開始値の数値としての文字数
(setq kaishi_str (itoa (+ (atoi kaishi_str) 1)))
(setq ato (strlen kaishi_str));開始値を1増やした時の数値としての文字数
(setq zero_kosuu (- zero_kosuu (- ato moto)));開始値が1桁繰り上がっても全体文字数を変えない為
(repeat zero_kosuu (setq kaishi_str (strcat "0" kaishi_str)))
)
)

(setq ZLS (open "C:\\lisp\\zahyou_csv.txt" "w"));使用環境に合わせて正しくファイルパスを記述する事!
(write-line settougo_str ZLS)
(write-line kaishi_str ZLS)
(write-line (itoa kinyuu_val) ZLS)
(write-line (itoa h_keta_val) ZLS)
(write-line (itoa y_keta_val) ZLS)
(close ZLS)
);while


);kaishi


(defun *error* (msg)
(close ZL)
(setvar "CMDECHO" 1)
(setvar "OSMODE" Osm);オブジェクトスナップモードを元に戻す
(princ msg)
(princ)
);*error*

(princ)

--------------
/* zahyou_csv.dcl - dcl file for zahyou_csv.lsp program */

zahyou_csv :dialog
{
label = "座標値取得CSV出力";
:column
{
:edit_box
{
label = "接頭語 ";
key = "settougo";
width = 8;
}

:edit_box
{
label = "開始値 ";
key = "kaishi";
width = 8;
}

:popup_list
{
label = "記入項目";
key = "kinyuu";
width = 10;
}

:popup_list
{
label = "表示桁";
key = "h_keta";
width = 10;
}

:popup_list
{
label = "有効桁";
key = "y_keta";
width = 10;
}

}

/* OK or CANCEL */
spacer;
//ok_cancel;
:row
{
:button
{
label = "開始";
is_default = true;
key = "accept";
width = 4;
fixed_width = true;
}

//:spacer { width = 1; }

:button
{
label = "終了";
is_cancel = true;
key = "cancel";
width = 4;
fixed_width = true;
}
}
}
-----------
AutoLispで、書かれたコードなのですがCADの種類が違っていて正常に動きません。
Autocadで、動作出来る様に修正してほしいです。
宜しくお願い致します。
  • たー
  • 2019/03/10 (Sun) 21:24:10
Re: autocadだと動かない
C:\lispというフォルダがないとファイルを作れません。

3行目
(setq ZLS (open "C:\\lisp\\zahyou_csv.txt" "r"));使用環境に合わせて正しくファイルパスを記述する事
  • zukki-
  • 2019/03/11 (Mon) 08:04:39
Re: autocadだと動かない
Cドライブの下には、「Lisp」フォルダは作成済みです。
ファイル自体は、作成されるのですが中身が空なんです。
  • ななし
  • 2019/03/11 (Mon) 12:58:04
Re: autocadだと動かない
ファイルは作成されるが書き込めてないですか。
そんなアクセス制御あるのかなぁ。

ほかのところで引っかかっているとしてエラーメッセージはどんなのでてますか?
  • zukki-
  • 2019/03/11 (Mon) 13:27:47
Re: Re: autocadだと動かない
エラーメッセージは、どこを見れば確認出来ますか?
  • ななし
  • 2019/03/21 (Thu) 06:36:09
Re: autocadだと動かない
基本的にAutoCADのコマンドラインを見ていればいいかと、
VLISPを使っていればそっちのほうがいいけど。
  • zukki-
  • 2019/03/25 (Mon) 13:10:57

返信フォーム






プレビュー (投稿前に内容を確認)