Aw give it a try... I'm sure someone here will help if you get stuck.
This might help you get started
Code:;;;returns slope of line/polyline in profile LPS with help from ronjomp 2008 (defun c:sl () (vl-load-com) (setq ent (entsel)) (if (= (cdr (assoc 0 (entget (car ent)))) "LINE") (progn (setq lst (entget (car ent)) pt1 (cdr (assoc 10 lst)) pt2 (cdr (assoc 11 lst)) x1 (car pt1) y1 (cadr pt1) x2 (car pt2) y2 (cadr pt2) dy (- y2 y1) dx (- x2 x1) slp (* 100 (/ dy dx)) slp2 (/ dx dy) txtx (rtos (abs dx) 2 2) txty (rtos dy 2 2) txts (rtos slp 2 2) txts2 (rtos slp2 2 2) ) ;setq ) ;progn (progn (setq pt (osnap (cadr ent) "nea") ent (car ent) ) ;setq (defun getadjacentplinevertices (ent pt / i p1 p2) (if (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE") (progn (setq i (fix (vlax-curve-getParamAtPoint ent (vlax-curve-getClosestPointTo ent pt) ) ) p1 (vlax-curve-getPointAtParam ent i) p2 (vlax-curve-getPointAtParam ent (+ 1 i)) ) (setq ls1 (list p1 p2)) ) ;progn ) ;if ) ;defun (getadjacentplinevertices ent pt) (setq p1x (car (car ls1)) p1y (cadr (car ls1)) p2x (car (cadr ls1)) p2y (cadr (cadr ls1)) dx (- p2x p1x) dy (- p2y p1y) slp (* 100 (/ dy dx)) slp2 (/ dx dy) txtx (rtos (abs dx) 2 2) txty (rtos dy 2 2) txts (rtos slp 2 2) txts2 (rtos slp2 2 2) ) ;setq ) ;progn ) ;if (prompt (strcat "\nHorizontal distance = " txtx "'" "\nRelief = " txty "'" "\nSlope is " txts "%..." txts2 ":1") ) (princ) )




Reply With Quote


Bookmarks