리습을 배우진못하고 독학으로 짜집기해서 사용하는 유저인데요
라이노에서의 split 명령어가 너무 강력해서
캐드에서도 사용하고싶은데
생각보다 잘안되네요
라이노에서의 split 기능은
잘려질 다수의 객체선택하고
자를기준을 선택하면
여러커브들이 하나의 기준 커브와 교차되는 지점들로 잘려있는 결과가 나옵니다.
현재 제작한 리습은 아래와 같은데
(defun c:s(/ acDoc acSpc ss ent entvl ssl i objvl index intpt pt )
(vl-load-com)
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(setq ss (ssget))
(setq ent (car (entsel “n 기준선을 선택하시오. :”)))
(setq entvl (vlax-ename->vla-object ent))
(setq ssl (sslength ss))
(setq i 0)
(repeat ssl
(setq obj (ssname ss i))
(setq objvl (vlax-ename->vla-object obj))
(setq index 0)
(setq intpt (vlax-invoke entvl ‘intersectwith objvl acextendnone))
(vla-startundomark acDoc)
(if (= (length intpt) 3)
(command “break” obj intpt “@”)
(repeat (/ (length intpt) 3)
(setq pt (list (nth index intpt) (nth (1+ index) intpt) (nth (+ index 2) intpt)))
(if (= index 0)
(command “break” obj pt “@”)
(command “break” (entlast) pt “@”)
)
(setq index (+ index 3))
)
)
(vla-endundomark acDoc)
(setq i (+ i 1))
)
(princ)
)
단순한 선들은 잘 잘리기는하나
아래같은 상황에서 오류가 발생합니다
위그림에서 노란선을 흰선으로 절단하고자 할때 위리습을 사용하면
교차점으로 1,2,3번점이 잡힙니다.
먼저 노란선이 교차점 1번으로 절단되어 A,B로 나뉘는데
제가 바라는것은 A선이 2번점으로 절단되고
B선이 3번점으로 절단되는것인데
현재는 ENTLAST를 사용해서 B선이 2번, 3번 점으로 절단이 되서 애매하게 잘리는부분(4번점)과
A선은 잘리지 않는것 이 문제네요..
고수님들의 조언을 구합니다.
교차점으로 1,2,3번점이 잡힙니다.
먼저 노란선이 교차점 1번으로 절단되어 A,B로 나뉘는데
제가 바라는것은 A선이 2번점으로 절단되고
B선이 3번점으로 절단되는것인데
현재는 ENTLAST를 사용해서 B선이 2번, 3번 점으로 절단이 되서 애매하게 잘리는부분(4번점)과
A선은 잘리지 않는것 이 문제네요..
고수님들의 조언을 구합니다.
라이노를 몰라서 split이란 기능은 모르겠지만,
아래 리습이랑 비슷한 것을 찾으시는 거 같네요.
아래 리습은 자동으로 한번에 끊어주지는 않고, 수동으로 클릭을 해주어야 합니다.
while문 추가하면, 자동절단으로 변경도 가능하니까, 필요하시면 , 코드 수정해서 쓰시면 될 듯 합니다.
(사실, 수동 절단도 그닥 불편하지 않아요.)
(defun C:bb( / os olderr p0 os p1) ;;;;;객체 끊기;;;;;;;;;;;
(setq os (getvar “osmode”))
(setq olderr *error* *error* exerr)
(getvar “HIGHLIGHT”)
(setq p0 (entsel “n 절단할 객체 선택..:”))
(setq os (getvar “OSMODE”))
(setvar “OSMODE” 181)
(setvar “OSMODE” 181)
(setq p1 (getpoint “n 절단할 지점 클릭.:”))
(command “break” p0 “f” “int” p1 p1)
(setvar “OSMODE” os)
(PRINC)
);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;