找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 737|回复: 4

[编程申请]:求某一层中所有PLINE长度的总和?

[复制链接]
发表于 2002-3-12 22:42:46 | 显示全部楼层 |阅读模式

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

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

×
求某一层中所有PLINE长度的总和?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2002-3-13 07:38:24 | 显示全部楼层
用area/a/o/选物体,自动求出总周长,总面积
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-13 08:10:19 | 显示全部楼层

Re: [编程申请]:求某一层中所有PLINE长度的总和?

最初由 YYL 发布
[B]求某一层中所有PLINE长度的总和? [/B]


;|
   命令:cal_poly_len
   功能:计算指定层上的选取的POLYLINE实体的长度总和
   说明: 1.程序允许输入层名也可以拾取指定层上的实体获得层名
           允许交互选择POLYLINE实体,回车全选
         2.计算结果保留4位有效数字,自己可以修改下面程序的(rtos dist 1 4)
           把4改为自己需要的.结果采用科学计数法,若要换10进制,请把上面的1改为2.
         3.程序仅仅对POLYLINE,LWPOLYLINE实体有效,修改下面程序的
           (setq filter....)函数,将*polyline改为其他曲线实体,可以支持所有任意的曲线.
           如"*polyline,line,circle,arc,ellipse,spline"支持所有曲线.
         
         对程序的建议请到晓东CAD空间-论坛
         http://www.xdcad.net/forum "编程申请"
         
   程序需要配合XDRX_API使用
|;


  1. (defun c:cal_clen (/ $get_lyr lyr filter ss e ept dist dist1)
  2.   (defun $get_lyr (/ lyr $pick_lyr)
  3.     (defun $pick_lyr (/ lyr)
  4.       (if (xdrx_entsel "\n请拾取指定层上的一个实体确定层名<退出>:")
  5.         (setq lyr (xdrx_getentdxf 8))
  6.       )
  7.       lyr
  8.     )
  9.     (if (= (setq lyr (getstring "\n请输入层名<拾取>:"))
  10.            ""
  11.         )
  12.       (setq lyr ($pick_lyr))
  13.     )
  14.     lyr
  15.   )
  16.   (if (and
  17.         (setq lyr ($get_lyr))
  18.         (progn
  19.           (setq filter (list (cons 8 lyr) '(0 . "*polyline")))
  20.           (prompt "\n请选择要计算长度的*POLYLINE实体<全选>:")
  21.           (if (not (setq ss (ssget filter)))
  22.             (setq ss (ssget "x" filter))
  23.           )
  24.         )
  25.       )
  26.     (progn
  27.       (xdrx_setsstodb ss 0)
  28.       (setq dist 0)
  29.       (while (setq e (xdrx_getentdata 0))
  30.         (setq ept (xdrx_curve_GetPoint e)
  31.               ept (last ept)
  32.               dist1 (xdrx_curve_getDistAtPoint e ept)
  33.               dist (+ dist1 dist)
  34.         )
  35.       )
  36.       (prompt (strcat "\n层 " lyr " 上所有POLYLINE的长度总和是:"
  37.                       (rtos dist 1 4)
  38.               )
  39.       )
  40.     )
  41.   )
  42.   (princ)
  43. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-3-14 22:01:19 | 显示全部楼层

求spline,polyline,lwpolyline


  1. (defun c:plinearea()
  2.   (setq 总面积 0)
  3.   (setq 面积 0)
  4.   (setq 总周长 0)
  5.   (setq 周长 0)
  6.   (setq k 0)
  7.   (setq a nil)
  8.   (setq a (ssget))
  9.   (setq Len(sslength a))
  10.   (repeat Len
  11.     (setq name(ssname a k))
  12.     (setq ent1(entget name))
  13.     (setq na(assoc 0 ent1))
  14.     (setq na(cdr na))
  15.     (if (= na "SPLINE") (progn
  16.         (command "area" "o" name )
  17.         (setq 面积(getvar "area"))
  18.         (setq 总面积(+ 总面积 面积))
  19.         (setq 周长(getvar "perimeter"))
  20.         (setq 总周长(+ 总周长 周长))
  21.     ))
  22.     (if (= na "POLYLINE") (progn
  23.         (command "area" "o" name )
  24.         (setq 面积(getvar "area"))
  25.         (setq 总面积(+ 总面积 面积))
  26.         (setq 周长(getvar "perimeter"))
  27.         (setq 总周长(+ 总周长 周长))
  28.     ))
  29.     (if (= na "LWPOLYLINE") (progn
  30.         (command "area" "o" name )
  31.         (setq 面积(getvar "area"))
  32.         (setq 总面积(+ 总面积 面积))
  33.         (setq 周长(getvar "perimeter"))
  34.         (setq 总周长(+ 总周长 周长))
  35.     ))
  36.     (setq k(+ k 1))  
  37.   )
  38.   (print "总面积=" )
  39.   (print 总面积)
  40.   (print "总周长=" )
  41.   (print 总周长)
  42. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 13:27 , Processed in 0.407048 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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