计算挖方和填方标高
尊敬的各位,请在此附上显示两个级别的样本图纸层“竣工标高”和“OGL”(原始地面标高)均位于网格线内。我需要得到OGL减去AS的不同值,并将其放置在同一位置,以作为一个单独的图形显示,如果数字不多,那么手动或通过Microsoft excel可以完成,问题是,我面临的是15000点左右及以上。
希望有人能帮助我(我手动使用“转移到Microsoft excel”并转移回autocad似乎不是一个好主意。
希望这里的大师能帮上忙。
提前谢谢。
OGL-AS。图纸 像这样的??我已经把文字放在图层0上,只需指定一个不同的图层,这样你就可以选择它并将其移动到另一个图形。
加载并键入TXTHTS以运行。
史蒂夫 亲爱的steve1,感谢您的帮助,但我发现输出的值不如OGL-as正确?是我错过了什么吗? steve1,我发现如果我只取一个点并尝试完美,但如果我尝试两个或多个点,结果就会变得不正确。请帮忙 亲爱的steve1,Lisp程序看起来像是取一个OGL减去所有AS,而不是单个OGL减去单个AS。。。 啊,对不起,一个小瑕疵。我更新了上面的帖子。试试看,让我知道,
史蒂夫 我能说什么steve1哇!它工作得很好!!但是我们可以选择要处理的部分吗?因为我有15000多个点,一次处理需要很长时间。非常感谢Steve1 奇怪,应该不会花那么长时间。。。
如果您只想选择一部分,请尝试以下操作:
(defun c:txtHts (/ ss i j en en2 ht1 ht2 ht3 pt1 pt2 flag)
(princ "\nSelect Text: ")
(setq ss (ssget '((0 . "TEXT")(8 . "AS,OGL")))
i -1)
(while (setq en (ssname ss (setq i (1+ i))))
(if (eq (cdr (assoc 8 (entget en))) "AS")
(progn
(setq ht1 (atof (cdr (assoc 1 (entget en))))
pt1 (cdr (assoc 10 (entget en)))
j -1
flag nil)
(while (and (not flag)
(setq en2 (ssname ss (setq j (1+ j)))))
(if (eq (cdr (assoc 8 (entget en2))) "OGL")
(progn
(setq pt2 (cdr (assoc 10 (entget en2))))
(if (and (equal (car pt1) (car pt2) 0.5)
(equal (cadr pt1) (cadr pt2) 0.5))
(setq flag T)
)
)
)
)
(if flag
(progn
(setq ht2 (atof (cdr (assoc 1 (entget en2)))))
(setq ht3 (- ht2 ht1))
(entmake (list (cons 0 "TEXT")
(cons 1 (rtos ht3 2 2))
(cons 8 "0")
(cons 10 pt1)
(cons 40 0.2)
(cons 100 "AcDbEntity")
(cons 100 "AcDbText")
)
)
)(princ "\nOGL Text Not Found.")
)
)
)
)
(princ)
) 我不知道该说什么,史蒂夫,多亏了你!!(处理所有数据需要一些时间,因为这真的很多,所以我认为这很正常) 不客气。
页:
[1]
2