Had a few minutes and was feeling generous:
Code:;; Dimension Curve - Lee Mac 2012 (defun c:dimcurve ( / _line _arrow a b cm el en pt ) (defun _line ( a b ) (entmake (list '(0 . "LINE") (cons 10 a) (cons 11 b))) ) (defun _arrow ( a b ) (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 2) '(70 . 0) (cons 10 a) '(40 . 0.0) (cons 41 (/ (distance a b) 3.0)) (cons 10 b) ) ) ) (while (progn (setvar 'errno 0) (setq en (car (entsel))) (cond ( (= 7 (getvar 'errno)) (princ "\nMissed, try again.") ) ( (eq 'ename (type en)) (if (not (wcmatch (cdr (assoc 0 (entget en))) "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,SPLINE")) (princ "\nInvalid Object Selected.") ) ) ) ) ) (if (and en (setq pt (getpoint "\nSpecify Dimension Offset: " (trans (vlax-curve-getpointatparam en (/ (+ (vlax-curve-getendparam en) (vlax-curve-getstartparam en)) 2.0) ) 0 1 ) ) ) ) (progn (setq el (entlast) cm (getvar 'cmdecho) ) (setvar 'cmdecho 0) (command "_.offset" "_T" en "_non" pt "") (setvar 'cmdecho cm) (if (equal el (setq el (entlast))) (princ "\nUnable to Create Dimension Line.") (progn (setq a (vlax-curve-getstartpoint en) b (vlax-curve-getstartpoint el) ) (_line (polar a (angle a b) (/ (distance a b) 6.0)) (polar b (angle a b) (/ (distance a b) 6.0)) ) (setq a (vlax-curve-getendpoint en) b (vlax-curve-getendpoint el) ) (_line (polar a (angle a b) (/ (distance a b) 6.0)) (polar b (angle a b) (/ (distance a b) 6.0)) ) (_arrow (vlax-curve-getstartpoint el) (polar (vlax-curve-getstartpoint el) (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv el (vlax-curve-getstartparam el))) (getvar 'dimasz) ) ) (_arrow (vlax-curve-getendpoint el) (polar (vlax-curve-getendpoint el) (+ pi (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv el (vlax-curve-getendparam el)))) (getvar 'dimasz) ) ) ) ) ) ) (princ) ) (vl-load-com) (princ)




Reply With Quote



Bookmarks