找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 964|回复: 11

[求助] 线长统计与比对

[复制链接]
发表于 2016-12-16 23:35:14 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 行雲 于 2016-12-17 00:10 编辑

一个统计线长的代码,当单个线长的乘积小于比对值时,转为统计个数;当单个线长的乘积大于比对值时,则统计周长。

目前,比对排除(< jinjia xiaokong)) 不能起做用。另外该比对功能想让它应用到   daca    (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent))上去,也就是说对功能不仅对圆有效,也对多义线有效

想请高人帮忙改改,谢谢

[pre](defun c:tt ()
  (setq danjia (getreal "单价:<0.03>"))
  (if (= danjia nil)
    (setq danjia 0.03)
  )
  (setq xiaokong (getreal "基价:<8>"))
  (if (= xiaokong nil)
    (setq xiaokong 8.0)
  )
  (setq huodu (getreal "厚度:<25>"))
  (if (= huodu nil)
    (setq huodu 25.0)
  )
  (setq ss (ssget ":L" '((0 . "arc,circle,ellipse,*line"))))
  (if (and
        ss
        (= (type danjia) 'real)
        (= (type huodu) 'real)
        (= (type xiaokong) 'real)
      )
    (progn
      (setq n 0)
      (setq zc 0)
      (setq holeno 0)
      (setq zcprs 0)
      (repeat (sslength ss)
        (setq ent (ssname ss n)
              daca (vlax-curve-getdistatparam ent
                                              (vlax-curve-getendparam ent)
                   )
              jinjia (* danjia (* daca huodu))
              *厚度*单价=比对价
        )
        (if (and
              (= "circle" (cdr (assoc 0 (entget ent))))
              (< jinjia xiaokong)
            )
          (setq jinjia 0
                daca 0
                holeno (+ 1 holeno)
          )
        )
        (setq zc (+ zc daca)
              zcprs (+ zcprs jinjia)
              n (1+ n)
        )
      )
      (setq tprs (+ zcprs (* xiaokong holeno)))
    )
  )
)

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-16 23:44:19 | 显示全部楼层
楼主,你最好先学会如何贴格式化的代码,你编辑下帖子,看看里面是怎么写的。

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-16 23:48:24 | 显示全部楼层
还有,你求曲线长度的代码
(vlax-curve-getdistatparam ent (vlax-curve-getendparam ent))
用下面的替代更好理解些
(vla-get-length (vlax-ename->vla-object ent))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-16 23:52:04 | 显示全部楼层
(if (and
              (= "circle" (cdr (assoc 0 (entget ent))))
              (< jinjia xiaokong)
            )
  ....
)
这个地方 (= "circle" (cdr (assoc 0 (entget ent)))) 就是限制只对圆有效了,你把这行变成
(if (< jinjia xiaokong)
  ....
)

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

使用道具 举报

 楼主| 发表于 2016-12-16 23:58:18 | 显示全部楼层

你好,可以帮忙改改么?就是单个图元(如圆 或串接的多义线)与那些变量的乘积,小于比对值时,归类为数量统计。大于的,则线长累加
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-17 00:02:07 | 显示全部楼层

重点是想让该比对也应用到多义线上去,只对圆有效,没有意义
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-17 00:33:01 | 显示全部楼层

不是已经告诉你了吗,把限制只对圆有效的判断代码去掉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-17 00:40:15 | 显示全部楼层
本帖最后由 行雲 于 2016-12-17 00:42 编辑

你好,是这样吗?
  (setq ss (ssget ":L" '((0 . "arc,circle,ellipse,*line"))))
  (if (and ss (= (type danjia) 'real) (= (type huodu) 'real) (= (type jijia) 'real))
    (progn
      (setq n 0)
      (setq zoca 0)
      (setq geshu 0)
      (setq bijazs 0)
      (repeat (sslength ss)
(setq
   ent  (ssname ss n)
   daca (vla-get-length (vlax-ename->vla-object ent))
   bija (* danjia (* daca huodu))
   )
(if (< bija  xiaokong))
   (setq
     bija 0
     daca 0
     geshu (+ 1 geshu)
     )
   )
(setq
   zoca   (+ zoca daca)
   bijazs (+ bijazs bija)
   n      (1+ n)
   )
)
      (setq tprs (+ bijazs (*  xiaokong geshu)))
      )
    )

cad报   错误: 语法错误,不只哪里闭括号有问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-17 01:18:51 | 显示全部楼层
(if (< bija  xiaokong))  这个地方括号就有问题,
改成
(if (< bija  xiaokong)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-17 01:42:04 | 显示全部楼层

狂谢啊,,大师
还有一个问题,想分别求出这些单个图元的几何中心点怎么求啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-17 02:04:24 | 显示全部楼层

就这个LISP分论坛,最近几页,去找,有帖子给了代码求对象的中点, LispHK或者marting的帖子,你找找。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6845个

财富等级: 富甲天下

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 14:22 , Processed in 0.195238 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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