找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1000|回复: 4

[每日一码] 遮罩(Wipeout)转面域(Region)

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-25 22:29:55 | 显示全部楼层 |阅读模式

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

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

×
  1. ;;;--------------------------------------------------------------------;
  2. ;;; Description:
  3. ;;; Convert all wipeouts within a given drawing to regions.
  4. ;;;--------------------------------------------------------------------;
  5. ;;; Exit function:
  6. (defun WIPEOUT->REGION:Exit (msg)
  7.   (cond        ((not msg))                        ; Normal exit
  8.         ((member msg '("Function cancelled" "quit / exit abort")))
  9.                                         ; <esc> or (quit)
  10.         ((princ (strcat "\n  <!>  Error: " msg "  <!> ")))
  11.   )                                        ; Fatal error, display it
  12.   (WIPEOUT->REGION:Quit)
  13. )
  14. ;;;--------------------------------------------------------------------;
  15. ;;; Quit function:
  16. (defun WIPEOUT->REGION:Quit ()
  17.   (setvar 'cmdecho *oldCmdecho*)
  18.   (setq *oldCmdecho* nil)
  19.   (setq        *error*        *oldError*
  20.         *oldError* nil
  21.   )
  22.   (vla-endundomark *activeDoc*)
  23.   (princ)
  24. )
  25. ;;;--------------------------------------------------------------------;
  26. ;;; Main function:
  27. (defun c:WIPEOUT->REGION (/ ss)
  28.   (vl-load-com)
  29.   (vla-startundomark
  30.     (cond (*activeDoc*)
  31.           ((setq *activeDoc*
  32.                   (vla-get-activedocument (vlax-get-acad-object))
  33.            )
  34.           )
  35.     )
  36.   )
  37.   ;; Error checking
  38.   (setq        *oldError* *error*
  39.         *error*           WIPEOUT->REGION:Exit
  40.   )
  41.   (setq *oldCmdecho* (getvar 'cmdecho))
  42.   (setvar 'cmdecho 0)
  43.   ;; Main code
  44.   (if (and (setq ss (ssget "_x" '((0 . "WIPEOUT"))))
  45.            (setq ss (ssget "_x"))
  46.       )
  47.     ((lambda (i / e v visList wipList mn mx c)
  48.        (while (setq e (ssname ss (setq i (1+ i))))
  49.          (if (/= "WIPEOUT" (strcase (cdr (assoc 0 (entget e)))))
  50.            (progn (vla-put-visible
  51.                     (setq v (vlax-ename->vla-object e))
  52.                     :vlax-false
  53.                   )
  54.                   (setq visList (cons v visList))
  55.            )
  56.            (setq wipList (cons e wipList))
  57.          )
  58.        )
  59.        (foreach        w wipList
  60.          (vla-getboundingbox
  61.            (setq v (vlax-ename->vla-object w))
  62.            'mn
  63.            'mx
  64.          )
  65.          (setq c (mapcar '*
  66.                          (mapcar '+
  67.                                  (setq mn (vlax-safearray->list mn))
  68.                                  (setq mx (vlax-safearray->list mx))
  69.                          )
  70.                          '(0.5 0.5 0.5)
  71.                  )
  72.          )
  73.          (vl-cmdf "._boundary" c "")
  74.          (vl-cmdf "._matchprop" w (entlast) "")
  75.          (vl-cmdf "._region" (entlast) "")
  76.          (vla-delete v)
  77.        )
  78.        (foreach o visList (vla-put-visible o :vlax-true))
  79.      )
  80.       -1
  81.     )
  82.     (prompt
  83.       "\n  <!>  No Wipeouts Detected in Currect Drawing  <!> "
  84.     )
  85.   )
  86.   (WIPEOUT->REGION:Quit)
  87. )


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

已领礼包: 1227个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 244个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 05:52 , Processed in 0.167629 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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