35
97
62
初露锋芒
使用道具 举报
15
71
56
10
109
99
; tio.lsp - Trim Inside or Outside of closed polyline.; For lightweight closed polylines only.; The fence location sets the distance (inside; or outside) from the polyline to the offset; that defines the fence.(defun findver (entname / verlst lst i)(setq verlst nil)(setq i 0)(setq lst (entget entname))(repeat (length lst)(if (= (car (nth i lst)) 10) (setq verlst (append verlst (list (cdr (nth i lst))))))(setq i (1+ i)))verlst)(defun c:tio (/ *ERROR* lwp floc fen fset ff)(defun *ERROR* (msg) (setvar "CMDECHO" 1) (setvar "OSMODE" osave) (princ))(setvar "CMDECHO" 0)(setq osave (getvar "OSMODE"))(setvar "OSMODE" 0)(setq lwp (car (entsel "\n Pick polyline")))(redraw lwp 3)(setq floc (getpoint "\n Pick fence location"))(command "OFFSET" "T" lwp floc "")(setq fen (entlast))(setq fset (findver fen))(entdel fen)(setq ff (car fset))(setq fset (append fset (list ff)))(command "TRIM" lwp "" "F" fset "" "")(setvar "OSMODE" osave)(setvar "CMDECHO" 1)(redraw)(princ))
; sdop.lsp - Select and Delete objects Outside of closed Polyline.; To trim lines projecting from closed region, first use; TIO, then run SDOP.(defun findver (entname / verlst lst i)(setq verlst nil)(setq i 0)(setq lst (entget entname))(repeat (length lst)(if (= (car (nth i lst)) 10) (setq verlst (append verlst (list (cdr (nth i lst))))))(setq i (1+ i)))verlst)(defun c:sdop (/ *ERROR* lwp vset cset clen n cname)(defun *ERROR* (msg) (setvar "CMDECHO" 1) (setq cset nil) (princ))(setvar "CMDECHO" 0)(setq lwp (car (entsel "\n Pick polyline")))(setq vset (findver lwp))(redraw lwp 3)(command "SELECT" "OP" vset "" "")(setq cset (ssget "P"))(setq clen (sslength cset))(setq n 0)(repeat clen(setq cname (ssname cset n))(entdel cname)(setq n (+ 1 n)))(setq cset nil)(setvar "CMDECHO" 1)(redraw)(princ))
0
1
初来乍到
Command: SDOPPick polyline*Invalid selection*Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle/SUbobject/ObjectSelect objects:
308
;_Select Contour Window Polygon(defun C:SCWP ()(SelectContour "_WP"));_Select Contour Crossing Polygon(defun C:SCCP ()(SelectContour "_CP"))(defun SelectContour ( opt / en ss lst)(defun DTR (a)(* pi (/ a 180.0)))(defun lib:pt_extents (vlist / tmp)(setq tmp (mapcar '(lambda (x) (vl-remove-if 'null x))(mapcar '(lambda (what) (mapcar '(lambda (x) (nth what x)) vlist))'(0 1 2))));_setq (list (mapcar '(lambda(x)(apply 'min x)) tmp)(mapcar '(lambda(x)(apply 'max x)) tmp)))(defun lib:IsPtInView (pt / VCTR Y_Len SSZ X_Pix Y_Pix X_Len Lc Uc)(setq pt (trans pt 0 1))(setq VCTR (getvar "VIEWCTR") Y_Len (getvar "VIEWSIZE") SSZ (getvar "SCREENSIZE") X_Pix (car SSZ) Y_Pix (cadr SSZ) X_Len (* (/ X_Pix Y_Pix) Y_Len) Lc (polar VCTR (dtr 180.0) (* 0.5 X_Len)) Uc (polar Lc 0.0 X_Len) Lc (polar Lc (dtr 270.0) (* 0.5 Y_Len)) Uc (polar Uc (dtr 90.0) (* 0.5 Y_Len)))(if (and (> (car pt) (car Lc))(< (car pt) (car Uc)) (> (cadr pt) (cadr Lc))(< (cadr pt) (cadr Uc))) T nil))(defun lib:Zoom2Lst( vlist / bl tr Lst OS)(setq Lst (lib:pt_extents vlist) bl (car Lst) tr (cadr Lst))(if (not (and (lib:IsPtInView bl) (lib:IsPtInView tr)))(progn (setq OS (getvar "OSMODE"))(setvar "OSMODE" 0)(command "_.Zoom" "_Window" (trans bl 0 1)(trans tr 0 1) "_.Zoom" "0.95x")(setvar "OSMODE" OS) T) NIL))(defun TraceObject (obj / typlst typ TracePline TraceACE TraceLine TraceSpline TraceType1Pline TraceType23Pline) (defun ZClosed (lst) (if (and (vlax-curve-isClosed obj) (not(equal (car lst)(last lst) 1e-6))) (append lst (list (car lst))) lst)) (defun TracePline (obj / param endparam anginc tparam pt blg ptlst delta inc arcparam flag) (setq param (vlax-curve-getStartParam obj) endparam (vlax-curve-getEndParam obj) anginc (* pi (/ 7.5 180.0))) (setq tparam param) (while (<= param endparam) (setq pt (vlax-curve-getPointAtParam obj param)) (if (not (equal pt (car ptlst) 1e-12)) (setq ptlst (cons pt ptlst))) (if (and (/= param endparam) (setq blg (abs (vlax-invoke obj 'GetBulge param))) (/= 0 blg)) (progn (setq delta (* 4 (atan blg)) ;included angle inc (/ 1.0 (1+ (fix (/ delta anginc)))) arcparam (+ param inc)) (while (< arcparam (1+ param)) (setq pt (vlax-curve-getPointAtParam obj arcparam) ptlst (cons pt ptlst) arcparam (+ inc arcparam)))) ) (setq param (1+ param))) (if (and (apply 'and ptlst) (> (length ptlst) 1)) (ZClosed (reverse ptlst)))) ;end (defun TraceACE (obj / startparam endparam anginc delta div inc pt ptlst) (setq startparam (vlax-curve-getStartParam obj) endparam (vlax-curve-getEndParam obj) anginc (* pi (/ 5.0 180.0))) (if (equal endparam (* pi 2) 1e-12) (setq delta endparam) (setq delta (NormalAngle (- endparam startparam)))) (setq div (1+ (fix (/ delta anginc))) inc (/ delta div)) (while (or (< startparam endparam) (equal startparam endparam 1e-12)) (setq pt (vlax-curve-getPointAtParam obj startparam) ptlst (cons pt ptlst) startparam (+ inc startparam))) (reverse ptlst)) ;end (defun TraceLine (obj)(list (vlax-get obj 'StartPoint) (vlax-get obj 'EndPoint))) (defun TraceSpline (obj / startparam endparam ncpts inc param fd ptlst pt1 pt2 ang1 ang2 a) (setq startparam (vlax-curve-getStartParam obj) endparam (vlax-curve-getEndParam obj) ncpts (vlax-get obj 'NumberOfControlPoints) inc (/ (- endparam startparam) (* ncpts 7)) param (+ inc startparam) fd (vlax-curve-getfirstderiv obj param) ptlst (cons (vlax-curve-getStartPoint obj) ptlst)) (while (< param endparam) (setq pt1 (vlax-curve-getPointAtParam obj param) ang1 fd param (+ param inc) pt2 (vlax-curve-getPointAtParam obj param) fd (vlax-curve-getfirstderiv obj param) ang2 fd a (abs (3d_angw1w2 ang1 ang2))) (if (> a 0.00218166)(setq ptlst (cons pt1 ptlst)))) (if (not (equal (setq pt1 (vlax-curve-getEndPoint obj)) (car ptlst) 1e-) (setq ptlst (cons pt1 ptlst))) (reverse ptlst)) ;end (defun TraceType1Pline (obj / ptlst objlst lst) (setq ptlst (list (vlax-curve-getStartPoint obj)) objlst (vlax-invoke obj 'Explode)) (foreach x objlst (setq lst (TraceACE x)) (if (not (equal (car lst) (last ptlst) 1e-) (setq lst (reverse lst))) (setq ptlst (append ptlst (cdr lst))) (vla-delete x))(ZClosed ptlst)) ;end (defun TraceType23Pline (obj / objlst ptlst lastpt)