(defun c:hh (/)
(setvar “cmdecho” 0) (setq os (getvar “osmode”)) (sssetfirst) (setq hid (list (cons 62 4)(cons 6 “HIDDEN”)))
(if (not (wcmatch (setq typ (cdr (assoc 0 (setq ent (entget (setq obj (car (entsel “n기준 객체를 선택하세요.: “)))))))) “ELLIPSE,*TEXT*”))
(progn
(prompt “n자를 객체를 선택하세요.: “)
(setq objj (ssget) pt (getpoint “n자를 위치를 선택하세요. :”) r 0)
(repeat (sslength objj)
(setq typ (cdr (assoc 0 (entget (ssname objj r)))))
(setq int (vlax-invoke (vlax-ename->vla-object obj) ‘IntersectWith (vlax-ename->vla-object (ssname objj r)) acExtendNone))
(setq lst (cons (cons typ int) lst))
(setq r (1+ r))
)
(foreach x lst (if (wcmatch (car x) “LINE”)
(progn
(setq entt (entget (ssname objj 0)))
(setq p1 (cdr (assoc 10 entt)) p2 (cdr (assoc 11 entt)))
(setq int (cdr (car lst)) intt (inters p1 p2 pt (polar pt (+ (/ pi 2) (angle p1 p2)) (car pt)) nil))
(if (or (inters p1 p2 pt (polar pt (+ (/ pi 2) (angle p1 p2)) (car pt)))
(inters p1 p2 pt (polar pt (- (angle p1 p2) (/ pi 2)) (car pt))))
(progn
(if (>= (angle p1 p2) pi)
(progn
(cond ((>= (angle int intt) pi)
(entmake (subst (cons 11 int) (assoc 11 entt) entt))
(entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
(entmake (subst (cons 10 intt) (assoc 10 entt) entt)))
)
(cond ((< (angle int intt) pi)
(entmake (subst (cons 11 intt) (assoc 11 entt) entt))
(entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
(entmake (subst (cons 10 int) (assoc 10 entt) entt)))
)
)
(progn
(cond ((>= (angle int intt) pi)
(entmake (subst (cons 10 int) (assoc 10 entt) entt))
(entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
(entmake (subst (cons 11 intt) (assoc 11 entt) entt)))
)
(cond ((< (angle int intt) pi)
(entmake (subst (cons 10 intt) (assoc 10 entt) entt))
(entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
(entmake (subst (cons 11 int) (assoc 11 entt) entt)))
)
))
)
(progn
(if (>= (angle p1 p2) pi)
(progn
(cond ((>= (angle int intt) pi)
(entmake (subst (cons 11 int) (assoc 11 entt) entt))
(entmake (append (subst (cons 10 int) (assoc 10 entt) entt) hid)))
)
(cond ((< (angle int intt) pi)
(entmake (append (subst (cons 11 int) (assoc 11 entt) entt) hid))
(entmake (subst (cons 10 int) (assoc 10 entt) entt)))
)
)
(progn
(cond ((>= (angle int intt) pi)
(entmake (subst (cons 10 int) (assoc 10 entt) entt))
(entmake (append (subst (cons 11 int) (assoc 11 entt) entt) hid)))
)
(cond ((< (angle int intt) pi)
(entmake (append (subst (cons 10 int) (assoc 10 entt) entt) hid))
(entmake (subst (cons 11 int) (assoc 11 entt) entt)))
)
))
))
(entdel (ssname objj 0))
))
)
))
)
1. 기준 선을 선택
2. 자를 선을 선택
3. 자를 위치 선택
하면 선이 잘리게 되는데요.. 기준 선은 1개만 선택이 되고
자를 선은 아직 1개밖에 안되고 여러개 선택 할 때 에러가 뜨더라구요
여기서 lst에 모든 교차점에 다 저장이 되고 foreach 함수로 lst에 있는걸 순차적으로 하나씩 꺼내서 사용하는거 아닌가요? 혹시 repeat이 따로 또 들어가야 하나요??
그리고 중간에 굵게 표시해놓은 lst는 x로 하면 foreach가 안 먹는거 같은데 어떻게 해야 좋을까요ㄷㄷ
교차점 리스트를 다른곳에 사용하실려구 그러시나요??
교차점을 이용해서 교차점에서 선택 지점까지 break 후 히든선으로 생성하는 리습 만들고 있습니다ㅠ
참고용으로 하나 올립니다 화이팅~!!
항상 도움 감사드립니다..
만들어주신 리습 확인해봤는데요
entget으로 라인 데이터를 읽어 들이면 대충
자세한 설명 감사합니다! 좋은하루 되세요ㅎㅎ