107
615
575
中流砥柱
使用道具 举报
5
1334
1410
限制会员
(defun continue ( / sscurve ) (vl-load-com) (if (null el) (setq el (entlast))) (prompt "\nSelect curve you want to project on tin surface...") (setq sscurve (ssget "_+.:E:S:L")) (while (or (not sscurve) (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list (ssname sscurve 0))))) (prompt "\nEmpty sel.set or selected entity doesn't belong to curves...") (setq sscurve (ssget "_+.:E:S:L")) ) (princ))(defun finish ( / l-join ell ) (defun l-join ( ell / ss sss k ent stpt enpt septs chkduppt septn stent ptlst nxtentst nxtenten ellss ) (if (vl-every '(lambda ( x ) (eq (cdr (assoc 0 (entget x))) "LINE")) ell) (progn (setq ss (ssadd)) (foreach l ell (ssadd l ss) ) (setq sss (ssadd)) (repeat (setq k (sslength ss)) (setq ent (ssname ss (setq k (1- k)))) (ssadd ent sss) ) (repeat (setq k (sslength ss)) (setq ent (ssname ss (setq k (1- k)))) (setq stpt (cdr (assoc 10 (entget ent)))) (setq enpt (cdr (assoc 11 (entget ent)))) (setq septs (cons stpt septs)) (setq septs (cons enpt septs)) ) (setq sept septs) (defun chkduppt (pt lst / chk) (foreach ptt lst (if (equal pt ptt 1e-6) (setq chk (cons T chk))) ) chk ) (foreach pt septs (if (eq (length (chkduppt pt septs)) 2) (setq septn (cons pt septn))) ) (foreach pt septn (setq sept (vl-remove pt sept)) ) (if (eq sept nil) (setq sept (acet-list-remove-duplicates septs 1e-6))) (repeat (setq k (sslength ss)) (setq ent (ssname ss (setq k (1- k)))) (setq stpt (cdr (assoc 10 (entget ent)))) (if (equal stpt (car sept) 1e-6) (setq stent ent)) ) (if (eq stent nil) (repeat (setq k (sslength ss)) (setq ent (ssname ss (setq k (1- k)))) (setq enpt (cdr (assoc 11 (entget ent)))) (if (equal enpt (car sept) 1e-6) (setq enent ent)) ) ) (if stent (progn (setq ptlst (cons (cdr (assoc 10 (entget stent))) ptlst)) (setq ptlst (cons (cdr (assoc 11 (entget stent))) ptlst)) (setq enpt (cdr (assoc 11 (entget stent)))) (ssdel stent ss) ) (progn (setq ptlst (cons (cdr (assoc 11 (entget enent))) ptlst)) (setq ptlst (cons (cdr (assoc 10 (entget enent))) ptlst)) (setq enpt (cdr (assoc 10 (entget enent)))) (ssdel enent ss) ) ) (while (/= (sslength ss) 0) (setq nxtentst nil) (setq nxtenten nil) (repeat (setq k (sslength ss)) (setq ent (ssname ss (setq k (1- k)))) (setq stpt (cdr (assoc 10 (entget ent)))) (if (equal enpt stpt 1e-6) (setq nxtentst ent)) ) (if nxtentst nil (repeat (setq k (sslength ss)) (setq ent (ssname ss (setq k (1- k)))) (setq enptt (cdr (assoc 11 (entget ent)))) (if (equal enpt enptt 1e-6) (setq nxtenten ent)) ) ) (if nxtentst (progn (setq ptlst (cons (cdr (assoc 10 (entget nxtentst))) ptlst)) (setq ptlst (cons (cdr (assoc 11 (entget nxtentst))) ptlst)) (setq enpt (cdr (assoc 11 (entget nxtentst)))) (ssdel nxtentst ss) ) (progn (setq ptlst (cons (cdr (assoc 11 (entget nxtenten))) ptlst)) (setq ptlst (cons (cdr (assoc 10 (entget nxtenten))) ptlst)) (setq enpt (cdr (assoc 10 (entget nxtenten)))) (ssdel nxtenten ss) ) ) ) (setq ptlst (acet-list-remove-duplicates ptlst 1e-6)) (command "_.3DPOLY") (foreach pt ptlst (command "_non" pt) ) (command "") (setq el (entlast)) (while (eq (cdr (assoc 0 (entget (setq el (entnext el))))) "VERTEX")) (foreach l ell (entdel l) ) ) (progn (setq ellss (ssadd)) (foreach l ell