;座標文字列編集（DiaEditFlagID.lsp）

;(R)=ARES

;2024/02/17


;********************:Feb.17.2024
(defun C:DiaEditFlagID ( )
;********************
    (setq Ent (entget (car (entsel "<座標文字列を選択>:")))) ;EntにDXF図形情報のリストを代入
    (if (= (cdr (assoc 0 ent)) "MTEXT") ;選択図形がマルチテキストかどうかチェック
        (progn ;図形がマルチテキストの時の処理
            (setq  Orgtxt (Cdr(Assoc 1 Ent)))
            (setq MyVal 0)
            ;+++++ Pn
            (setq MyValx (vl-string-search "X=" Orgtxt));検索
            (if (= MyValx 0)
                (progn
                    (setq Pn "")
                    (Setenv "Pn" "");測点名なし
                );progn	
                (progn
                    (setq MyVal (+ MyVal 1))
                    (setq  Pn (substr Orgtxt 1 (- MyValx 2)))
                    (Setenv "Pn" Pn)
                );progn
            );if
            ;+++++ Xn
            (setq MyValy (vl-string-search "\PY=" Orgtxt));検索
            (setq  Xn (substr Orgtxt (+ MyValx 3) (- MyValy MyValx 3)))
            (Setenv "Xn" Xn)
            ;+++++ Yn
            (setq MyValz (vl-string-search "Z=" Orgtxt));検索
            (if (>= MyValz 0)
                (progn
                    (setq MyVal (+ MyVal 2))
                    (setq Yn (substr Orgtxt (+ MyValy 4) (- MyValz MyValy 5)))
                    (Setenv "Yn" Yn)
                    (setq  Zn (substr Orgtxt (+ MyValz 3)))
                    (Setenv "Zn" Zn)
                );progn
                (progn
                    (setq Yn (substr Orgtxt (+ MyValy 4)))
                    (Setenv "Yn" Yn)
                    (setq Zn "")
                    (Setenv "Zn" "");Znなし	
                );progn
            );if
            ;+++++
            (setq Result "FALSE")
            (SetDialogueBox)
            (if (= Result "TRUE")
                (progn
                    (setq Orgtxt (strcat "X=" Xn "\\PY=" Yn ))
                    ;++++++ Pn
                    (setq Pn (Getenv "Pn"))
                    (if Pn;<-----(if (/= Pn nil)・・・Pn が nil でないとき
                        (setq MyText (strcat Pn "\\P" Orgtxt ))
                        (setq MyText Orgtxt )
                    );if
                    ;++++++ Zn
                    (setq Zn (Getenv "Zn"))
                    (if Zn;<-----(if (/= Zn nil)・・・Zn が nil でないとき
                        (setq MyText (strcat MyText "\\PZ=" Zn ))
                    );if
                    ;=====================
                    (setq Ent;書き直した文字列をEntに入れ直し
                        (subst;差し替え
                            (cons 1 MyText); 新しい値
                            (assoc 1 Ent); 古い値
                            Ent);
                    );setq
                    (entmod Ent);DXF図形情報を図形に反映
                    ;=====================
                );progn
            );if
        );progn
        (alert "*** 選択エラー：座標文字列を選択して下さい ***") ;図形がマルチテキスト以外の時、メッセージボックスを表示;Else
    );if
    (princ)
);---------------------------



;+++++++++++++++
(defun SetDialogueBox (/ dcl_file dcl_id Act flag)
;+++++++++++++++
    ;=====================
    (setq 
        dcl_file "DiaEditFlagID.dcl"
        dcl_id (load_dialog dcl_file));適宜・・
    ;++++++
    (if (not (new_dialog "DiaEditFlagID" dcl_id));適宜・・
        (progn
            (alert "****  ダイアログボックスが見つかりません  ****")
            (exit));progn
    );if 
    ;=====================
    ;++++++ Pn
    (setq Pn (Getenv "Pn"))
    (if Pn;<-----(if (/= Pn nil)・・・Pn が nil でないとき
        (set_tile "TextBox1" Pn));if
    ;++++++ Xn
    (setq Xn (Getenv "Xn"))
    (set_tile "TextBox2" Xn)
    (mode_tile "TextBox2" 1);使用禁止(Enabled=False)グレーアウト
    ;++++++ Yn
    (setq Yn (Getenv "Yn"))
    (set_tile "TextBox3" Yn)
    (mode_tile "TextBox3" 1);使用禁止(Enabled=False)グレーアウト
    ;++++++ Zn
    (setq Zn (Getenv "Zn"))
    (if Zn;<-----(if (/= Zn nil)・・・Zn が nil でないとき
        (set_tile "TextBox4" Zn));if
    ;++++++

    ;=====================
    (action_tile "accept" "(ProcessRoutine)(done_dialog 1)");適宜・・
    (action_tile "cancel" "(done_dialog 0)")
    ;+++++++
    (setq Act (start_dialog))
    (unload_dialog dcl_id)
    ;=====================
);---------------------------




;+++++++++++++++ 処理ルーチン
(defun ProcessRoutine()
;+++++++++++++++
    ;+++++ Pn
    (setq Pn (get_tile "TextBox1"))
    (Setenv "Pn" Pn)
    ;+++++ Zn
    (setq Zn (get_tile "TextBox4"))
    (Setenv "Zn" Zn)
    (setq Result "TRUE")
);---------------------------





