找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1907|回复: 9

[求助] 求块内和非块内填充一次全部后置lisp

[复制链接]
发表于 2014-7-9 09:27:25 | 显示全部楼层 |阅读模式

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

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

×
不是块内的填充后置当然有啦

(defun c:tchz ()
  (if (ssget "_x" '((0 . "HATCH")))
    (command "_draworder" "p" "" "_b")
  )
  (command "regen")
  (princ)
)


但是块内的填充后置不会,求高手


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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-7-9 11:22:04 | 显示全部楼层
本帖最后由 st788796 于 2014-7-9 11:45 编辑

没有测试,大致思路
  1. (defun c:tt (/ blkdef blkdefents ss)
  2.   (setq        blkdef           (vl-remove-if
  3.                      '(lambda (x)
  4.                         (wcmatch (car x) "`**_Space*")
  5.                       )
  6.                      (XD::Object:Get "Block")
  7.                    )
  8.         blkdefents (vl-remove
  9.                      nil
  10.                      (mapcar
  11.                        '(lambda        (x)
  12.                           (vl-remove-if-not
  13.                             '(lambda (a)
  14.                                (wcmatch        (xdrx_getpropertyvalue a "IsA")
  15.                                         "*HATCH"
  16.                                )
  17.                              )
  18.                             (xdrx_getpropertyvalue x "AllEntities")
  19.                           )
  20.                         )
  21.                        blkdef
  22.                      )
  23.                    )
  24.   )
  25.   (if (setq ss (ssget "x" '((0 . "hatch"))))
  26.     (apply 'xdrx_draworder->back
  27.            (append (list ss) (apply 'append blkdefents))
  28.     )
  29.     (if        blkdefents
  30.       (apply 'xdrx_draworder->back (apply 'append blkdefents))
  31.     )
  32.   )
  33.   (princ)
  34. )

点评

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

使用道具 举报

发表于 2014-7-10 09:08:27 | 显示全部楼层
谢谢楼主分享,辛苦了!
还是希望所有人发的代码都经过调试的才好。一是自己发无法运行的代码,心内也会产生挫折感的。二是,一人不调试,却造成多数下载试用的人不知所措。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-17 14:59:16 | 显示全部楼层
st788796 发表于 2014-7-9 11:22
没有测试,大致思路

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-7-17 15:51:03 | 显示全部楼层
  1. ;;块内填充对象置后,CAD2005以上版本适用 By Gu_xl 2014.07.17
  2. (defun c:tt (/ en sortents dict blockdef lst Doc)
  3.   (if (and (setq en (car (entsel "\n选择块:")))
  4.      (= "INSERT" (cdr (assoc 0 (setq en (entget en)))))
  5.       )
  6.     (progn
  7.       (cond
  8.   (
  9.    (not
  10.      (VL-CATCH-ALL-ERROR-P
  11.        (setq sortents
  12.         (VL-CATCH-ALL-APPLY
  13.           'vla-item
  14.           (list
  15.       (setq dict
  16.              (vla-GetExtensionDictionary
  17.          (setq blockdef
  18.           (vla-item
  19.             (vla-get-blocks
  20.               (setq doc
  21.                (vla-get-ActiveDocument
  22.                  (vlax-get-acad-object)
  23.                )
  24.               )
  25.             )
  26.             (cdr (assoc 2 en))
  27.           )
  28.          )
  29.              )
  30.       )
  31.       "ACAD_SORTENTS"
  32.           )
  33.         )
  34.        )
  35.      )
  36.    )
  37.   )
  38.   ((setq sortents
  39.     (VL-CATCH-ALL-APPLY
  40.       'vla-AddObject
  41.       (list dict "ACAD_SORTENTS" "AcDbSortentsTable")
  42.     )
  43.    )
  44.   )
  45.       )
  46.       (vlax-for  obj blockdef
  47.   (if (= "AcDbHatch" (vla-get-objectname obj))
  48.     (setq lst (cons obj lst))
  49.   )
  50.       )
  51.       (if lst
  52.   (progn
  53.     (vla-MoveToBottom
  54.       sortents
  55.       (vlax-make-variant
  56.         (vlax-safearray-fill
  57.     (vlax-make-safearray
  58.       vlax-vbobject
  59.       (cons 0 (1- (length lst)))
  60.     )
  61.     lst
  62.         )
  63.       )
  64.     )
  65.     (vla-regen doc :vlax-true)
  66.   )
  67.       )
  68.     )
  69.   )
  70.   (princ)
  71. )

点评

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

使用道具 举报

 楼主| 发表于 2014-7-17 17:11:29 | 显示全部楼层

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-7-17 18:40:12 | 显示全部楼层
zippo11 发表于 2014-7-17 17:11
能不能不选择,一个命令所有填充后置?

  1. ;;一键所有填充对象置后显示,CAD2005以上版本适用 By Gu_xl 2014.07.17
  2. (defun c:tt1 (/ sortents dict  lst Doc)
  3.   (setq  doc
  4.    (vla-get-ActiveDocument
  5.      (vlax-get-acad-object)
  6.    )
  7.   )
  8.   (vlax-for blockdef (vla-get-blocks doc)
  9.     (cond
  10.       (
  11.        (not
  12.    (VL-CATCH-ALL-ERROR-P
  13.      (setq sortents
  14.       (VL-CATCH-ALL-APPLY
  15.         'vla-item
  16.         (list
  17.           (setq dict
  18.            (vla-GetExtensionDictionary
  19.              blockdef
  20.            )
  21.           )
  22.           "ACAD_SORTENTS"
  23.         )
  24.       )
  25.      )
  26.    )
  27.        )
  28.       )
  29.       ((setq sortents
  30.         (VL-CATCH-ALL-APPLY
  31.     'vla-AddObject
  32.     (list dict "ACAD_SORTENTS" "AcDbSortentsTable")
  33.         )
  34.        )
  35.       )
  36.     )
  37.     (setq lst nil)
  38.     (vlax-for obj blockdef
  39.       (if (= "AcDbHatch" (vla-get-objectname obj))
  40.   (setq lst (cons obj lst))
  41.       )
  42.     )
  43.     (if  lst
  44.       (progn
  45.   (vla-MoveToBottom
  46.     sortents
  47.     (vlax-make-variant
  48.       (vlax-safearray-fill
  49.         (vlax-make-safearray
  50.     vlax-vbobject
  51.     (cons 0 (1- (length lst)))
  52.         )
  53.         lst
  54.       )
  55.     )
  56.   )

  57.       )
  58.     )
  59.   )
  60.   (vla-regen doc :vlax-true)
  61.   (princ)
  62. )

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

使用道具 举报

 楼主| 发表于 2014-7-18 09:40:25 | 显示全部楼层

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

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 08:36 , Processed in 0.342216 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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