33
96
65
初露锋芒
(defun c:td (/ dt layerset hr raf1 raf2 ss en ed p10 p11 mpt d2d d1d d3d d4d lan tan fg hg) (vl-load-com) (defun errorhandler (s) (if (/= s "Function cancelled") (princ (strcat "\nError: " s)) (princ "SW function cancelled!") ) ;end if (setvar "clayer" layerset) (setvar "orthomode" orthoset) (setvar "osmode" osset) (setvar "cmddia" cmddiaset) (setvar "attdia" attdiaset) (setvar "regenmode" 1) (setq *error* olderr) (princ) ) ;end defun error (setq dscal (getvar "dimscale")) (setq dimconv (/ 96.0 dscal)) (setq lspace (* 9.0 (/ dscal 96.0))) (setq tfc12 (* 12.0 (/ dscal 96.0)));;;;----set variables ------------------------------------- (setq layerset (getvar "clayer")) (command "_.layer" "s" "s-Fnd-Tbeam" "") (command "_.layer" "off" "*" "n" "") (command "_.layer" "on" "s-fnd-stend,s-fnd-btend,s-fnd-hstend,s-fnd-vstend,s-fnd-vbtend,s-fnd-hbtend" "" ) (command "textsize" "6" "") (command "_.style" "romans" "0" "0.80" "" "" "" "");;;;-----Get point for start side------------------- (setq dt (getstring "DBL(2) or TRPL(3) Tendons")) (setq arr (getpoint "Pick first side you want the Live end")) (setq ss (ssget "_:L" '((0 . "LINE,LWPOLYLINE")))) (setq count 1) (while (setq en (ssname ss 0)) ;(setq e (ssname ss (setq i (1+ i)))) (setq ed (entget en)) (setq lyr (cdr (assoc 8 ed))) (setq p10 (cdr (assoc 10 ed))) (setq p11 (cdr (assoc 11 ed))) (setq pln (cdr (assoc 90 ed))) (setq pp10 p10) ;first pline corrd for start placement (setq pp9 p11) ;second pline corrd for start rotation (setq pp11 p11) ;last pline corrd for end placement (setq pp12 p10) ;second to last corrd on miltiple plines for end rotation (setq leng (vla-get-length (vlax-ename->vla-object en))) (setq leng1 (fix (/ leng 12.0))) (if (= (cdr (assoc 0 ed)) "LWPOLYLINE") (progn (if (setq chk (= pln 2)) (setq pp1 (nth 19 ed) pp9 (cdr pp1) ;start rotation pp11 (cdr pp1) ;end location ) ;end setq ;(setq distt1 (fix (/ (distance pp10 pp1) 12.0))) ) ;end if 2 (if (setq chk (= pln 3)) (setq pp1 (nth 24 ed) pp2 (nth 19 ed) pp9 (cdr pp2) ;start rotation pp11 (cdr pp1) ;end location pp12 (cdr pp2) ;end rotation ) ;end setq ;(setq distt1 (fix (/ ((distance pp10 pp2)+(distance pp2 pp1)) 12.0))) ) ;end if 3 (if (setq chk (= pln 4)) (setq pp1 (nth 29 ed) pp2 (nth 19 ed) pp3 (nth 24 ed) pp9 (cdr pp2) ;start rotation pp11 (cdr pp1) ;end location pp12 (cdr pp3) ;end rotation ) ;end setq ) ;end if 4 (if (setq chk (= pln 5)) (setq pp1 (nth 34 ed) pp2 (nth 19 ed) pp3 (nth 29 ed) pp9 (cdr pp2) ;start rotation pp11 (cdr pp1) ;end location pp12 (cdr pp3) ;end rotation ) ;end setq ) ;end if 5 (if (setq chk (= pln 6)) (setq pp1 (nth 39 ed) pp2 (nth 19 ed) pp3 (nth 34 ed) pp9 (cdr pp2) ;start rotation pp11 (cdr pp1) ;end location pp12 (cdr pp3) ;end rotation ) ;end setq ) ;end if 6 ) ;end progn ) ;end if 0;;;insert start and end placement (if (< (distance arr pp10) (distance arr pp11)) (setq p9 pp10) ) (if (< (distance arr pp11) (distance arr pp10)) (setq p9 pp11) ) (if (> (distance arr pp10) (distance arr pp11)) (setq p12 pp10) ) (if (> (distance arr pp11) (distance arr pp10)) (setq p12 pp11)