(DEFUN C:aa ()
(setvar “clayer” “4111”)
(setq ent (ssget (list (cons 0 “lwpolyline”))))
(setq ent_num (sslength ent) i 0 err 0 j 0)
(while (< i ent_num)
(setq ent_name (ssname ent i) ent_list (entget ent_name) )
;(setq center_pt (ade_expreval ent_name “.center” “point”))
;(command “BHATCH” “p” “solid” 0 0 center_pt “”)
(command “hatch” “solid” 0 0 ent_name “”)
(setq i (+ i 1))
);while
);defun
;——– 수백 수천개의 pline가 있다고할때
한개씩 선택해서 위의리습을 실행하면 아무이상없이 hatch가 생성되는데
전체 pline를 다 선택하고 해치를 돌리면
두개의 객체가 한쌍을 이루면서 해치가 생성되는 현상이 일어나는데요
왜그렇게 되는지 모르겠네요.
파일 첨부했습니다.
;줌과 연관이 있어 맞게 수정하였습니다.
;해치나 바운다리 명령 같은 경우, 화면상에서 닫힘 영역 유무 판단을 하게 되는 것 같은데 객체가 너무 작게 보이게 되면 오류를 발생하는 것 같습니다.
(defun c:aa ()
(setvar ‘cmdecho 0)
(setvar ‘clayer “4111”)
(if (setq i -1 ss (ssget (list (cons 0 “lwpolyline”))))
(while (setq en (ssname ss (setq i (+ i 1))))
(command “zoom” “o” en “” “hatch” “solid” 0 0 en “”)
)
)
(princ)
)