日志正文
|
||
标注坡度.LSP;;;=================================================================* ;;; 通用函数 * ;;;功能:标注坡度 * ;;;参数:pt0 -----第一点 * ;;; pt1 -----第二点 * ;;; ty -----标注形式。1为比值形式;2为百分比形式。 * ;;;返回:如果参数正确绘制完毕返回T;否则返回nil。 * (defun zl-pd-draw (pt0 pt1 ty / ANG DIST DIST_TEXT NUM PT SIZE_TEXT STR TMP XX YY ) (setq size_text 2.5 ;_字高 dist_text 0.5 ;_文字离线距离 ) (if (< (car pt0) (car pt1)) () (setq tmp pt0 pt0 pt1 pt1 tmp ) ) ;;计算文字标注位置 (setq dist (distance pt0 pt1) ang (angle pt0 pt1) ) (setq pt (polar pt0 ang (* 0.5 dist)) pt (polar pt (+ ang (* 0.5 pi)) dist_text) ) ;;计算标注内容 (setq xx (- (car pt1) (car pt0)) yy (- (cadr pt1) (cadr pt0)) ) (cond ((= ty 1) (if (equal yy 0.0 1e-10) (setq str "1:9999") (setq num (/ xx 1.0 yy) str (rtos (abs num) 2 2) str (strcat "1:" str) ) ) ) ((= ty 2) (if (equal xx 0.0 1e-10) (setq str "9999%") (setq num (/ yy 1.0 xx) str (rtos (* 100 num) 2 2) str (strcat str "%") ) ) ) (t (setq str nil)) ) ;;写文字 (if str (PROGN (COMMAND "_.TEXT" "j" "bc" "non" pt size_text (* (/ ang pi) 180) str ) T ) nil ) ) ;;;=================================================================* ;;;功能:点取两点,标注坡度 * ;;;日期:zml84 于 2009-09-22 * (defun c:pd0 (/ pt0 pt1) (princ "功能:点取两点,标注坡度。") (if (and (setq pt0 (getpoint "\n点取第一点: ")) (setq pt1 (getpoint pt0 "\n点取第二点: ")) ) (zl-pd-draw pt0 pt1 2) ) (princ) ) ;;;=================================================================* ;;;功能:选取line,标注坡度(比值形式) * ;;;日期:zml84 于 2009-09-22 * (defun c:pd1 (/ ANG DIST DIST_TEXT ENT I NUM PT PT10 PT11 SIZE_TEXT SS STR TMP XX YY ) (princ "\n功能:标注坡度(比值形式)") (setq i 0) (princ "\n选取直线对象... ") (if (setq ss (ssget '((0 . "line")))) (repeat (sslength ss) (setq ent (entget (ssname ss i)) pt10 (cdr (assoc 10 ent)) pt11 (cdr (assoc 11 ent)) pt10 (trans pt10 0 1) ;_转换为用户坐标系下 pt11 (trans pt11 0 1) ) (zl-pd-draw pt10 pt11 1) (setq i (1+ i)) ) ) (princ) ) ;;;功能:指定坡度、坡长,绘制之。 (defun c:pd2 (/ PT0 PT1 TMP) ;;设置全局变量 (or i_old (setq i_old 0.0) ) (or l_old (setq l_old 100.0) ) ;; (princ "\n1.请输入坡度值(%)<") (princ i_old) (if (setq tmp (getreal ">: ")) (setq i_old tmp) ) ;; (princ "\n2.请输入坡长值<") (princ l_old) (if (setq tmp (getdist ">: ")) (setq l_old tmp) ) ;;绘制 (setq pt0 (getvar "VIEWCTR") pt1 (list (+ (car pt0) l_old) (+ (cadr pt0) (* i_old 0.01 l_old)) ) ) (command "_.line" "non" pt0 "non" pt1 "") ;;移动 (command "_.move" (entlast) "" "non" pt0) (princ) )
阅读(?)评论(0)
|
||
评论 想第一时间抢沙发么?