找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: abc498091367

[求助] 请帮忙改改程序.

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-11-13 10:06:16 | 显示全部楼层
(if (setq ss (ssget "x" '((0 . "lwpolyline") (8 . "2"))))
  (progn
    (setq sl (sslength ss))
    (while (setq e (ssname ss (setq sl (1- sl))))
      (vl-cmdf ".explode" e)
    )
  )
)

点评

就是要这效果,真心谢谢!  详情 回复 发表于 2014-11-13 17:14
选择集直接炸开不就行了,还用循环每个实体炸开吗?  详情 回复 发表于 2014-11-13 11:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-13 11:02:32 | 显示全部楼层
csharp 发表于 2014-11-13 10:06
(if (setq ss (ssget "x" '((0 . "lwpolyline") (8 . "2"))))
  (progn
    (setq sl (sslength ss))

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-11-13 11:22:04 | 显示全部楼层
本帖最后由 守仁格竹GM 于 2014-11-13 13:25 编辑

  1. (defun c:pjj ( / pedit-m)
  2.   (defun pedit-m (ss / )
  3.     (setvar  "peditaccept" 1)
  4.     (command "_.Pedit" "_m" ss "" "_j" "" "")
  5.   )
  6.   (princ "\n 本程序用来批量连接线段")
  7.   (pedit-m (ssget '((-4 . "<OR")
  8.                             (0 . "LINE")(0 . "ARC")
  9.                             (-4 . "<AND")(0 . "LWPOLYLINE,POLYLINE")(70 . 0)(-4 . "AND>")
  10.                            (-4 . "OR>")))
  11.   )
  12.   (princ)
  13. )


  1. (defun c:tt( / ss sj-lst)
  2.   (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE")(70 . 1))))
  3.   (setq
  4.     sj-lst
  5.      (mapcar
  6.        '(lambda(x / lst)
  7.            (setq lst(xdrx_GetPropertyValue x "BoundingBox"))
  8.            (list (cdr  (vl-sort
  9.                            (mapcar 'abs (apply 'mapcar (cons '- lst)))
  10.                            '<
  11.                         )
  12.                  )
  13.                  (apply 'xdrx_line_midp lst)
  14.           )
  15.        )
  16.        (xdrx_pickset->ents ss)
  17.     )
  18.   )
  19.   (setq sj-lst (XD::List:GroupByIndex sj-lst 0))
  20. )

这个列表就是你需要的了,剩下的自己就可以处理了,
sj-lst 的数值为(
                           ((长1 宽1) (中心点1) (中心点2))
                           ((长2 宽2) (中心点3) (中心点4))
                          )










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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-13 11:27:38 | 显示全部楼层
newer 发表于 2014-11-13 11:02
选择集直接炸开不就行了,还用循环每个实体炸开吗?

Autolisp  中的  command  explode 受 qaflags 变量影响,但是 2004 下这个变量楼主使用有问题,只好 一个个 explode

点评

那难道说2004下面,就不能选择实体到选择集然后用EXPLODE炸开了,我想显然是不应该的。楼主应该在自己系统上找找原因。  详情 回复 发表于 2014-11-13 12:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-13 11:29:14 | 显示全部楼层
守仁格竹GM 发表于 2014-11-13 11:22
(defun c:pjj ( / pedit-m)
  (defun pedit-m (ss / )
    (setvar  "peditaccept" 1)

既然使用 API,还可以更简单,上面有一段代码可以看看

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-13 12:08:01 | 显示全部楼层
st788796 发表于 2014-11-13 11:27
Autolisp  中的  command  explode 受 qaflags 变量影响,但是 2004 下这个变量楼主使用有问题,只好 一 ...

那难道说2004下面,就不能选择实体到选择集然后用EXPLODE炸开了,我想显然是不应该的。楼主应该在自己系统上找找原因。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-11-13 13:16:29 | 显示全部楼层
st788796 发表于 2014-11-13 11:29
既然使用 API,还可以更简单,上面有一段代码可以看看

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

使用道具 举报

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-13 16:06:15 | 显示全部楼层

把选集往里一丢,返回( ((长1 宽1) 中心1 中心2 ...) ...) ,仅对和 轴 平行矩形
  1. (defun GetRectang (ss / lst)
  2.   (xdrx_curve_join ss)
  3.   (setq        lst (mapcar '(lambda (x / pts)
  4.                        (if (setq pts (xd::polyline:isRectang x))
  5.                          (progn
  6.                            (setq pts (vl-sort
  7.                                        pts
  8.                                        '(lambda        (x1 x2)
  9.                                           (if
  10.                                             (equal (cadr x1) (cadr x2) 1e-3)
  11.                                              (< (car x1) (car x2))
  12.                                              (< (cadr x1) (cadr x2))
  13.                                           )
  14.                                         )
  15.                                      )
  16.                            )
  17.                            (list (list (distance (car pts) (cadr pts))
  18.                                        (distance (car pts) (caddr pts))
  19.                                  )
  20.                                  (xdrx_line_midp (car pts) (caddr pts))
  21.                            )
  22.                          )
  23.                        )
  24.                      )
  25.                     (xdrx_pickset->ents ss)
  26.             )
  27.         lst (xd::list:groupbyindex lst 1e-3)
  28.   )
  29. )
  30. (defun XD::Polyline:IsRectang (e / pts p1 p2 p3 p4)
  31.   (if (and (= (xdrx_getpropertyvalue e "IsA") "AcDbPolyline")
  32.            (setq pts (xdrx_geom_searchoutline e))
  33.            (= (length pts) 5)
  34.            (mapcar 'set '(p1 p2 p3 p4) pts)
  35.            (equal (distance p1 p3) (distance p2 p4) 1e-8)
  36.            (equal (xdrx_line_midp p1 p3) (xdrx_line_midp p2 p4) 1e-8)
  37.       )
  38.     (list p1 p2 p3 p4)
  39.   )
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2014-11-13 17:14:36 | 显示全部楼层
csharp 发表于 2014-11-13 10:06
(if (setq ss (ssget "x" '((0 . "lwpolyline") (8 . "2"))))
  (progn
    (setq sl (sslength ss))

就是要这效果,真心谢谢!{:soso_e163:}{:soso_e163:}

点评

你那程序太麻烦了,看看按照矩形的做法吧。回复楼上有两个都可以用  详情 回复 发表于 2014-11-14 08:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-11-14 08:12:27 | 显示全部楼层
abc498091367 发表于 2014-11-13 17:14
就是要这效果,真心谢谢!

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 09:02 , Processed in 0.251911 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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