明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6273|回复: 20

整不下去了,谁帮我完善一下求嵌套面积程序,很有用啊

  [复制链接]
发表于 2012-3-9 14:44:53 | 显示全部楼层 |阅读模式
本帖最后由 soly2006 于 2012-3-9 16:21 编辑

是求个嵌套型的程序,试了半天,还是不行,高手们指点一下。如图,其中825.15是线面积,没扣除的,而要的是718.176面积。

  1. (defun c:t3        () ;主程序
  2.   (setq blc (/ (getvar "USERR1") 1000))
  3.   (if (= blc 0.0)
  4.     (setq blc 0.5)
  5.   )                                        ;设定比例尺
  6.   (While (Progn        (SetQ pen (Car (EntSel "\n指定一条 LWPolyLine: ")))
  7.                 (princ pen)
  8.                 (/= "LWPOLYLINE" (Cdr (Assoc 0 (EntGet pen))))
  9.          )
  10.     (Alert "所指对象不是 PolyLine,请重新指定...")
  11.   )
  12.   (setq bp (getpoint "点取标注位置:"))
  13.   (command ".TEXT"
  14.            bp
  15.            (* blc 6)
  16.            ""
  17.            (strcat "【面 积】 = " (rtos (pll pen) 2 3))
  18.   )
  19.   (princ)
  20. )
  21. ;;; ==================================================================
  22. ;;;              求嵌套线的面积(如果有扣除内部的)                        
  23. ;;; ==================================================================
  24. (Defun PLL (plen / sset1 erea1)
  25.   (PrinC "\n。。。。。")
  26.   (setq        sset1 (ssget "F"
  27.                      (txt1-get-allvertexs plen)
  28.                      '((0 . "LWPolyline") (8 . "面积线"))
  29.               )
  30.   )
  31.         (princ sset1)
  32.   (if (= sset1 NIL)
  33.     (setq erea1 (vlax-curve-getArea (vlax-ename->vla-object plen)))               
  34.                   (progn
  35.                           (setq n (sslength sset1))
  36.                                 (setq j 0)
  37.          (repeat n
  38.                            (setq erea1 (vlax-curve-getArea (vlax-ename->vla-object plen)))
  39.                 (setq erea1 (- erea1 (pll (ssname sset1 0)) ))
  40.                                         (setq j (+ 1 j))
  41.                      )
  42.        )
  43.   )
  44. )

  45. ;;; ==================================================================
  46. ;;;              求多义线所有顶点.返回所有顶点表.
  47. ;;; ==================================================================
  48. (defun txt1-get-allvertexs (ename / plist pp n obj)
  49.   (setq obj (vlax-ename->vla-object ename))
  50.   (setq        plist (vlax-safearray->list
  51.                 (vlax-variant-value
  52.                   (vla-get-coordinates obj)
  53.                 )
  54.               )
  55.   )
  56.   (setq n 0)
  57.   (repeat (/ (length plist) 2)
  58.     (setq pp (append
  59.                pp
  60.                (list (list (nth n plist) (nth (1+ n) plist)))
  61.              )
  62.     )
  63.     (setq n (+ n 2))
  64.   )
  65.   pp
  66. )


文件在这里,上面看起来太乱,为什么?http://bbs.mjtd.com/forum.php?mod=attachment&aid=NjUxNjR8ODg2NjMzNmZlMjE2MjRkNjdhNWM2ODI3MmM4OTliMjh8MTczMjQ4MzU1OQ%3D%3D&request=yes&_f=.lsp



本帖子中包含更多资源

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

x
 楼主| 发表于 2012-3-9 14:46:58 | 显示全部楼层
本帖最后由 soly2006 于 2012-3-9 14:48 编辑

噫 ,发上去了没有乱啊,没经验,各位,看你们的了。或给些思路。其中c:pll改为pll
发表于 2012-3-9 15:41:47 | 显示全部楼层
有必要么,直接转成面域,相减不就可以了?
 楼主| 发表于 2012-3-9 15:48:53 | 显示全部楼层
PhantomFox 发表于 2012-3-9 15:41
有必要么,直接转成面域,相减不就可以了?


单个好说,直接计算器都搞得定,不管用面域与否,都得进行内部判断,
如上图,什么方法统计面积??我说的是程序,不是手工。

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-3-9 16:58:45 | 显示全部楼层
本帖最后由 soly2006 于 2012-3-9 18:09 编辑

自己动手丰衣足食,已解决。
发表于 2013-1-26 13:52:42 | 显示全部楼层
小儿科
发表于 2013-1-26 15:00:00 | 显示全部楼层
soly2006 发表于 2012-3-9 16:58
自己动手丰衣足食,已解决。

请问能否发上dwg文件看看。
谢谢
发表于 2013-1-26 19:44:55 | 显示全部楼层
好像南方就可以哦,,,,,
发表于 2013-1-26 20:39:38 | 显示全部楼层
xiabin68 发表于 2013-1-26 19:44
好像南方就可以哦,,,,,

请问南方有此功能吗?
没有找到
发表于 2013-1-26 20:44:56 | 显示全部楼层
soly2006 发表于 2012-3-9 16:58
自己动手丰衣足食,已解决。

您好:
试了试,楼上的程序或许是我操作有误,没有得到结果。
请指教。
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:25 , Processed in 0.182084 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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