明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 258|回复: 0

等高线计算土方,必须封闭

[复制链接]
发表于 2023-6-4 20:44 | 显示全部楼层 |阅读模式
本帖最后由 树櫴希德 于 2023-6-4 22:50 编辑

等高线计算土方,必须封闭

  1. ( defun c:dgxtf (  / lst lst1 dgj pt pzx pzx1 mj mj1 tj   )

  2. (vl-load-com)
  3. (alert "本图按照毫米为单位计算等高线土方")
  4. (setq dgj (getreal "\n请输入等高距毫米:"))
  5. (prompt "\n请选择低的一组等高线")

  6. (setq lst (ssget '((0 . "LWPOLYLINE,SPLINE")    )   )  )
  7. (prompt "\n请选择高的一组等高线")

  8. (setq lst1 (ssget '((0 . "LWPOLYLINE,SPLINE")    )   )  )
  9. (setq pt(getpoint "\n请点击体积标注位置:"))
  10. ;选择集与对象名表互转
  11. (defun cx-ss2en
  12.   (ss / enlst)
  13.   (cond
  14.     ((= (type ss) 'PICKSET)
  15.       (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex SS)))
  16.     )
  17.     ((= (type ss) 'LIST)
  18.       (setq enlst (ssadd))
  19.       (last (mapcar '(lambda (x) (ssadd x enlst)) ss))
  20.     )
  21.     ((='ename(type ss))
  22.       (ssadd ss)
  23.     )
  24.   )
  25. )
  26. ;(entget(car(entsel))'("*"))
  27. (setq pzx 0)
  28. (foreach x (cx-ss2en lst)
  29.       (setq mj (vlax-curve-getArea (vlax-ename->vla-object x)) ) ;;;;
  30.     (setq pzx (+ mj pzx))
  31.   (vla-put-color (vlax-ename->vla-object x) 20)
  32.   )
  33. (setq pzx1 0)
  34. (foreach y (cx-ss2en lst1)
  35.       (setq mj1 (vlax-curve-getArea (vlax-ename->vla-object y)) ) ;;;;
  36.     (setq pzx1 (+ mj1 pzx1))
  37.   (vla-put-color (vlax-ename->vla-object y) 223)
  38.   )

  39. (setq tj (/(*  (/ (+(expt (* pzx pzx1) 0.5) pzx pzx1 ) 3.0000)      dgj) 1000000000.0000) )

  40.   ; 6、单行文本
  41. (entmake (list '(0 . "TEXT") (cons 1 (rtos tj 2 3)) (cons 10 pt)(cons 62 3) (cons 40 1000)))
  42. (princ)

  43. )

  44. ;;;;;;;;;;;;;;;;;;;;;;;
  45. ( defun c:dgxtf1 (  / lst lst1 dgj pt pzx pzx1 mj mj1 tj  i )

  46. (vl-load-com)
  47. (alert "本图按照毫米为单位计算等高线土方")
  48. (setq dgj (getreal "\n请输入等高距毫米:"))
  49. (prompt "\n请选择一组等高线")
  50. (setq lst (ssget '((0 . "LWPOLYLINE,SPLINE")    )   )  )
  51. (setq pt(getpoint "\n请点击体积标注位置:"))
  52. (setq pzx '())
  53.   (foreach x (cx-ss2en lst)
  54.     (setq mj (vlax-curve-getArea (vlax-ename->vla-object x)) ) ;;;;
  55.     (setq pzx (append (list mj) pzx))
  56.    
  57.     (vla-put-color (vlax-ename->vla-object x) 20)
  58.      ) (setq pzx (vl-sort pzx '>) )
  59.   (setq i 0)
  60.   (setq pzx1 0)

  61. (repeat   (-(length pzx) 1)
  62.     (setq tj (/(*  (/ (+(expt (* (nth i pzx)  (nth (+ i 1) pzx) ) 0.5) (nth i pzx) (nth (+ i 1) pzx)  ) 3.0000) dgj) 1000000000.0000) )
  63.      (setq pzx1 (+ tj pzx1))
  64. (setq i (1+ i))
  65.   )

  66.   (entmake (list '(0 . "TEXT") '(8 . "zxtj")(cons 1 (rtos pzx1 2 3)) (cons 10 pt)(cons 62 3) (cons 40 1000)))

  67. (princ )
  68.   )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-5 23:10 , Processed in 0.307940 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表