프로그램
캐드 분류

뷰포트 선택 시 사각형 옵셋 리습 도움 부탁드립니다.

컨텐츠 정보

본문

뷰포트를 선택하면 해당 뷰포트의 크기에 각각 +2, +4 만큼씩 옵셋 된 사각형을 그릴려고합니다.

뷰포트 크기가 가로, 세로 10이면 그려지는 사각형 크기는 각각 14, 18이 되어야합니다.
윗쪽의 뷰포트 크기와 가져오는 부분은 해외 사이트에서 가져온거라 정확한 내용은 모르겠네요..
점 두개를 vertex, tmp로 가져오는 것 까지 그대로 가져왔고 거기서 x값, y값 추출해서
각각 치수를 더했는데 이게 제대로 더해질 때가 있고, 뷰포트 크기 그대로 나올 때가 있습니다.
이게 할 때마다 달라지니… 원인을 모르겠습니다. ㅠ.ㅠ
다른 방법이나 리습이 있다면 올려주셔도 감사하겠습니다.
찍은 뷰포트와 똑같은 크기의 사각형만 찍혀도 옵셋은 수정 가능할텐데 그게 어렵네요.. ㅎㅎ
(defun c:TEST ( / vp vertices dist dist2 p1 p2 op1 op2 op3 op4 xy1 xy2)
 (setq vp nil)
 (setq vp (car (entsel "nSelect Viewport: ")))
 (if (setq vertices (VPverts vp))
  (progn
   (prompt "nList of Viewport vertices: ")
   (princ vertices)
  )
  (prompt "nothing extracted from entity.")
 )
 (princ)
)
(defun VPverts (vp / vertex vList tmp)
 (setq vp (entget vp) vList '())
 (member '(0 . "VIEWPORT") vp)
 (setq vpNum (cdr (assoc 69 vp)))
 (setq vertex (car (cdr (assoc vpNum (vports)))))
 (setq x1 (car vertex))
 (setq y1 (cadr vertex))
 (setq tmp (cadr (cdr (assoc vpNum (vports)))))
 (setq x2 (car tmp))
 (setq y2 (cadr tmp))
 (setq vList (cons vertex vList))
 (setq vList (cons tmp vList))
 (setq p1 (car vList))
 (setq p2 (cadr vList))
 (setq dist 2 dist2 4)
 (if
  (< (car p1) (car p2))
  (progn
   (if
    (< (cadr p1) (cadr p2))
    (progn
     (setq op1 (list (- (car p1) dist) (- (cadr p1) dist)))
     (setq op2 (list (+ (car p2) dist) (+ (cadr p2) dist)))
     (setq op3 (list (- (car p1) dist2) (- (cadr p1) dist2)))
     (setq op4 (list (+ (car p2) dist2) (+ (cadr p2) dist2)))
    )
    (progn
     (setq op1 (list (- (car p1) dist) (+ (cadr p1) dist)))
     (setq op2 (list (+ (car p2) dist) (- (cadr p2) dist)))
     (setq op3 (list (- (car p1) dist2) (+ (cadr p1) dist2)))
     (setq op4 (list (+ (car p2) dist2) (- (cadr p2) dist2)))
    )
   )
  )
  (progn
   (if
    (< (cadr p1) (cadr p2))
    (progn
     (setq op1 (list (+ (car p1) dist) (- (cadr p1) dist)))
     (setq op2 (list (- (car p2) dist) (+ (cadr p2) dist)))
     (setq op3 (list (+ (car p1) dist2) (- (cadr p1) dist2)))
     (setq op4 (list (- (car p2) dist2) (+ (cadr p2) dist2)))
    )
    (progn
     (setq op1 (list (+ (car p1) dist) (+ (cadr p1) dist)))
     (setq op2 (list (- (car p2) dist) (- (cadr p2) dist)))
     (setq op3 (list (+ (car p1) dist2) (+ (cadr p1) dist2)))
     (setq op4 (list (- (car p2) dist2) (- (cadr p2) dist2)))
    )
   )
  )
 )
 (setvar "cmdecho" 1)
 (command "rectang" op1 op2)
 (command "rectang" op3 op4)
)

관련자료

댓글 0 / 1 페이지
등록된 댓글이 없습니다.
전체 81 / 2 페이지
RSS
번호
제목
이름

최근글


새댓글


알림 0