找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 752|回复: 8

[编程申请]:圆环数目统计的程序!

[复制链接]
发表于 2003-9-30 09:30:34 | 显示全部楼层 |阅读模式

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

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

×
斑竹,我现在遇到个问题。
又很多点,是用画圆环的方式画的,内径为0,外径就是点的直径,一个数。
想统计一个范围内的点的数目。
就是说想先窗选一个范围,然后得出这个范围内的点的数目。
这样可以吗???
谢谢斑竹能帮我想想办法,我现在数点眼睛都看花了,实在是不行了!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-10-1 10:39:23 | 显示全部楼层
用尽可能多的过滤条件,比如层、宽度、线型等等,然后仿照下面的代码

(sslength  (ssget '((0 . "*polyline") (8 . "mylayer") (43 . 1.0))))


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

使用道具 举报

发表于 2003-10-1 10:57:36 | 显示全部楼层
2楼:  你的 "(sslength (ssget '((0 . "*polyline") (8 . "mylayer") (43 . 1.0))))"
把不是圆环的其他POLYLINE也含进來了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-10-1 11:21:40 | 显示全部楼层
最初由 lsjjm 发布
[B]2楼:  你的 "(sslength (ssget '((0 . "*polyline") (8 . "mylayer") (43 . 1.0))))"
把不是圆环的其他POLYLINE也含进來了! [/B]

首先,CAD中没有“圆环实体”,所谓圆环也是用的两个多义线弧段。下图是一个圆环的数据,如果画图时有一定的规则,用黄色部分作过滤应该说基本够了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-10-4 22:30:47 | 显示全部楼层
最初由 xux4618 发布
[B]大家能否多用些ARX [/B]

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-10-5 18:21:52 | 显示全部楼层
圆环就是两个顶点的封闭的多义线,需要增加两个组码判断,注意,这样选择还会将内环半径不为0的圆环选入,如果需要判别出来就必须编程,附加条件:顶点距离=线宽。
(sslength (ssget '((0 . "*polyline") (8 . "mylayer") (43 . 1.0) )(70 . 1) (90 . 2)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-7 14:12:29 | 显示全部楼层
试试这个程序(免爱心币)-----------众人拾柴火焰高!
(defun C:bm(/ border zg r qsbm ss i j n ent p1 p2 coorlist xy tn)
  (setq border (car (entsel "请选择边界多义线:")))
  (setq zg (getreal "标注字体高度:"))
  (setq r (getreal "捕捉圆的半径:"))
  (setq qsbm (getint "起始编码:"))
  (setq ss (ssget "wp" (getcoorfrompl border) (list (cons 0  "CIRCLE") (cons 40 r))))
  (setq tn (sslength ss))
  (setq i 0)
  (princ "\r已完成2%...")
  ;;从圆中取出作坐标信息
  (while (setq ent (ssname ss i))
    (setq xy (cdr (assoc 10 (entget ent))))
    (if coorlist
      (setq coorlist (cons (list xy 0) coorlist))
      (setq coorlist (list (list xy 0)))
    )
    (setq i (1+ i))
  )
  (princ "\r已完成5%...")
  (setq ss nil i 0)
  ;;对坐标进行排序
  (while (setq p1 (nth i coorlist))
    (setq j 0 n qsbm)
    (while (setq p2 (nth j coorlist))
      (if (= 1 (compcoor (car p1) (car p2)))
        (setq n (1+ n))
      )
      (setq j (1+ j))
    )
    (setq coorlist (subst (list (car p1) n) (nth i coorlist) coorlist))
    (princ (strcat "\r已完成" (itoa (+ 5 (/ (* 90 i) tn))) "%..."))
    (setq i (1+ i))
  )
  (setq i 0)
  ;;标注编码
  (while (setq p1 (nth i coorlist))
    (entmake
      (list
        (cons 0 "TEXT")
        (cons 40 zg)
        (list 10 (caar p1) (cadar p1) 0)
        (cons 1 (itoa (cadr p1)))
      )
    )
    (princ (strcat "\r已完成" (itoa (+ 95 (/ (* 5 i) tn))) "%..."))
    (setq i (1+ i))
  )
  (princ "\r编码结束!")(princ)
)


;;从一条多义线中取出坐标列表
(defun getcoorfrompl(pl / coor xy)
  (setq pl (entget pl))
  (setq coor (assoc 10 pl))
  (while coor
    (setq coor (cdr coor))
    (if        (= xy nil)
      (setq xy (list coor))
      (setq xy (cons coor xy))
    )
    (setq pl (cdr (member (assoc 10 pl) pl)))
    (setq coor (assoc 10 pl))
  )
  (setq xy xy)
)

;;比较两个坐标的大小,比较规则:
;;Y为第一关键字,按逆序排列,即最大的为最小
;;X为第二关键字,按正序排列,即最大的为最大
;;如果P1>P2,则返回值为1,相等返回0,小于返回-1
(defun compcoor(p1 p2 / return)
  (if (> (- (cadr p1) (cadr p2)) 0.001)
    (setq return -1)
  )
  (if (< (- (cadr p1) (cadr p2)) 0.001)
    (setq return 1)
  )
  (if (< (abs(- (cadr p1) (cadr p2))) 0.001)
    (if (> (car p1) (car p2))
      (setq return 1)
      (if (= (car p1) (car p2))
        (setq return 0)
        (setq return -1)
      )
    )
  )
  (setq return return)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-7 20:36:57 | 显示全部楼层 |阅读模式

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

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

×
最初由 xux4618 发布
[B]大家能否多用些ARX [/B]


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

本版积分规则

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

GMT+8, 2025-9-21 06:28 , Processed in 0.193951 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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