프로그램
캐드 분류

text-edit Lisp 수정 문의(앞에서 부터 수정됐으면…)

컨텐츠 정보

  • 226 조회
  • 2 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

안녕하세요.
단축키 Y를 실행하여 문자를 일괄 변경하는 Lisp을 사용하고 있습니다.
현재 Lisp은 예를 들면 "A1A2A3″라는 문장에서 A를 X로 변경하면 "A1A2X3"로 가장 오른쪽에 있는 문자부터 변경이 됩니다. 제가 원하는 것은 이 Lisp을 사용하여 변경하였을 때 왼쪽부터 순차적으로 변경되는 것 그러니깐 "X1A2A3″로 변경되는 것을 원하거든요… 수정 가능할까요?? ㅠㅠ 
————————————————————————————
(defun C:y (/ sset n index txlist tx newtx newlist tx1)
     (prompt "n Multi TEXTs Change..Pick Texts…..")
     (setq o_txt (getstring  "n ORIG'L TEXT in-put…."))
     (setq n_txt (getstring  "n NEW    TEXT in-put…."))
     (setq o_qty (strlen o_txt))
     (prompt "nPick TEXTs to change…")
     (setq sset (ssget ))
     (setq count (sslength sset))
     (setq osu 0)
     (repeat count
       (COND ((OR (= (cdr (assoc 0 (setq txtin (entget (ssname sset OSU))))) "MTEXT")
                  (= (cdr (assoc 0 (setq txtin (entget (ssname sset OSU))))) "TEXT")
              )
        (setq newtx (cdr (assoc 1 (setq txtin (entget (ssname sset OSU))))) )
          ;;;(setq txtin (entget (ssname sset osu)))
        (setq txt (cdr (assoc 1 txtin)))
        (setq su 1)
        (setq index 0)
          (setq rm-k "")
          (setq rm+k "")
          (setq rmsame nil)
          (setq co (strlen txt))
          (repeat co 
               (setq rmk (substr txt su o_qty))
               (setq rm-k (substr txt 1 (- su 1)))
               (setq rm+k (substr txt (+ su o_qty) co))
               (cond ((= o_txt rmk)
                    (setq f_txt (strcat rm-k n_txt rm+k))
                    (setq rmsame 111)
               ))
               (setq su (+ su 1))
          )
          (if (= rmsame 111) (entmod (subst (cons 1 f_txt) (assoc 1 txtin) txtin)))
       ))
          (setq osu (+ 1 osu))
     )
)

관련자료

댓글 2 / 1 페이지

o레드망고o님의 댓글

(defun c:y ()  (setq OldVarList (list "osmode" "cmdecho" "cmddia" "filedia"))  (setq OldVarValue (mapcar 'getvar OldVarList))  (mapcar 'setvar OldVarList'(0 0 0 0))  (prompt "n Multi TEXTs Change..Pick Texts…..")  (setq o_txt (getstring  "n ORIG'L TEXT in-put…."))  (setq n_txt (getstring  "n NEW    TEXT in-put…."))  (setq sel (ssget (list (cons 0 "*text"))))  (setq k 0)  (repeat (sslength sel)   (setq ss (ssname sel k))   (setq ssn_vl (vlax-ename->vla-object ss))   (setq txt_string (vlax-get-property ssn_vl 'TextString))   (setq ch_str (vl-string-subst n_txt o_txt txt_string))   (vla-put-TextString ssn_vl ch_str)   (setq k (+ 1 k))  )  (setq *error* oer seterr nil)  (mapcar 'setvar OldVarList OldVarValue)  (princ) )

이렇게 한번 사용해보세요.

전체 6,983 / 1 페이지
번호
제목
이름

최근글


새댓글


알림 0