(defun c:tt (/ kht-intersect s1 as1 ss1
osm jin1 jin2 c1 a1 aa1
centerpoint sss5
)
(defun kht-intersect (en1 en2 / a b x ex ex-app)
(vl-load-com)
(setq En1 (vlax-ename->vla-object En1))
(setq En2 (vlax-ename->vla-object En2))
(setq a (vla-intersectwith en1 en2 acExtendNone))
(setq a (vlax-variant-value a))
(setq b (vlax-safearray-get-u-bound a 1))
(if (/= b -1)
(progn
(setq a (vlax-safearray->list a))
(repeat (/ (length a) 3)
(setq
ex-app (append ex-app
(list (list (car a) (cadr a) (caddr a)))
)
)
(setq a (cdr (cdr (cdr a))))
)
ex-app
)
nil
)
)
(command “ucs” “”)
(PRINC “Select Pline :”)
(setq s1 (ssget))
(terpri)
(setq as1 (ssname s1 0))
(princ “Select intersection Targets :”)
(setq ss1 (ssget))
(setq osm (getvar “osmode”))
(setvar “osmode” 0)
(if (/= #jin1 nil)
(progn
(setq #jin11 (rtos #jin1 2 0))
(setq jin1 (getdist (strcat “ngab distance is ” “<” #jin11 “>” ” :”))))
(setq jin1 (getdist “ngab distance is :”))
)
(cond ((and (= jin1 nil) (/= #jin1 nil)) (setq jin1 #jin1)))
(cond ((/= jin1 nil) (setq #jin1 jin1)))
(setq jin2 0.4)
(setq c1 0)
(repeat (sslength ss1)
;(setq a1 (entget (ssname ss1 c1)))
(setq aa1 (ssname ss1 c1))
(setq JIN111 (kht-intersect as1 aa1))
;(SETQ centerpoint (CAR JIN111))
(mapcar ‘(lambda (centerpoint)
(progn
(command “circle” centerpoint jin1 “”)
(setq sss5 (ssget “L”)) ;circle
(command “trim”
sss5
“”
(list (ssname ss1 c1) centerpoint)
“”
)
(command “erase” sss5 “”)
) ;end progn
) ;end lambda
JIN111
) ;end mapcar
(setq c1 (1+ c1))
)
(setvar “osmode” osm)
(princ)
)
제가 즐겨쓰는 리습 중 하나가 크로스 되는 배관의 상하위치를 표시하도록 지정한 간격만큼 자르는 리습이 있는데 원래는 잘 먹혔었는데 전혀 무반응입니다. 처음에 라인 선택하고 2번째 라인 선택하고 간격지정하고 엔터하면 적용이 되는데 지금 확인해보니 제가 새로그린 라인에서는 명령어가 듣는데 기존에 작업했던
그림에서는 먹히지가 않네요. 왜그런건가요? 리습바이러스 체크도 해봤는데 정상입니다.
수정했어요~
; 경고: unwind skipped on 예외
; 오류: 오류가 발생함: 0xC0000005 (액세스 위반)
cad2016년에서 이런 에러가 나네요.ㅠ 2012에서는 정상 작동 됩니다.