millermin 发表于 2012-12-19 10:52:41

提取块的信息。

一个程序里中间的某个模块,需要提取块中子图元的属性信息,如图层,颜色等等。想用nentsel函数,单独试用该函数写了几句,基本够用了。现在的问题是,nentsel会提示用户选择目标,我想跳过这步,如何让函数直接获得程序里已经存在目标变量?因为我的程序开始已经选过一次目标并赋值给一个变量,所以不想再选择一次同样的目标。或者说如何带参数调用函数nentsel?
不知道说清楚没有。

wowan1314 发表于 2012-12-19 11:56:39

nentselp这个函数楼主看可行不?!
nentsel还真不知道怎么弄

zyhandw 发表于 2012-12-19 16:09:40

对nentsel还不太清楚,所以也想知道,请高手作答

USER2128 发表于 2012-12-19 19:20:43

(entget(car(nentsel "\选取块内实体")))

Gu_xl 发表于 2012-12-19 21:41:00

示例代码:

(defun c:tt ()
(while
    (progn
      (setq en (car (entsel "\n选择图块:")))
      (and en
           (not (= "INSERT" (cdr (assoc 0 (setq el (entget en))))))
      )
    )
)
(vlax-for obj
          (vla-item (vla-get-blocks
                        (vla-get-ActiveDocument (vlax-get-acad-object))
                      )
                      (cdr (assoc 2 el))
          )
    (setq color          (vla-get-color obj)
          layer          (vla-get-layer obj)
          objname (vla-get-objectname obj)
    )
    (princ "\n对象名称 = ")
    (princ objname)
    (princ "\n对象图层 = ")
    (princ layer)
    (princ "\n对象颜色 = ")
    (princ color)
    ;;添加你的操作代码
    ;;...
)
(princ)
)

millermin 发表于 2012-12-20 10:30:53

Gu_xl 发表于 2012-12-19 21:41 static/image/common/back.gif
示例代码:

超级还是有道理。这段代码很有用。我要的全有了。颜色,层,对象名称。这下干什么都行。我也来个超级感谢。

millermin 发表于 2012-12-21 10:26:59

再请问:
这里说的对象名称相当于群码100,同时群码-1也叫对象名称(entity name),有什么区别。感觉-1这个可以作为许多函数的变量,而100就是个字符名称,没有什么用途。是吧?

millermin 发表于 2012-12-21 12:15:02

millermin 发表于 2012-12-21 10:26 static/image/common/back.gif
再请问:
这里说的对象名称相当于群码100,同时群码-1也叫对象名称(entity name),有什么区别。感觉-1这 ...

谢谢。我更喜欢这句程序。不过还是想知道这两种名称的真实意义。因为不搞懂概念,等于没入门。

happysheep 发表于 2014-3-4 17:58:20

Gu_xl 发表于 2012-12-19 21:41 static/image/common/back.gif
示例代码:

这个太有用了!!
页: [1]
查看完整版本: 提取块的信息。