找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1265|回复: 1

[他山之石] Display Field Objects

[复制链接]
发表于 2013-8-21 20:40:29 | 显示全部楼层 |阅读模式

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

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

×
  1. ;;----------------=={ Display Field Objects }==---------------;;;;
  2. ;;;;  Prompts user to select a field linked to one or more
  3. ;;;;  objects, then displays which objects are linked to the
  4. ;;;;  selected field.
  5. ;;;;------------------------------------------------------------
  6. ;;;;  Author: Lee Mac, Copyright ? 2011 - www.lee-mac.com
  7. ;;;;------------------------------------------------------------
  8. ;;;;  Version 1.0 -       04-11-2011
  9. ;;;;------------------------------------------------------------;;
  10. (defun c:FieldObjects (/       *error*      _corners->list
  11.          _offsetoutside _midpoint      _inters-box-point
  12.          _outline       _getfieldobjects
  13.          _selectif      a       b
  14.          c       d       e
  15.         )
  16.   (defun *error* (m) (redraw) (princ))
  17.   (defun _corners->list (a b)
  18.     (mapcar (function (lambda (a b) (list (car a) (cadr B))))
  19.      (list a b b a)
  20.      (list a a b B)
  21.     )
  22.   )
  23.   (defun _offsetoutside (a b)
  24.     (mapcar (function
  25.        (lambda (a c)
  26.   (mapcar (function (lambda (a c) ((eval a) c B))) a c)
  27.        )
  28.      )
  29.      '((- -) (+ -) (+ +) (- +))
  30.      a
  31.     )
  32.   )
  33.   (defun _midpoint (a b)
  34.     (mapcar (function (lambda (a b) (/ (+ a B) 2.))) a b)
  35.   )
  36.   (defun _inters-box-point (a b c)
  37.     (vl-some (function (lambda (d e) (inters b c d e)))
  38.       a
  39.       (cons (last a) a)
  40.     )
  41.   )
  42.   (defun _outline (a b c d e / f g)
  43.     (mapcar (function (lambda (a b) (grdraw a b e 1)))
  44.      a
  45.      (cons (last a) a)
  46.     )
  47.     (if (and c
  48.       (setq f (_inters-box-point a b d))
  49.       (setq g (_inters-box-point c d B))
  50. )
  51.       (grdraw f g 2 1)
  52.     )
  53.   )
  54.   (defun _getfieldobjects (a / __getfieldobjects)
  55.     (defun __getfieldobjects (a)
  56.       (apply 'append
  57.       (mapcar (function (lambda (b)
  58.      (if (= 360 (car B))
  59.        (__getfieldobjects (cdr B))
  60.        (if (= 331 (car B))
  61.          (list (cdr B))
  62.        )
  63.      )
  64.           )
  65.        )
  66.        (entget a)
  67.       )
  68.       )
  69.     )
  70.     (if (and (wcmatch (cdr (assoc 0 (setq a (entget a))))
  71.         "TEXT,MTEXT,ATTRIB"
  72.       )
  73.       (setq a (cdr (assoc 360 a)))
  74.       (setq a (dictsearch a "ACAD_FIELD"))
  75.       (setq a (dictsearch (cdr (assoc -1 a)) "TEXT"))
  76.       (setq a (cdr (assoc 360 a)))
  77. )
  78.       (__getfieldobjects a)
  79.     )
  80.   )
  81.   (defun _selectif (a b / c d)
  82.     (setq b (eval B))
  83.     (while
  84.       (progn (setvar 'ERRNO 0)
  85.       (setq c (car (nentsel a)))
  86.       (cond ((= 7 (getvar 'ERRNO)) (princ "\nMissed, try again."))
  87.      ((eq 'ENAME (type c))
  88.       (if (not (setq d (b c)))
  89.         (princ "\nInvalid Object.")
  90.       )
  91.      )
  92.       )
  93.       )
  94.     )
  95.     (if c
  96.       (cons c d)
  97.     )
  98.   )
  99.   (if (setq a
  100.       (mapcar (function
  101.          (lambda (a)
  102.     (vla-getboundingbox (vlax-ename->vla-object a) 'b 'c)
  103.     (setq b (vlax-safearray->list B)
  104.           c (vlax-safearray->list c)
  105.     )
  106.     (list (_corners->list b c) (_midpoint b c))
  107.          )
  108.        )
  109.        (_selectif "\nSelect Field: " '_getfieldobjects)
  110.       )
  111.       )
  112.     (progn
  113.       (princ "\nPress any key to Exit...")
  114.       (while (= 5 (car (setq b (grread t 9))))
  115. (redraw)
  116. (_outline (setq c (cadar a)
  117.    d (_offsetoutside (caar a) (/ (getvar 'VIEWSIZE) 50.))
  118.     )
  119.     nil
  120.     nil
  121.     nil
  122.     3
  123. )
  124. (foreach e (cdr a)
  125.    (_outline (_offsetoutside (car e) (/ (getvar 'VIEWSIZE) 50.))
  126.       (cadr e)
  127.       d
  128.       c
  129.       1
  130.    )
  131. )
  132.       )
  133.     )
  134.   )
  135.   (redraw)
  136.   (princ)
  137. )

评分

参与人数 1D豆 +5 收起 理由
xshrimp + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 604个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 07:11 , Processed in 0.402681 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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