프로그램
캐드 분류

주말농부님 text arrange 관련 질문입니다.

컨텐츠 정보

본문

;;===============================================================
;  문자 정렬하기(2006.11.주말농부)
;  ->다중선택된 문자를 기준점을 정하여 좌우로 정렬하는 명령어
;  ->문자의 시작점이나 끝점을 맞추어 정렬할 때 사용
;  ->수정 보완(2007.1)
;  ->상하정렬 추가(2009.2)
;;—— Text Arrange ——————————————-
(defun c:ta(/ os ss n k pt pt1 pt1x pt2 ptx pty pyxy kw k en ed tx a)
;->*error* start
 (defun *error* (msg)(princ "error: ")(princ msg)
 (setvar "osmode" os)(setvar "blipmode" bl)
 (princ))
;-<*error* end
   (setq os (getvar "osmode"))
   (prompt " 문자 정렬하기…")
   (setq ss (ssget '((0 . "text")))) (terpri)
   (setq n (sslength ss))
   (setq ptx (car (getpoint "n좌우정렬점 선택(상하)->")))(terpri)
   (setvar "osmode" 0)
   (if (= ptx nil)
      (progn
         (setq ss (@ta_lst ss))
         (setq pt (dxf 10 (entget (ssname ss 0))))
         (setq pty (cadr pt))
         (setq k 1)
         (repeat (- n 1)
            (setq en (ssname ss k))
            (setq ed (entget en))
            (setq pt1 (dxf 10 ed))
            (setq pt1x (car pt1))
            (setq pt2 (list pt1x pty))
            (vl-cmdf "move" en "" pt1 pt2)
            (setq k (+ k 1))  )
      )
      (progn
         (setq a "자리맞추기 선택[왼쪽(L)/중심(C)/중간(M)/오른쪽(R)] <왼쪽>: ")
         (initget "Left Center Middle Right")
         (setq kw (getkword a))
         (if (= kw nil) (setq kw "Left"))
         (if (= kw "Left") (setq sn 10) (setq sn 11))
         (command "justifytext" ss "" kw) (terpri)
         (setq k 0)
         (while (<= 1 n)
            (setq en (ssname ss k))
            (setq ptxy (cdr (assoc 10 (entget en)))  )
            (setq pty (cadr ptxy))
            (setq pt2 (list ptx pty))
            (entmod (subst (cons sn pt2) (assoc sn (entget en))(entget en)))
            (setq n (- n 1))
            (setq k (+ k 1))  )
      )
   );if end
   (setvar "osmode" os)
(princ))
;;================================================================
;  새로운 선택세트 만들기(2009.2.12 주말농부)
;  ->x좌표가 작은순서로 선택세트을 재정렬하는 리습
;;—————————————————————-
(defun @ta_lst (ss / ssn n ss-x1 en en1y ss-x1 ss-x2 ss-x3 e1 e2)
   (setq ssn (sslength ss))
   (setq n 0)
   (setq ss-x1 '())
   (repeat ssn
       (setq en (ssname ss n))
       (setq en1x (list en (car (cdr (assoc 10 (entget en)) ) ) ))
       (setq ss-x1 (cons en1x ss-x1))
       (setq n (+ n 1))
   )
   (setq ss-x2 (vl-sort ss-x1 '(lambda (e1 e2) (< (cadr e1) (cadr e2))))  )
;;;새로운 선택세트 만들기
   (setq n 0 ss-x3 (ssadd))
   (repeat ssn
      (setq ss-x3 (ssadd (car (nth n ss-x2)) ss-x3))
      (setq n (+ n 1))
   )
ss-x3)


주말농부님 리습을 다운받았는데요.
좌우정렬은 잘되는데 상하정렬은 안되서 질문드립니다.
상하정렬은 엔터로 하면된다고 말씀하셧는데요,
엔터로 하면 캐드에서

좌우정렬점 선택(상하)->
error: no function definition: DXF; error: An error has occurred inside the
*error* functionAutoCAD variable setting rejected: "blipmode" nil

이렇게 뜹니다.

왜그럴까요?! 도움 부탁드립니다!



관련자료

댓글 4 / 1 페이지

리습초봉님의 댓글

답변감사드립니다! 저도 검색을 해봤는데, (defun dxf (code ed / pt) (setq pt (cdr (assoc code ed))) pt ) 이 구문을 마지막에 넣으면 됩니다. 감사합니다!^^

흰쿠님의 댓글

(defun dxf (code ed / pt) (setq pt (cdr (assoc code ed))) pt ) 이 부분을 정확히 어디에 넣어야 되나요..ㅠ.ㅜ 리습 만드는건 도저히 모르겠네요. 저 부부을 넣어서 풀로 명령어를 댓글로 답변 가능하신분 부탁 드릴께요..

전체 74 / 3 페이지
RSS
번호
제목
이름

최근글


새댓글


알림 0