soly2006 发表于 2012-3-9 14:44:53

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

本帖最后由 soly2006 于 2012-3-9 16:21 编辑

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

(defun c:t3        () ;主程序
(setq blc (/ (getvar "USERR1") 1000))
(if (= blc 0.0)
    (setq blc 0.5)
)                                        ;设定比例尺
(While (Progn        (SetQ pen (Car (EntSel "\n指定一条 LWPolyLine: ")))
                (princ pen)
                (/= "LWPOLYLINE" (Cdr (Assoc 0 (EntGet pen))))
       )
    (Alert "所指对象不是 PolyLine,请重新指定...")
)
(setq bp (getpoint "点取标注位置:"))
(command ".TEXT"
           bp
           (* blc 6)
           ""
           (strcat "【面 积】 = " (rtos (pll pen) 2 3))
)
(princ)
)
;;; ==================================================================
;;;            求嵌套线的面积(如果有扣除内部的)                        
;;; ==================================================================
(Defun PLL (plen / sset1 erea1)
(PrinC "\n。。。。。")
(setq        sset1 (ssget "F"
                     (txt1-get-allvertexs plen)
                     '((0 . "LWPolyline") (8 . "面积线"))
              )
)
        (princ sset1)
(if (= sset1 NIL)
    (setq erea1 (vlax-curve-getArea (vlax-ename->vla-object plen)))               
                  (progn
                          (setq n (sslength sset1))
                                (setq j 0)
         (repeat n
                           (setq erea1 (vlax-curve-getArea (vlax-ename->vla-object plen)))
                (setq erea1 (- erea1 (pll (ssname sset1 0)) ))
                                        (setq j (+ 1 j))
                     )
       )
)
)

;;; ==================================================================
;;;            求多义线所有顶点.返回所有顶点表.
;;; ==================================================================
(defun txt1-get-allvertexs (ename / plist pp n obj)
(setq obj (vlax-ename->vla-object ename))
(setq        plist (vlax-safearray->list
                (vlax-variant-value
                  (vla-get-coordinates obj)
                )
              )
)
(setq n 0)
(repeat (/ (length plist) 2)
    (setq pp (append
             pp
             (list (list (nth n plist) (nth (1+ n) plist)))
             )
    )
    (setq n (+ n 2))
)
pp
)

文件在这里,上面看起来太乱,为什么?attach://65164.lsp



soly2006 发表于 2012-3-9 14:46:58

本帖最后由 soly2006 于 2012-3-9 14:48 编辑

噫 ,发上去了没有乱啊,没经验,各位,看你们的了。或给些思路。其中c:pll改为pll

PhantomFox 发表于 2012-3-9 15:41:47

有必要么,直接转成面域,相减不就可以了?

soly2006 发表于 2012-3-9 15:48:53

PhantomFox 发表于 2012-3-9 15:41 static/image/common/back.gif
有必要么,直接转成面域,相减不就可以了?


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

soly2006 发表于 2012-3-9 16:58:45

本帖最后由 soly2006 于 2012-3-9 18:09 编辑

自己动手丰衣足食,已解决。

wau2000022 发表于 2013-1-26 13:52:42

小儿科

461045462 发表于 2013-1-26 15:00:00

soly2006 发表于 2012-3-9 16:58 static/image/common/back.gif
自己动手丰衣足食,已解决。

请问能否发上dwg文件看看。
谢谢

xiabin68 发表于 2013-1-26 19:44:55

好像南方就可以哦,,,,,

461045462 发表于 2013-1-26 20:39:38

xiabin68 发表于 2013-1-26 19:44 static/image/common/back.gif
好像南方就可以哦,,,,,

请问南方有此功能吗?
没有找到

461045462 发表于 2013-1-26 20:44:56

soly2006 发表于 2012-3-9 16:58 static/image/common/back.gif
自己动手丰衣足食,已解决。

您好:
试了试,楼上的程序或许是我操作有误,没有得到结果。
请指教。
谢谢!
页: [1] 2 3
查看完整版本: 整不下去了,谁帮我完善一下求嵌套面积程序,很有用啊