找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3263|回复: 8

[求助] 统计面积求修改

[复制链接]
发表于 2014-5-11 20:13:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
以下是网上找的,首先感谢作者,但是不太适合我,我想做以下修改,但又不会,所以在此请求高手帮忙,感谢
1、将小数点向左移6位,小数位只留2位呢?
2、取消前辍
3、输出设一个开关,需要则输出,不需要则不输出
(defun c:mjjstj(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)
   (vl-load-com)
   (setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))
   (if (= (getvar "TILEMODE") 1)(setq AcadSpc (vla-get-modelspace AcadDoc))(setq AcadSpc (vla-get-paperspace AcadDoc)))
   (setq TextHeight (getdist "\n输入标注文字高度:")
Textbh (getstring "\n输入编号前缀:")
TextIndex 1
)
    (setq f (getfiled "指定输出文件路径" "" "xls" 1) f (open f "a"));;;指定输出文件路径
  (write-line "编号\t面积(㎡)" f)
  (setq ss (ssget '((0 . "CIRCLE,LWPOLYLINE,ELLIPSE"))))
(command "layer" "M" "计算面积" "C" "6" "" "LT" "CONTINUOUS" "" "");设置一个标注图层
(command "style" "tukou" "黑体" "0" "0.7" "0" "" "")
(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
   (setq Selectionset (vla-get-activeselectionset AcadDoc))
   (setq tarea 0 )
   (if (and TextHeight Selectionset TextIndex)
     (vlax-for Obj Selectionset
       (setq ObjArea (vla-get-area obj)
      ObjLlPoint nil
      ObjRuPoint nil
      )
       (vla-GetBoundingBox Obj 'ObjLlPoint 'ObjRuPoint)
       (setq TextBasePoint (mapcar '(lambda(x y) (/ (+ x y) 2)) (vlax-safearray->list ObjLlPoint)(vlax-safearray->list ObjRuPoint))
      TextObj (vla-addtext AcadSpc (strcat Textbh (itoa TextIndex) "=" (rtos (/ ObjArea 1)2 2) "㎡") (vlax-3d-point TextBasePoint) TextHeight)
      )
(write-line (strcat (strcat Textbh (itoa TextIndex)) "\t" (rtos (/ ObjArea 1)2 2) ) f)
       (vla-put-alignment TextObj acAlignmentCenter)
       (vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))
       (setq tarea (+ ObjArea tarea))
       (setq TextIndex (1+ TextIndex))      
       )     
)
(close f)
(setq l (sslength ss))
(setq insPt0 (getpoint "\n请输入文字插入点: "))            
(setq tarea (/ tarea 1))
(setq bb (strcat Textbh"="Textbh"1+"Textbh"2+...+"Textbh (itoa l)"="(rtos tarea 2 2)"㎡"))
(command "_text" insPt0 TextHeight "" bb 0)
  (setvar "cmdecho" 1)
  (prin1)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 3912个

财富等级: 富可敌国

发表于 2014-5-11 21:35:13 | 显示全部楼层
  1. (defun c:mjjstj(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)
  2.     (vl-load-com)
  3.     (setvar "cmdecho" 0)
  4.     (setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))
  5.     (if (= (getvar "TILEMODE") 1)
  6.         (setq AcadSpc (vla-get-modelspace AcadDoc))
  7.         (setq AcadSpc (vla-get-paperspace AcadDoc))
  8.     )
  9.     (if (= (setq TextHeight (getdist "\n输入标注文字高度<2.5>:")) nil)
  10.         (setq TextHeight 2.5) ;默认标注文字高度2.5
  11.     )
  12.     (setq ;Textbh (getstring "\n输入编号前缀:")
  13.           Textbh  "" ;取消前辍
  14.           TextIndex 1
  15.     )
  16.    
  17.     (if (not (setq f (getfiled "指定输出文件路径" "" "xls" 1)))
  18.         (vl-exit-with-error (alert "没有指定输出文件,程序自动结束!"))
  19.         (if (setq ss (ssget '((0 . "CIRCLE,LWPOLYLINE,ELLIPSE"))))
  20.             (progn
  21.                 (setq f (open f "a"));;;指定输出文件路径
  22.                 (write-line "编号\t面积(㎡)" f)
  23.                 (command "layer" "M" "计算面积" "C" "6" "" "LT" "CONTINUOUS" "" "");设置一个标注图层
  24.                 (command "style" "tukou" "黑体" "0" "0.7" "0" "" "")
  25.                 (setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
  26.                 (setq Selectionset (vla-get-activeselectionset AcadDoc))
  27.                 (setq tarea 0 )
  28.                 (vlax-for Obj Selectionset
  29.                     (setq ObjArea (vla-get-area obj)
  30.                           ObjLlPoint nil
  31.                           ObjRuPoint nil
  32.                     )
  33.                     (vla-GetBoundingBox Obj 'ObjLlPoint 'ObjRuPoint)
  34.                     (setq TextBasePoint (mapcar '(lambda(x y) (/ (+ x y) 2)) (vlax-safearray->list ObjLlPoint)(vlax-safearray->list ObjRuPoint))
  35.                           TextObj (vla-addtext AcadSpc ;(strcat Textbh (itoa TextIndex) "=" (rtos (/ ObjArea 1) 2 2) "㎡")
  36.                                                        (strcat Textbh (itoa TextIndex) "=" (rtos (/ ObjArea 1e6) 2 2) "拾万㎡");小数点向左移6位
  37.                                                        (vlax-3d-point TextBasePoint)
  38.                                                        TextHeight
  39.                                    )
  40.                     )
  41.                     ;(write-line (strcat (strcat Textbh (itoa TextIndex)) "\t" (rtos (/ ObjArea 1)2 2) ) f)
  42.                     (write-line (strcat (strcat Textbh (itoa TextIndex)) "\t" (rtos (/ ObjArea 1e6)2 2) ) f);小数点向左移6位
  43.                     (vla-put-alignment TextObj acAlignmentCenter)
  44.                     (vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))
  45.                     ;(setq tarea (+ ObjArea tarea))
  46.                     (setq tarea (+ (/ ObjArea 1e6) tarea));小数点向左移6位
  47.                     (setq TextIndex (1+ TextIndex))
  48.                 )
  49.                 (close f)

  50.                 (if (setq insPt0 (getpoint "\n请输入文字插入点<回车则不写入>:"))
  51.                     (progn
  52.                         (setq l (sslength ss))
  53.                         (setq tarea (/ tarea 1))
  54.                         (setq bb (strcat Textbh "=" Textbh "1+" Textbh "2+...+" Textbh (itoa l) "=" (rtos tarea 2 2) "拾万㎡"))
  55.                         (command "_text" insPt0 TextHeight "" bb 0)
  56.                     )
  57.                 )
  58.             )
  59.          
  60.             (vl-exit-with-error (alert "没有选取任何要算面积的图元,程序自动结束!"))
  61.         )

  62.     )
  63.    
  64.     (setvar "cmdecho" 1)
  65.     (prin1)
  66. )

点评

非常感谢,但是输出还是必须的,能否改一个需要时按Y输出,不想输出则用N,就不用输出呢?  详情 回复 发表于 2014-5-11 21:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-5-11 21:51:42 | 显示全部楼层

非常感谢,但是输出还是必须的,能否改一个需要时按Y输出,不想输出则用N,就不用输出呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1371个

财富等级: 财源广进

发表于 2014-6-9 10:02:21 | 显示全部楼层
{:soso_e100:}顶一下。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2014-9-3 07:30:03 来自手机 | 显示全部楼层
收藏了,正需要
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8972个

财富等级: 富甲天下

发表于 2017-4-22 10:21:57 | 显示全部楼层
感谢分享程序!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2020-9-7 15:19:00 | 显示全部楼层

感谢分享,非常好用
但能不能麻烦优化下排序功能,增加从左到右,从上到下的排序功能,非常感谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 20:08 , Processed in 0.328803 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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