안녕하세요. 위 그림과 같이
각각의 선의 시작점 또는 끝점 버텍스들을 다른 선의 시작점 또느 끝점으로 버텍스를 이동하는
리습문을 만들고 있는데요.
아래의 빨간색 구문이 계속 무한반복이 됩니다.
어떤 문제가 있을까요??
(defun c:pl_paste ()
(setq i 0)
(setq sel (ssget (list (cons 0 “lwpolyline”))))
(while (< i (sslength sel))
(setq a 0)
(setq selname (ssname sel i))
(setq s_handle (cdr (assoc 5 (entget selname))))
(setq s_xy (vlax-curve-getstartpoint selname))
(setq e_xy (vlax-curve-getendpoint selname))
(object_search s_Xy 5)
(setq First_sel (ssget “cp” pt_list (list (cons 0 “lwpolyline”))))
(if (= First_sel nil)
(progn
(object_search e_xy 5)
(setq Second_sel (ssget “cp” pt_list (list (cons 0 “lwpolyline”))))
(if (> (sslength Second_sel) 1)
(progn
(setq x_list (vl-sort pt_list (function (lambda (n1 n2)(< (car n1)(car n2))))))
(setq y_list (vl-sort pt_list (function (lambda (n1 n2)(< (cadr n1)(cadr n2))))))
(setq min_x (car (nth 0 x_list)))
(setq max_x (car (nth 3 x_list)))
(setq min_y (cadr (nth 0 y_list)))
(setq max_y (cadr (nth 3 y_list)))
(while (< a (sslength Second_sel))
(setq second_selname (ssname Second_sel a))
(setq e_handle (cdr (assoc 5 (entget second_selname))))
(if (= s_handle e_handle)
(progn
(setq a (+ a 1))
)
(progn
(setq start_xy (vlax-curve-getstartpoint second_selname))
(setq end_xy (vlax-curve-getendpoint second_selname))
(if (and (and (< (car start_xy) max_x)(> (car start_xy) min_x)) (and (< (cadr start_xy) max_y)(> (cadr start_xy) min_y)))
(progn
(if (/= start_xy e_xy)
(progn
(command “_pedit” second_selname “e” “m” e_xy “x” “”)
)
(progn)
)
)
(progn
(if (/= end_xy e_xy)
(progn
(setq end_param (vlax-curve-getendparam second_selname))
(command “_pedit” second_selname “e”)
(repeat end_param (command “n”))
(command “m” e_Xy “x” “”)
)
(progn)
)
)
)
)
)
)
)
(progn)
)
(setq i (+ i 1))
)
(progn
(if (> (sslength first_sel) 1)
(progn
(setq x_list (vl-sort pt_list (function (lambda (n1 n2)(< (car n1)(car n2))))))
(setq y_list (vl-sort pt_list (function (lambda (n1 n2)(< (cadr n1)(cadr n2))))))
(setq min_x (car (nth 0 x_list)))
(setq max_x (car (nth 3 x_list)))
(setq min_y (cadr (nth 0 y_list)))
(setq max_y (cadr (nth 3 y_list)))
(while (< a (sslength First_sel))
(setq First_selname (ssname First_sel a))
(setq e_handle (cdr (assoc 5 (entget First_selname))))
(if (= s_handle e_handle)
(progn
(setq a (+ a 1))
)
(progn
(setq start_xy (vlax-curve-getstartpoint First_selname))
(setq end_xy (vlax-curve-getendpoint First_selname))
(if (and (and (< (car start_xy) max_x)(> (car start_xy) min_x)) (and (< (cadr start_xy) max_y)(> (cadr start_xy) min_y)))
(progn
(if (/= start_xy s_xy)
(progn
(command “_pedit” First_selname “e” “m” s_xy “x” “”)
)
(progn)
)
)
(progn
(if (/= end_xy s_xy)
(progn
(setq end_param (vlax-curve-getendparam First_selname))
(command “_pedit” First_selname “e”)
(repeat (fix end_param) (command “n”))
(command “m” s_Xy “x” “”)
)
(progn)
)
)
)
)
)
)
)
(progn)
)
(setq i (+ i 1))
)
)
(princ (strcat “rProccesing…….” (itoa i) “/” (itoa (sslength sel))))(princ)
)
)