哦,试试看。。。我相信如果你陷入困境,这里会有人帮助你。
这可能会帮助你开始
- ;;;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)
- )
|