웬만한 리습은 문제없이 구동됩니다만.
특정 리습이 에러가 난다면,,
리습을 캐디안에서 적합하게 구동하게 수정해 드립니다.
캐디안은 블럭 삽입시 Z방향 축척을 입력받는 단계가 하나 더 있습니다.
(command "insert" bl spt (* sc 1) "" ro) ; AutoCAD의 블럭삽입
(command "insert" bl spt (* sc 1) "" "" ro) ; CADian의 블럭삽입
아래는 수정된 소스입니다.
(defun dtr (a) (* pi (/ a 180.0)))
(defun c:ltg ()
(setvar "osmode" 1)
(setvar "_ZASKSCALE" 1)
(setq sc (getint "\n .Input the Drawing scale ? :"))
(setq ro (getint "\n .Input the LTG rotate ? :"))
(setq rs (getpoint "\n .Pick the room 1st point :"))
(setq re (getcorner rs "\n .Pick the room cross 2nd point :"))
(setq rsx (car rs) rsy (cadr rs))
(setq rex (car re) rey (cadr re))
(setq rx (abs (- rsx rex)))
(setq ry (abs (- rsy rey)))
(if (> rsx rex)
(if (> rsy rey)
(setq rp1 (list rex rsy))
(setq rp1 (list rex rey))
)
(if (> rsy rey)
(setq rp1 (list rsx rsy))
(setq rp1 (list rsx rey))
)
)
(setq rp2 (polar rp1 0 rx))
(setq rp3 (polar rp2 (dtr 270) ry))
(setq rp4 (polar rp3 (dtr 180) rx))
(setq dx (getint "\n .Input the LTG column number ? :"))
(setq dy (getint "\n .Input the LTG low number ? :"))
(setq bl (getstring "\n .Input the LTG block name ? :"))
(setq rdx (/ rx (* dx 2)))
(setq rdy (/ ry (* dy 2)))
(setq spt (polar rp4 0 rdx))
(setq spt (polar spt (dtr 90) rdy))
(if (> rdx rdy) (setq rt 90) (setq rt 0))
(if (or (= 1 dx) (= 1 dy))
(progn
(command "insert" bl spt (* sc 1) "" "" ro)
(command "array" "l" "" "r" dy dx (if (> dx dy) (* rdx 2) (* rdy 2)))
)
(progn
(command "insert" bl spt (* sc 1) "" "" ro)
(command "array" "l" "" "r" dy dx (* rdy 2) (* rdx 2))
)
)
(setvar "osmode" 0)
(princ)
) ; end
카페 게시글
L I S P
Re:오토캐드 리습이 캐디안 에서 구동되지 않을 경우
안티캐드
추천 0
조회 153
08.08.01 20:59
댓글 1
다음검색
첫댓글 잘 봤습니다! 감사합니다~~