找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3235|回复: 11

[求助] 如何将一个文件里所有的一个图层里的矩形转化成块

[复制链接]
发表于 2014-10-7 14:43:04 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2014-10-7 15:50:13 | 显示全部楼层
  1. (defun c:xx (/ i s1 ss)
  2.   (setq ss (ssget '((0 . "lwpolyline")(8 . "4")(70 . 1)));图层4的闭合多段线
  3.          i (sslength ss)
  4.   )
  5.   (while (setq s1 (ssname ss (setq i (1- i))))
  6.     .....;建块部分,自己完成吧
  7.   )
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 308个

财富等级: 日进斗金

发表于 2014-10-7 18:45:38 | 显示全部楼层
(ssget "x" '((0 . "lwpolyline")(8 . "4")(90 . 4)(70 . 1)))  ??

点评

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

使用道具 举报

发表于 2014-10-7 19:25:17 来自手机 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-10-7 19:26 编辑
仲文玉 发表于 2014-10-7 18:45
(ssget "x" '((0 . "lwpolyline")(8 . "4")(90 . 4)(70 . 1)))  ??


还可以是平行四边形
四边形
5个点外观也可能是四边形

点评

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

使用道具 举报

已领礼包: 79个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-7 22:25:05 | 显示全部楼层
简单组合一个即可,如果加上相同大小的作一个块就要麻烦多了
  1. (defun c:tt (/ ss)
  2.   (if (setq ss (ssget '((0 . "lwpolyline"))))
  3.     (mapcar '(lambda (x / s)
  4.                (if (xd::polyline:isrectang x)
  5.                  (progn
  6.                    (setq s (ssadd))
  7.                    (ssadd x s)
  8.                    (xdrx_block_make s (xdrx_curve_getstartpoint x) t)
  9.                  )
  10.                )
  11.              )
  12.             (xdrx_pickset->ents ss)
  13.     )
  14.   )
  15.   (princ)
  16. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-8 00:24:16 | 显示全部楼层
如果程序要健壮的话,应该先去掉重复点,然后再做其他的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-8 05:58:50 来自手机 | 显示全部楼层
isRectang是对AcDbCurve操作,已经执行了compress, 如果不改动原曲线可以用XDGE的AcGe曲线判断
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10395个

财富等级: 富甲天下

发表于 2014-10-8 21:19:38 | 显示全部楼层
可以用同一个块替换
  1. ;矩形变块 晓东 zxq0220 2014.10.8
  2. (defun c:tt ()
  3. (setvar "CMDECHO" 0)
  4. (setq slst (list))
  5. (if (setq ss (ssget "X" '((0 . "LWPOLYLINE")(8 . "4")(70 . 1)))) (progn
  6.   (command "_.RECTANG" "0,0" "1,1")
  7.   (command "-BLOCK" "BOX" "0,0" "L" "")
  8.   (repeat (setq i (sslength ss))
  9.    (setq en (ssname ss (setq i (1- i))))
  10.    (setq ent (entget en))
  11.    (if (= (cdr(assoc 90)) 4) (progn
  12.     (setq ptlst (list))
  13.     (foreach x ent (if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst))))
  14.     (if (equal (distance(car ptlst)(caddr ptlst))(distance(cadr ptlst)(last ptlst)) 1e-6)
  15.     (progn
  16.      (setq ang (angle (car ptlst) (cadr ptlst)))
  17.      (setq x (distance (car ptlst) (cadr ptlst)))
  18.      (setq y (distance (cadr ptlst) (caddr ptlst)))
  19.      (command "-INSERT" "BOX" (car ptlst) x y (/ (* ang 180) pi))
  20.     ))
  21.    ))
  22.   )
  23. ))
  24. (setvar "CMDECHO" 1)
  25. (princ)
  26. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 22:07 , Processed in 0.235163 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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