저번에 한번 올렷는데요
이거 플롯 나오는 순서를 정하고 싶어서요
랜덤으로 나와서 나오는 순서를 두가지로 만들고 싶은데요
좌상단 부터 우하단 순으로 가는거랑
반대로 우하단에서 좌상단으로 플롯박스순서를 정하는 방법이 없을까요??
;;;
;;; CTB, PRINTER, PAPER 설정
;;;
;;; 이 부분의 변수 ctb_file, prt_name, paper_size 에 ctb파일이름,프린터설정세이브파일이름,용지설정이름으로
;;; 대체한후 AutoCAD에서 로드하여야 한다.
;;;
;;;
(setq ctb_file “기본.ctb”) ;;; ctb파일설정
(setq prt_name “☆복합기2☆”) ;;; 칼라
(setq paper_size “A3 (297 x 420mm)”) ;;; 오천용a3
;;;
;;;
;;;
;;; 2006. 12. JH LEE 작성.
;;;
;;;
;;;
;;;
(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))
)
;;;
;;;
;;; 플롯박스 만들기
;;;
;;; pl_box layer에 4각 폴리곤을 작성한다.
;;; 4각 폴리곤을 도면폼 외곽에 씌우면 차후에 일괄출력에 활용가능하다.
;;;
;;;
(defun c:pb()
(setq cla (getvar “clayer”))
(if (= (tblsearch “layer” “pl_box”) nil)
(progn
(command “-layer” “n” “pl_box” “c” “3” “pl_box” “p” “n” “pl_box” “”)
(setvar “clayer” “pl_box”)
)
(setvar “clayer” “pl_box”)
)
(setq pt1 (getpoint “원점-?”))
(setq pt2 (getcorner pt1 “대각선점-?”))
(command “rectangle” pt1 pt2)
(setvar “clayer” cla)
)
;;;
;;;
;;; 모든 플롯박스 출력
;;;
;;; pl_box layer의 4각 폴리곤을 찾아서 모두 출력한다.
;;;
;;;
(defun c:px()
(setq boxset (ssget “x” ‘((8 . “pl_box”))))
(setq boxsetlength (sslength boxset))
(setq n 0)
(repeat boxsetlength
(setq xent (entget (ssname boxset n)))
(setq pt1 (minp xent))
(setq pt2 (maxp xent))
(SETQ PLENGTH (- (CAR PT2) (CAR PT1)))
(SETQ ALENGTH (- (CADR PT2) (CADR PT1)))
(IF (> PLENGTH ALENGTH)
(SETQ SCALE PLENGTH lp “l”)
(SETQ SCALE ALENGTH lp “p”)
)
(setq PLOTSCALE (STRCAT “1=” (rtos (/ SCALE 420) 2 0)))
(command “PLOT” “Y” “” prt_name paper_size “m” “l” “no” “w” PT1 PT2 “f” “C” “y” ctb_file “y” “n” “n” “y” “Y”)
(setq n (+ 1 n))
)
)
;;;
;;;
;;; 선택 박스 출력
;;;
;;; 선택한 4각 폴리곤의 도면을 출력한다.
;;; 다중선택도 가능하다.
;;;
;;;
;;;
(defun c:pxx()
(setq boxset (ssget))
(setq boxsetlength (sslength boxset))
(setq n 0)
(repeat boxsetlength
(setq xent (entget (ssname boxset n)))
(setq pt1 (minp xent))
(setq pt2 (maxp xent))
(SETQ PLENGTH (- (CAR PT2) (CAR PT1)))
(SETQ ALENGTH (- (CADR PT2) (CADR PT1)))
(IF (> PLENGTH ALENGTH)
(SETQ SCALE PLENGTH lp “l”)
(SETQ SCALE ALENGTH lp “p”)
)
(setq PLOTSCALE (STRCAT “1=” (rtos (/ SCALE 420) 2 0)))
(command “PLOT” “Y” “” prt_name paper_size “m” “l” “no” “w” PT1 PT2 “f” “C” “y” ctb_file “y” “n” “n” “y” “Y”)
(setq n (+ 1 n))
)
)