티스토리 뷰

반응형

오토리습은 아주 훌륭한 프로그램 같습니다. 이젠 캐드 프로그램까지 손대게 되네요. 프로그램 코딩은 힘든 작업이지만, 늘 하면서 보람도 느끼는 작업이네요.

최대한 빠른시간에 무엇보다도 정확하게 하는 것이 중요하겠지요. 잘못되면 큰 손해가 나오는 것이 설계니까요.

 

간단하게 두 텍스트를 합치는 리습이 있어서 소개합니다.

명령어 "td" 입력하고 객체 1번 선택 엔터, 2번선택 엔터 치면 1번객체에 2번객체가 달라붙는 방식입니다.

간단하지만, 유용할 것 같습니다.

 

위와 같이 떨어져있는 텍스트 문장을 이젠 마법처럼 함께 붙여줍니다.

td명령어는 임의로 만든 오토리습 명령어이니 마음껏 바꿔서도 사용 가능하겠죠?

1번 객체를 선택하고 엔터나 스페이스키를 누른 후

2번 객체를 선택하고, 다시 엔터나 스페이스를 누르면, 신통방통하게...

위와 같이 됩니다 ^^

 

리습코드는 아래 내용을 복사해서 사용하면 될 것입니다.

(defun c:td(/ FText SText FName SName F_List Old_Pair
     F_Text S_Text Add_Text New)
  ;;; 첫 번째 문자를 선택한다
  (setq FText (ssget))
  ;;; 두 번째 문자를 선택한다.
  (setq SText (ssget))   
   ;;; 개체를 구한다.
  (setq FName (ssname FText 0))
  (setq SName (ssname SText 0))
  (if (or (= FName nil) (= SName nil))
       (progn
 (alert "문자가 선택이 안되었습니다.")
  (exit)
 )
  )
 
  ;;; 개체를 리스트로 구한다.
  (setq F_List (entget FName))
  ;;; 도트 페어 형식에 문자를 추출한다.
  (setq Old_Pair (assoc 1 (entget FName)))
  ;;; 도트 페어에서 문자를 구한다.
  (setq F_Text (cdr (assoc 1 (entget FName))))
  (setq S_Text (cdr (assoc 1 (entget SName))))
  (if (= F_Text S_Text)
    (progn
      (alert "문자가 중복 선택 되었습니다.")
      (exit)
      )
    )
  ;;; 문자를 합친다.
  (setq Add_Text (strcat F_Text " " S_Text))
  ;;; 도트 페어 형식으로 만든다.
  (setq New_Pair (cons 1 Add_Text))
  ;;; 리스트에 새로운 데이터로 합친다.
  (setq New (subst New_Pair Old_Pair F_List))
  ;;; 새로운 데이터로 갱신한다.
  (entmod New)
  ;;; 나중에 선택한 문자를 지운다.
  (entdel SName)
 
  )

 자동화 프로그램은 늘 즐겁습니다.^^

반응형
댓글