프로그램
캐드 분류

도면 넘버링 리습 제작중에.

컨텐츠 정보

  • 274 조회
  • 6 댓글
  • 0 추천
  • 0 비추천
  • 목록

본문

안녕하십니까. 초보 리습 독학러 입니다.

부족한 지식으로 몇가지 쓰던 리습을 짜집어서
도면 넘버링 리습을 만들어 볼려고 하고 있습니다.

출력용 도곽(폴리라인)이 있어서 그걸 선택하면 다중출력이 되는 리습를 좀 응용해서 넘버링을 해볼려고 하니. 번호는 들어가는데 위치가 엉망이네요.

신기한건 어쩌다 한번씩 원하는 위치에 들어가고, add watch에서는 원하는 좌표로 뜨는 거 같은데.ㅠ 안되네요.

텍스를 좌표를 x, y값을 list로 묶으면 안되는건지? 어렵네요.
리습에 막히는 부분 주기 달아놨습니다.

염치없지만 지도 좀 부탁드립니다.
윈도우 7, 64bit 오토캐트 2015환경입니다.

작업파일.dwg
20191105 ATN.lsp

관련자료

댓글 6 / 1 페이지

고캐드남님의 댓글

; alanjt   ; http://forums.augi.com/showthread.php?137837-Sort-Selectionset-by-X-coord"]http://forums.augi.com/showthread.php?137837-Sort-Selectionset-by-X-coord[/URL   (defun _SortSSByXValue (sa / lst i e add)     (if (eq (type sa) 'PICKSET)       (progn         (repeat (setq i (sslength sa))           (setq lst (cons (cons (setq e (ssname ss (setq i (1- i))))                                 (cadr (assoc 10 (entget e))))                           lst)))         (setq add (ssadd))         (foreach e (vl-sort lst (function (lambda (a b) (< (cdr a) (cdr b)))))           (ssadd (car e) add))         (if (> (sslength add) 0)           add))))   ;;;; ;;; 선택된 박스를 좌에서 우측으로 쇼팅

(defun Maxp(entibox / apo xpo ypo xmaxq ymaxq pt1)  (setq xent entibox)    (setq lengent (length xent))  (setq num 0)    (setq elementen (assoc 10 xent))   (setq xmaxq (cadr elementen))    (setq ymaxq (caddr elementen))  (repeat 2    (repeat lengent     (setq apo (nth num xent))   (if (= (car apo) 10)    (progn     (setq xpo (cadr apo) ypo (caddr apo))       (if (>= xpo xmaxq)(setq xmaxq xpo))       (if (>= ypo ymaxq)(setq ymaxq ypo))    )   )   (setq num (+ 1 num))    ))    (setq maxpt (list xmaxq ymaxq 0)) )

(defun Minp(entibox / apo xpo ypo xminq yminq pt2)  (setq xent entibox)    (setq lengent (length xent))  (setq num 0)    (setq elementen (assoc 10 xent))   (setq xminq (cadr elementen))    (setq yminq (caddr elementen))  (repeat 2   (repeat lengent     (setq apo (nth num xent))   (if (= (car apo) 10)    (progn     (setq xpo (cadr apo) ypo (caddr apo))       (if (<= xpo xminq)(setq xminq xpo))       (if (<= ypo yminq)(setq yminq ypo))    )   )   (setq num (+ 1 num))    ))    (setq minpt (list xminq yminq 0)) )

;;;; 박스의 왼쪽 아래점과 오른쪽 위점을 추출 —————————————————————-

(defun c:ATN ()         (setq ss (ssget (list (cons 8 "pl_box"))))         (setq boxset (_SortSSByXValue ss))         (setq boxsetlength (sslength boxset))  (setq n 0)          (repeat boxsetlength          (setq xent (entget (ssname boxset n)))     (setq pt1 (minp xent))   (setq pt2 (maxp xent))   (setq pt3 (car pt1))                 (setq pt4 (car pt2))   (setq pt5 (cadr pt1))                  (setq dx (abs (- pt3 pt4)))   (setq XSCALE (/ dx 420))          (setq ts (* 3 XSCALE))    (setq pp1 (+ pt3 (* 407.50 XSCALE)))    (setq pp2 (+ pt5 (* 7.7 XSCALE)))                 (setq txt_pt (list pp1 pp2)) ; 여기를 list로 하면 잘못된건지 궁금합니다.          (setq nums (+ n 1))                 (command "-text" "s" "견고딕" "j" "l" txt_pt ts "0″ nums "") ; txt_pt는 add watch 해보면 원하는 좌표로 나옴니다.        (COMMAND "CHANGE" "L" "" "P" "C" "255″ "") ; 색상 변경                 (setq n (+ n 1)) ; 증가로 가는 거라. 끝이 안나나요?          )   )

;;;;

파일이 안열리면 스크립트라도 올려볼께요. 좀 긴데. 제가 건드린건 아래쪽 뿐이라.

수야12님의 댓글

제대로 잘 만드셨고 문제가 되는 이유는 osmode 때문입니다 

osmode가 0이 아닐때 command 문 리습은  osmode 영향으로 엉뚱한 좌표로 결과값이 나오기도 합니다 

고캐드남님의 댓글

하하하.. 세시간을 날렸는데.ㅠ 그런일이.ㅎㅎ 감사합니다 덕분에 큰 교훈을 받은 느낌입니다.

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

최근글


새댓글


알림 0