斑竹兄弟帮我看看土方计算程序为什么不能用?
<pre>各位兄弟,你们好!</pre><pre> 帮我看看这个土方计算程序为什么不能用啊,我加载这个程序后,选择闭合线及高程时,</pre><pre> 出现什么除数为0,什么错误。望各位测绘兄弟帮我看看,兄弟感谢了</pre><pre>(defun c:tf (/ a nb np hr n i ai b la h hi s p p1)(princ "选择高程及面积:")
(setq a (ssget '((0 . "text"))))
(setq na 0)
(setq nb 0)
(setq hp 0)
(setq hr 0)
(setq n (sslength a))
(setq i 0)
(repeat n
(setq ai (ssname a i))
(setq i (+ i 1))
(setq b (entget ai))
(setq la (cdr (assoc 8 b)))
(setq h (cdr (assoc 1 b)))
(setq hi (atof h))
(if (or
(= la "YGC")
(= la "ygc")
)
(progn
(setq na (+ na 1))
(setq hp (+ hp hi))
)
)
(if (or
(= la "XGC")
(= la "xgc")
)
(progn
(setq nb (+ nb 1))
(setq hr (+ hr hi))
)
)
(if (or
(= la "MJ")
(= la "mj")
)
(progn
(setq s (substr h 3))
(setq s (atof s))
(setq p (cdr (assoc 10 b)))
(setq p1 (polar p 2 2))
)
)
)
(setq hp (/ hp na))
;(setq hp 11)
(setq hr (/ hr nb))
(setq v 0)
(setq v (* s (- hr hp)))
(setq v (rtos v 2 2))
(setq s (strcat "V=" v))
(setq pt1 (mapcar
'+
pt1
'(0.8 0 0)
)
)
(setq e (list (cons 0 "text") (cons 1 s) (cons 10 p1) (cons 40 0.8)))
(entmake e)
)
(defun c:v ()
(setq a (ssget '((0 . "TEXT"))))
(setq n (sslength a))
(setq i 0)
(setq s 0)
(repeat n
(setq ai (ssname a i))
(setq i (+ i 1))
(setq b (entget ai))
(setq attr (cdr (assoc 0 b)))
(if (= attr "TEXT")
(progn
(setq t (cdr (assoc 1 b)))
(if (< (atof t) 0.000001)
(progn
(setq si (atof (substr t 3)))
(setq s (+ s si))
)
)
)
)
)
(setq p (getpoint "s_location:"))
(setq s (strcat "V=" (rtos s 2 2)))
(command "text" p 1 "" s)
)
(defun c:s ()
(setq a (ssget '((0 . "TEXT"))))
(setq n (sslength a))
(setq i 0)
(setq s 0)
(repeat n
(setq ai (ssname a i))
(setq i (+ i 1))
(setq b (entget ai))
(setq attr (cdr (assoc 0 b)))
(if (= attr "TEXT")
(progn
(setq t (cdr (assoc 1 b)))
(if (< (atof t) 0.000001)
(progn
(setq si (atof (substr t 3)))
(setq s (+ s si))
)
)
)
)
)
(setq p (getpoint "s_location:"))
(setq s (strcat "S=" (rtos s 2 2)))
(command "text" p 1 "" s)
)
(defun c:aa (/ p a s)
(setq e (entlast))
(setq p (getpoint "input text point:"))
(command "BOUNDARY" p "")
(if (equal e (entlast))
(alert "BOUNDARYERROR !")
(progn
(command "AREA" "O" "LAST")
(entdel (entlast))
(setq a (getvar "AREA"))
;(setq zzza(/ a 666.66667))
;(setq zzza(rtos zzza 2 2))
;(setq zzza(strcat "(合" zzza "亩)"))
(setq s (rtos a 2 2))
(setq s (strcat "S=" S))
;(setq s (strcat s "平方米" zzza))
(command "text" p "0.8" "" s)
)
)
)
(defun c:ygc ()
(setq pt1 (getpoint "输入设计高点位?"))
(setq pt1 (mapcar
'+
pt1
'(0.6 -1.5 0)
)
)
(setq str "7.10")
(setq e (list (cons 0 "text")
(cons 1 str)
(cons 8 "YGC")
(cons 10 pt1)
(cons 40 1)
)
)
(entmake e)
)
(defun c:xgc ()
(setq pt1 (getpoint "点位?"))
(setq pt1 (mapcar
'+
pt1
'(0.6 1.5 0)
)
)
(setq str (getstring "Enter text:"))
(setq e (list (cons 0 "text")
(cons 1 str)
(cons 8 "XGC")
(cons 10 pt1)
(cons 40 1)
)
)
(entmake e)
)
(defun tfxyz (ssent / len k ai g xyz x y z dxfvl vl)
(setq vl '())
(if ssent
(progn
(setq len (sslength ssent)
k 0
)
(repeat len
(setq ai (ssname ssent k)
k (1+ k)
)
(setq g (entget ai))
(setq xyz (cdr (assoc 10 g))
x (car xyz)
y (cadr xyz)
)
(if (equal (strcase typ) "TEXT")
(setq z (atof (cdr (assoc 1 g))))
(setq z (caddr xyz))
)
(setq dxfvl (list x y z))
(setq vl (append
vl
(list dxfvl)
)
)
)
)
(setq vl nil)
)
(setq vl vl)
)
(defun tfapf (fna str)
(setq fn (open fna "a"))
(princ str fn)
(close fn)
)
(defun c:zz (/ pa pb a b pc ab ac c)
(setq pa (getpoint "Specify first point:")
pb (getpoint "Specify second point:")
a(getreal "Specify first High:")
b(getreal "Specify second High:")
)
(while (setq pc (getpoint "Specify start point:")
ab (distance (list (car pa) (cadr pa))
(list (car pb)
(cadr pb)
)
)
ac (distance (list (car pa) (cadr pa))
(list (car pc)
(cadr pc)
)
)
c(+ a (* ac (/ (- b a) ab)))
)
(setq e (list (cons 0 "TEXT")
(cons 1 (rtos c 2 2))
(cons 8 "YGC")
(cons 10 pc)
(cons 40 1.0)
(cons 62 1)
)
)
(entmake e)
)
)
(defun tftext (tf_la hh cc / pc c e)
(setq pc (getpoint)
c(getreal)
)
(setq e (list (cons 0 "TEXT")
(cons 1 (rtos c 2 2))
(cons 8 tf_la)
(cons 10 pc)
(cons 40 hh)
(cons 62 cc)
)
)
(entmake e)
)
(defun c:xx () (tftext "sdg" 1.0 1))
(defun c:ss () (tftext "sjg" 1.5 6))
(defun c:bb (/ a b pa pb ab c e)
(setq a(getreal "高程:")
b(getreal "请输入比例系数:")
pa (getpoint "起点:")
)
(while (setq pb (getpoint "到下一个点文本位置:")
ab (distance (list (car pa) (cadr pa))
(list (car pb)
(cadr pb)
)
)
c(+ a (* ab b))
)
(setq e (list (cons 0 "TEXT")
(cons 1 (rtos c 2 2))
(cons 8 "YGC")
(cons 10 pb)
(cons 40 8.0)
(cons 62 1)
)
)
(entmake e)
)
)
(defun c:sdg (/ i lts typ i p0 d str sd sj e px py pe z lts)
(setvar "dimzin" 3)
(SETQ TYP "TEXT")
(prompt "起点距离")
(setq i (getdist))
(prompt "剖面线起点:")
(while (setq p0 (getpoint))
(setq d (strcat "0+" (rtos i 2 2) "\n"))
(tfapf "d:/sdg.txt" d)
(tfapf "d:/sjg.txt" d)
(setq str (ssget '((0 . "TEXT"))))
(setq sd (ssget "p" '((8 . "sdg"))))
(command "select" str "")
(setq sj (ssget "p" '((8 . "sjg"))))
(command "chprop" str "" "c" 2 "")
(foreach e (tfxyz sd)
(setq px (car p0)
py (cadr p0)
p0 (list px py)
)
(setq pe (list (car e) (cadr e)))
(setq d (distance p0 pe))
(setq d (rtos d 2 2))
(setq z (rtos (caddr e) 2 2))
(tfapf "d:/sdg.txt" d)
(tfapf "d:/sdg.txt" " ")
(tfapf "d:/sdg.txt" z)
(tfapf "d:/sdg.txt" "\n")
)
(foreach e (tfxyz sj)
(setq px (car p0)
py (cadr p0)
p0 (list px py)
)
(setq pe (list (car e) (cadr e)))
(setq d (distance p0 pe))
(setq d (rtos d 2 2))
(setq z (rtos (caddr e) 2 2))
(tfapf "d:/sjg.txt" d)
(tfapf "d:/sjg.txt" " ")
(tfapf "d:/sjg.txt" z)
(tfapf "d:/sjg.txt" "\n")
)
(prompt "请量取到下一根剖面线的距离")
(setq lts (getdist))
(setq i (+ lts i))
(prompt "剖面线起点:")
)
)
</pre>
页:
[1]