明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4457|回复: 7

请教:如何提取多段线的周长和面积

[复制链接]
发表于 2012-9-24 15:08:24 | 显示全部楼层 |阅读模式
;;功能:逐个输出周长和面积
(defun C:amm00(/ SSS LLL)

;;;   (setq height(getdist "\n请输入文字高度:") )


   (repeat 50                                ;循环50次
      (if
          (null


    (if(setq e (entsel "请选择一个对象:"))
        (progn
            (vl-load-com)
            (setq modelspace (vla-get-Modelspace (vla-get-activeDocument(vlax-get-acad-object))))
            (setq obj(vlax-entsel->vla-object entsel))

            (if(vlax-property-available-p obj "area")
                (setq SSS (vlax-get-property obj 'area) )
            )
            (if(=(cdr(assoc 0(entget entsel))) "MLINE")
                (setq LLL (ml-length entsel))
                    
            )


            (setq text1(strcat "S: "(rtos (/ SSS 1000000) 2 2) "  m2" "L: "(rtos (/ LLL 1000) 2 2) "  m")
            )
            (if(setq insertpt(getpoint "\n请输入文字插入点: "))
                (setq insertp1(vlax-3d-point insertpt)
                    textobj1 (vla-addtext modelspace text1 insertp1 500)
                )
            )
       )
   )

        
          )
          (exit)
      )
   )

)


我想逐个输出周长和面积,但以上红色的部分没办法提取多段线的周长和面积,向高手求助。谢谢!

 楼主| 发表于 2012-9-24 15:09:35 | 显示全部楼层
补充一下,如何输入文字高度,而不是通过指定距离。
发表于 2012-9-25 22:39:16 | 显示全部楼层
程序有些问题,建议楼主上图并解释清楚意图,相信很多同学都能帮你
 楼主| 发表于 2012-9-26 12:15:10 | 显示全部楼层
已经改好了,还是谢谢学友们的支持!

;;;功能:逐个输出周长和面积
(defun C:amm0(/ ss l i totalarea ename obj entarea  shujuS shujuL)


;;;   (setq height(getdist "\n请输入文字高度:") )

      (setq height(getreal "\n请输入文字高度:") )


   (repeat 50                                ;循环50次
      (if
          (null


    (if(setq ent (entsel "请选择一个对象:"))
        (progn
            (vl-load-com)
            (setq modelspace (vla-get-Modelspace (vla-get-activeDocument(vlax-get-acad-object))))

            (setq SSS 0 LLL 0)
            (setq obj(vlax-ename->vla-object (car ent)))


            (setq text1(strcat "S: "(rtos (/ (vlax-get-property obj 'area) 1000000) 2 2) "  m2" "L: "(rtos (/ (vla-get-Length obj ) 1000) 2 2) "  m")

            )
            (if(setq insertpt(getpoint "\n请输入文字插入点: "))

                (setq insertp1(vlax-3d-point insertpt)

                    textobj1 (vla-addtext modelspace text1 insertp1 500)

                )

            )
       )
   )


        
          )
          (exit)
      )

   )

)
发表于 2014-3-8 15:14:45 | 显示全部楼层
做个记号   
发表于 2014-3-17 13:35:14 | 显示全部楼层
正好用得上,谢谢
发表于 2014-3-17 14:50:16 | 显示全部楼层
印象中有的多线段(vla-get-Length obj )会得不到任何长度
发表于 2015-8-27 21:39:31 | 显示全部楼层
谢谢了,可以用,辛苦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 09:19 , Processed in 0.175076 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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