(defun rlw ( LW / E X1 X2 X3 X4 X5 X6 )
;; by ElpanovEvgeniy
;; reverse lwpolyline
(if (= (cdr (assoc 0 (setq e (entget lw)))) "LWPOLYLINE")
(progn (foreach a1 e
(cond ((= (car a1) 10) (setq x2 (cons a1 x2)))
((= (car a1) 40) (setq x4 (cons (cons 41 (cdr a1)) x4)))
((= (car a1) 41) (setq x3 (cons (cons 40 (cdr a1)) x3)))
((= (car a1) 42) (setq x5 (cons (cons 42 (- (cdr a1))) x5)))
((= (car a1) 210) (setq x6 (cons a1 x6)))
(t (setq x1 (cons a1 x1)))
)
)
(entmod (append (reverse x1)
(append (apply (function append)
(apply (function mapcar)
(cons 'list
(list x2
(cdr (reverse (cons (car x3) (reverse x3))))
(cdr (reverse (cons (car x4) (reverse x4))))
(cdr (reverse (cons (car x5) (reverse x5))))
)
)
)
)
x6
)
)
)
(entupd lw)
)
)
)
;; Reverse SPLINE - Marko Ribar, d.i.a.
(defun rspl ( spl / enx x12 x13 x1 x2 x3 x4 x5 )
(if (= (cdr (assoc 0 (setq enx (entget spl)))) "SPLINE")
(progn
(foreach a1 enx
(cond
( (= (car a1) 12) (setq x13 (cons (cons 13 (mapcar '- (cdr a1))) x13)) )
( (= (car a1) 13) (setq x12 (cons (cons 12 (mapcar '- (cdr a1))) x12)) )
( (= (car a1) 40) (setq x2 (cons a1 x2)) )
( (= (car a1) 10) (setq x3 (cons a1 x3)) )
( (= (car a1) 41) (setq x4 (cons a1 x4)) )
( (= (car a1) 11) (setq x5 (cons a1 x5)) )
( t (setq x1 (cons a1 x1)) )
)
)
(entmod
(append
(reverse x1)
x12
x13
(mapcar '(lambda ( x ) (cons 40 (- (cdar x2) (cdr x)))) x2)
(if x4
(apply 'append (mapcar '(lambda ( a b ) (list a b)) x3 x4))
x3
)
x5
)
)
(entupd spl)
)
)
)
;; Reverse HELIX - Marko Ribar, d.i.a.
(defun rhel ( hel / enx enx1 enx2 v x1 x2 x3 )
(if (= (cdr (assoc 0 (setq enx (entget hel)))) "HELIX")
(progn
(setq enx1 (reverse (cdr (member '(100 . "AcDbHelix") (reverse enx)))))
(setq enx2 (member '(100 . "AcDbHelix") enx))
(foreach a1 enx1
(cond
( (= (car a1) 40) (setq x2 (cons a1 x2)) )
( (= (car a1) 10) (setq x3 (cons a1 x3)) )
( t (setq x1 (cons a1 x1)) )
)
)
(setq enx2 (subst (cons 40 (distance (cdr (assoc 10 enx2)) (cdr (assoc 11 enx2)))) (assoc 40 enx2) enx2))
(setq enx2 (subst (cons 10 (mapcar '+ (cdr (assoc 10 enx2)) (mapcar '* (cdr (assoc 12 enx2)) (list (* (cdr (assoc 41 enx2)) (cdr (assoc 42 enx2))) (* (cdr (assoc 41 enx2)) (cdr (assoc 42 enx2))) (* (cdr (assoc 41 enx2)) (cdr (assoc 42 enx2))))))) (assoc 10 enx2) enx2))
(setq enx2 (subst (cons 11 (cdr (car x3))) (assoc 11 enx2) enx2))
(setq enx2 (subst (cons 12 (mapcar '- (cdr (assoc 12 enx2)))) (assoc 12 enx2) enx2))
(entmod
(append
(reverse x1)
(mapcar '(lambda ( x ) (cons 40 (- (cdar x2) (cdr x)))) x2)
x3
enx2
)
)
(entupd hel)
)
)
)
;; Reverse LINE - Marko Ribar, d.i.a.
(defun rli ( li / enx sp ep )
(if (= (cdr (assoc 0 (setq enx (entget li)))) "LINE")
(progn
(setq sp (cdr (assoc 10 enx)) ep (cdr (assoc 11 enx)))
(setq enx (subst (cons 10 ep) (assoc 10 enx) enx))
(setq enx (subst (cons 11 sp) (assoc 11 enx) enx))
(entmod enx)
(entupd li)
)
)
)
;; Reverse 3DPOLYLINE - Marko Ribar, d.i.a.
(defun r3dp ( 3dp / v p pl sfa var )
(vl-load-com)
(if
(and
(= (cdr (assoc 0 (entget 3dp))) "POLYLINE")
(< 7 (cdr (assoc 70 (entget 3dp))) 10)
)
(progn
(setq v 3dp)
(while (= (cdr (assoc 0 (entget (setq v (entnext v))))) "VERTEX")
(setq p (cdr (assoc 10 (entget v))))
(setq pl (cons p pl))
)
(setq pl (apply 'append pl))
(setq sfa (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length pl)))))
(vlax-safearray-fill sfa pl)
(setq var (vlax-make-variant sfa))
(vla-put-coordinates (vlax-ename->vla-object 3dp) var)
(entupd 3dp)
)
)
)
;; Reverse old heavy 2d POLYLINE - Marko Ribar, d.i.a.
(defun rhpl ( hpl / rlw )
(vl-load-com)
(defun rlw ( LW / E X1 X2 X3 X4 X5 X6 )
;; by ElpanovEvgeniy
;; reverse lwpolyline
(if (= (cdr (assoc 0 (setq e (entget lw)))) "LWPOLYLINE")
(progn (foreach a1 e
(cond ((= (car a1) 10) (setq x2 (cons a1 x2)))
((= (car a1) 40) (setq x4 (cons (cons 41 (cdr a1)) x4)))
((= (car a1) 41) (setq x3 (cons (cons 40 (cdr a1)) x3)))
((= (car a1) 42) (setq x5 (cons (cons 42 (- (cdr a1))) x5)))
((= (car a1) 210) (setq x6 (cons a1 x6)))
(t (setq x1 (cons a1 x1)))
)
)
(entmod (append (reverse x1)
(append (apply (function append)
(apply (function mapcar)
(cons 'list
(list x2
(cdr (reverse (cons (car x3) (reverse x3))))
(cdr (reverse (cons (car x4) (reverse x4))))
(cdr (reverse (cons (car x5) (reverse x5))))
)
)
)
)
x6
)
)
)
(entupd lw)
)
)
)
(if
(and
(= (cdr (assoc 0 (entget hpl))) "POLYLINE")
(or
(< -1 (cdr (assoc 70 (entget hpl))) 6)
(< 127 (cdr (assoc 70 (entget hpl))) 134)
)
)
(progn
(cond
( (or (< -1 (cdr (assoc 70 (entget hpl))) 2) (< 127 (cdr (assoc 70 (entget hpl))) 130))
(command "_.CONVERTPOLY" "_L" hpl "")
(rlw hpl)
(command "_.CONVERTPOLY" "_H" hpl "")
(entupd hpl)
)
( (or (< 1 (cdr (assoc 70 (entget hpl))) 4) (< 129 (cdr (assoc 70 (entget hpl))) 132))
(vla-put-type (vlax-ename->vla-object hpl) (- (vla-get-type (vlax-ename->vla-object hpl)) 1))
(command "_.CONVERTPOLY" "_L" hpl "")
(rlw hpl)
(command "_.CONVERTPOLY" "_H" hpl "")
(vla-put-type (vlax-ename->vla-object hpl) (+ (vla-get-type (vlax-ename->vla-object hpl)) 1))
(entupd hpl)
)
( (and (or (< 3 (cdr (assoc 70 (entget hpl))) 6) (< 131 (cdr (assoc 70 (entget hpl))) 134)) (= (cdr (assoc 75 (entget hpl))) 5))
(vla-put-type (vlax-ename->vla-object hpl) (- (vla-get-type (vlax-ename->vla-object hpl)) 2))
(command "_.CONVERTPOLY" "_L" hpl "")
(rlw hpl)
(command "_.CONVERTPOLY" "_H" hpl "")
(vla-put-type (vlax-ename->vla-object hpl) (+ (vla-get-type (vlax-ename->vla-object hpl)) 2))
(entupd hpl)
)
( (and (or (< 3 (cdr (assoc 70 (entget hpl))) 6) (< 131 (cdr (assoc 70 (entget hpl))) 134)) (= (cdr (assoc 75 (entget hpl))) 6))
(vla-put-type (vlax-ename->vla-object hpl) (- (vla-get-type (vlax-ename->vla-object hpl)) 3))
(command "_.CONVERTPOLY" "_L" hpl "")
(rlw hpl)
(command "_.CONVERTPOLY" "_H" hpl "")
(vla-put-type (vlax-ename->vla-object hpl) (+ (vla-get-type (vlax-ename->vla-object hpl)) 3))
(entupd hpl)
)
)
)
)
)
;; Reverse 3DPOLYLINE - Marko Ribar, d.i.a.
(defun r3dp ( 3dp / r3dppol typ )
(defun r3dppol ( 3dp / v p pl sfa var )
(vl-load-com)
(setq v 3dp)
(while (= (cdr (assoc 0 (entget (setq v (entnext v))))) "VERTEX")
(setq p (cdr (assoc 10 (entget v))))
(setq pl (cons p pl))
)
(setq pl (apply 'append pl))
(setq sfa (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length pl)))))
(vlax-safearray-fill sfa pl)
(setq var (vlax-make-variant sfa))
(vla-put-coordinates (vlax-ename->vla-object 3dp) var)
(entupd 3dp)
)
(setq typ (vla-get-type (vlax-ename->vla-object 3dp)))
(vla-put-type (vlax-ename->vla-object 3dp) acsimplepoly)
(r3dppol 3dp)
(if typ (vla-put-type (vlax-ename->vla-object 3dp) typ))
(entupd 3dp)
)
(defun daochieu (ss / count lwp ent obj oname sss revlwpl revln)
(vl-load-com)
(defun revlwpl(/ eo el len)
(setq eo ent)
(setq el (list(assoc 210 ent)))
(while (member (assoc 10 ent) ent)
(if (= 0.0 (assoc 42 ent))
(setq el (cons (assoc 42 ent) el))
(setq el (cons (cons 42 (- (cdr (assoc 42 ent)))) el))
)
(setq el (cons (assoc 41 ent) el))
(setq el (cons (assoc 40 ent) el))
(setq el (cons (assoc 10 ent) el))
(setq ent (member (assoc 10 ent) ent))
(setq ent (cdr ent))
)
(setq len(- (LENGTH eo) (LENGTH (member (assoc 10 eo) eo)) 1))
(while (>= len 0)
(setq el (cons (nth len eo) el))
(setq len (- len 1))
)
(setq ent el)
(entmod ent)
)
(defun revln (/ pt1 pt2)
(setq pt1 (cons 10 (cdr (assoc 11 ent))))
(setq pt2 (cons 11 (cdr (assoc 10 ent))))
(setq ent (subst pt1 (assoc 10 ent) ent))
(setq ent (subst pt2 (assoc 11 ent) ent))
(entmod ent)
)
;;; (princ "\nSelect Lines & Polylines to reverse direction of: ")
;;; (setq ss (ssget '((0 . "POLYLINE,LWPOLYLINE,LINE"))))
(setvar "CMDECHO" 0)
(command "._UNDO" "_BEgin")
(if ss
(progn
(setq count 0 lwp 0)
(while (> (sslength ss) count)
(setq ent (ENTGET (ssname ss count))
obj (vlax-ename->vla-object (ssname ss count))
oname (vlax-get-property obj 'ObjectName)
)
(cond
((= oname "AcDb3dPolyline")(setq lwp(+ 1 lwp)))
((= (cdadr ent) "LWPOLYLINE")(revlwpl))
((= (cdadr ent) "POLYLINE")
(progn
(setq sss (ssadd (ssname ss count)))
(vl-cmdf "convertpoly" "Light" sss "")
(setq ent (ENTGET (ssname sss 0)))
(revlwpl)
)
)
((= (cdadr ent) "LINE")(revln))
)
(setq count (+ count 1))
)
)
)
(command "._UNDO" "_End")
(if(> lwp 0)
(if(> lwp 1)
(princ(strcat "\nCould not reverse " (itoa lwp) " 3dPolylines."))
(princ"\nCould not reverse the 3dPolyline.")
)
)
(princ)
)
[code]