CAFE

★ CAD/LISP/분과 Q&A

Re:모든문자를 지정한 문자스타일로 모두변경하는 리습인데 궁금한점 여쭙니다

작성자달수|작성시간09.12.06|조회수1,245 목록 댓글 17

 

님이 올려주신 리습은 (command "change") <= 명령으로 사용했는데 시간이 오래 소요되네요..

원본에 기초해서 방법1)로 새로 만들었습니다. 

문자 100개 정도 글꼴 변경하는 시간이  원본보다 몇십배 빨라지네요..

만들고 보니 문제점이 있네요..현재 도면안의 모든 문자를 기본글꼴로 무조건 변경이 되어서

방법2)로 또 만들었습니다.

 

방법2)는  바꾸고자하는 문자만 선택하고...또 기본글꼴로 무조건 변경시키지 않고 현 도면내 문자중에서 원하는 글꼴이 있으면

그걸 선택해서 바뀌게끔 했습니다.

 

;방법1) 

(defun c:tsa (/ ssg ind sn)
  (princ " [*** 모든 문자스타일 기본글꼴로 변경 ***]")(terpri)
  (command "undo" "be")
  (setq ssg (ssget "X" '((0 . "TEXT"))))
  (if ssg
    (progn
      (command "style" "기본" "romans.shx,whgtxt.shx" "0" "1" "0" "n" "n" "n")
      (setq ind 0)
      (repeat (sslength ssg)
        (setq sn (ssname ssg ind))
        (entmod (subst (cons 7 "기본")(assoc 7 (entget sn))(entget sn))) ;<= change와 entmod 속도차이가 엄청크네요..
        (setq ind (+ ind 1))
      )
    )
  )
  (command "undo" "e")
  (princ (strcat "\n " (rtos (sslength ssg) 2 0) "개의 문자를 기본 글꼴로 변경시켰습니다."))(prin1)
)
 

;방법2)
(defun c:ts (/ ssg ssg2 st ind sn)
  (princ " [*** 문자스타일변경 ***]")(terpri)
  (command "undo" "be")
  (setq ssg (ssget '((0 . "TEXT"))))
  (if ssg
    (progn
      (princ "\n 다른 스타일의 문자선택 : ")
      (setq ssg2 (ssget ":S" '((0 . "TEXT"))))
      (while (= ssg2 nil)
        (princ "\n 문자가 선택되지 않았습니다.")
        (princ "\n 다른 스타일의 문자선택 : ")
        (setq ssg2 (ssget ":S" '((0 . "TEXT"))))
      )
      (setq st (cdr (assoc 7 (entget (ssname ssg2 0)))))
      (setq ind 0)
      (repeat (sslength ssg)
        (setq sn (ssname ssg ind))
        (entmod (subst (cons 7 st)(assoc 7 (entget sn))(entget sn)))
        (setq ind (+ ind 1))
      )
    )
  )
  (command "undo" "e")
  (princ (strcat "\n " (rtos (sslength ssg) 2 0) "개의 문자를 " st " 글꼴로 변경시켰습니다."))(prin1)
)

 

조만간에 문자편집 공용리습을 아래 그림처럼 하나 만들까 합니다.

 

 

 

* 문자객체를 선택하면 기본적으로 문자의 내용을 좌측화면 가운데 네모칸에 보여줍니다. 

* 버튼명령들은 즉시 명령이 실행되고 토클버튼 또는 텍스트네모칸은 확인버튼을 눌러야 실행됩니다. 

 

화면의 좌측메뉴 

1) 레이어필터는  선택한 문자중에서 특정레이어에 속하는 문자내용만 보여줌..

2) 리스트중에서 하나 또는 다중으로 선택하고 네모칸에 글자를 넣어서 변경버튼을 클릭하여 수정시킴..

3) 리스트중에서 하나 또는 다중으로 선택하고 대치를 클릭하면 화면에서 특정문자를 클릭해서 수정시킴..

4) 연속대치는 리스트의 내용순서대로 화면에서 문자를 클릭하면서 수정시킴..

5) 내보내기는 문자의 내용을 텍스트 화일로 내보냄.. 

 

화면의 우측메뉴

1) 유형,크기,레이어,칼라의 Pick버튼은 다른 문자를 선택해서 동일하게 만듦..

    Pick하지 않을시 네모칸에 직접입력..또는 중간에 풀다운 리스트나 이미지에서 선택

2) 정렬은 설명이 필요없을듯..

3) 문자바꾸기 및 문자추가도 설명이 필요없을듯..  

 

각 기능들의 단축키도 만들어서 특정기능만 빠르게 실행되게 만들예정.. 

 

대부분 직감적으로 사용하면 될거같구여..이 글을 보시는 님들 중에서 보완사항이나 추가사항이  있으시면 댓글올려주세요~! 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자코봉히 | 작성시간 09.12.07 달수님 기대하고 있을게요 ^^
  • 작성자암튼 | 작성시간 09.12.07 달수님 고맙습니다 연일 야근에 외근에...이제 확인하고 인사드립니다..^^ 꾸벅
  • 작성자겁쟁이 | 작성시간 13.11.18 감사합니다.....잘 쓰겠습니다
  • 작성자하나:) | 작성시간 16.04.19 속도가 엄청 빠르네요.. 변환중인줄 알고 기다렸다는..? 하하.. 아무튼 감사합니다.
  • 작성자단월선생 | 작성시간 18.02.20 방법 1)의 방법에서 STANDARD 에 txt,whgtxt 로 변경할수 있을까요? 수정해보고있는데 난관에 봉착했습니다..ㅡ
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼