找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 645|回复: 10

[求助] [求助]:如何寻找与block相交的物体

[复制链接]
发表于 2003-12-23 17:28:10 | 显示全部楼层 |阅读模式

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

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

×
如何寻找与block相交的物体,最有实用价值的例子是轴线圈是block且有attrib,但想找到轴线或其引线。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-12-23 19:06:23 | 显示全部楼层
有规律的实体好办些,对轴圈,你可以简单的以圆心求一个正方形来搜索过滤。比如用ssget的c方式。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-24 15:46:29 | 显示全部楼层
我试验过这种方式了,关键是范围的步长取值大小,大家知道,有的图是1:100而有的是1:1,这样可能导致影响速度的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

 楼主| 发表于 2003-12-24 15:59:02 | 显示全部楼层
最初由 eachy 发布
[B]用 nentsel 选择 [/B]

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-12-24 16:24:35 | 显示全部楼层
最初由 urljit 发布
[B]
nentsel 是什么东东?赐教! [/B]

nentsel 返回的是一个表,对单一实体和entsel 一样,对块等直接返回子实体和块本身。

Prompts the user to select an object (entity) by specifying a point, and provides access to the definition data contained within a complex object

(nentsel [msg])

The nentsel function prompts the user to select an object. The current Object Snap mode is ignored unless the user specifically requests it. To provide additional support at the Command prompt, nentsel honors keywords defined by a previous call to initget.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-24 22:45:01 | 显示全部楼层
详细一点的:
此函数可存取包含在一个插入图元中 (在一个图块内部) 的图元定义数据。

     nentsel 将提示用户选择一个图形。这个函数会忽略 Osnap命令的目前设定(表示没有图形捕捉), 除非您在函数中特别要求它。

    prompt选择项参数如果提供的话, 它必须是一个字符串。如果它被省略, 则表示将发出标准 Select Object:提示语句。当所选择的图形不是一个复合的图元 (一个多段线或图块图形) 时, nentsel 所返回的说明会和 entsel 相同。但是如果所选择的图元是一个多段线, nentsel 将会返回一个包含子图元 (顶点) 和选取点名称的表。这就类似于entsel 所返回来的表, 所不同的是返回来的是选择顶点的名称, 而不是多段线的前导区标头。nentsel 都会返回所选择多段线分段的起始顶点。例如:选取一条多段线的第三个分段将返回第三个顶点。对于一条多段线而言, nentsel 都不会返回 Seqend 子图元。

    当您所选取的图形是一个图块的组件时, nentsel 将传回一个包含四个元素的表, 这四个元素将在下面描述。而例外的情况则是一个图块中的属性 (Attribute)。选择一个图块中的属性将只会返回该属性的名称和选取点 (类似在 entsel 所返回来的表)。

    在一个图块中选取一个图元所返回表的第一个元素是所选择的图元名。第二个名称是一个包含用来选用图元的选取点坐标表。

    第三个元素被称为通用转换矩阵模型。它是一个由四个子串列所组成的表, 每一个子表都包含一组坐标。这个矩阵可用来定义图元数据的点。从一个标为“模型坐标系统”(Model Coordinate System, MCS) 的坐标系统转换成通用坐标系统 (WCS)。包含所选择图元的图块插入点将定义MCS 的原点。当图块被建立时, UCS 的方位将决定 MCS轴的方向。

    第四个元素是一个由包含所选择图元的图块图元名所组成的表。如果所选择的图元包含在一个嵌套的图块中 (一个图块在一个图块里面), 则会输出一个额外的表, 其中将包含在嵌套选择图元中所有图块的图元名称。从最内层的图块开始向外一直到被插入至图形中的图块名称被报告出来为止。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-30 04:42:55 | 显示全部楼层
试验过了,很好,有用!可是如何才能批量处理呢?nentsel只能一次选择一个呀!


提示用户指定点来选择对象(图元),得到这个对象所指片段的对象名
(nentsel [msg])

nentsel 函数提示用户选择一个对象。除非用户专门指定,否则它将忽略当前的对象捕捉模式。为了给命令行提供更多的支持,nentsel 函数支持以前用 initget 定义的关键字。

参数

msg

用作提示信息的字符串。如果省略该参数,则显示“选择对象”提示。

返回值

如果用户选择的不是复杂对象(如三维多段线或块),nentsel 函数返回的信息与 entsel 函数相同。然而,如果所选对象是三维多段线,
nentsel 函数返回一个表,其中包含子图元(顶点)名和拾取点坐标。这与 entsel 函数返回的表类似,不同的是 nentsel 函数返回的是三维多段线的所选顶点名,而不是多段线的头部图元名。nentsel 函数总是返回选定多段线段的起始顶点,例如,拾取某多段线的第三段,返回的是该多段线的第三个顶点。nentsel 函数从不返回三维多段线的 SEQEND 图元。

注意 在图形数据库中,优化多段线定义为简单图元。它不包含子图元。
选择块参照中的属性时,nentsel 返回该属性的属性名和拾取点坐标。如果选取的是块参照的一个部件而不是属性,nentsel 返回一个包含四个元素的表。
拾取了块中的对象而返回的表中,第一个元素是被选中图元的图元名,第二个元素是一个表,其中包含用户拾取该对象时指定点的坐标。
第三个元素称为模型坐标系到世界坐标系的转换矩阵,它是一个包含四个子表的表,四个子表中的每一个都包含了一个坐标集。该矩阵可以用来将图元定义数据中的点从称为模型坐标系 (MCS) 的内部坐标系转换为世界坐标系 (WCS)。MCS 的原点是包含所选图元的块的插入点,而 MCS 轴的方向则由创建该块时 UCS 的方向决定。

注意 nentsel 是唯一一个使用这种类型矩阵的 AutoLISP 函数。nentselp 函数返回的矩阵与其他 AutoLISP 和 ObjectARX 函数使用的矩阵类似。
第四个元素是一个表,它包含了选定对象所在块的图元名。若所选的对象内含在嵌套块中(即块中块),则该表会包括内含该对象的所有块的图元名。该表的排列顺序是从最内层的块开始,向外层推,直到遇到插入图形中的最外层块才结束。
关于将 MCS 坐标转换为 WCS 坐标的信息,请参见Visual LISP 开发人员手册的用 AutoLISP 操纵 AutoCAD 对象一章中的图元上下文和坐标转换数据。

样例

使用线段来绘制一条三维多段线,然后加载并执行下列函数,选择直线的不同线段。取消拾取某条线段,然后重新拾取它,以此来观察子图元的处理。然后在一条优化多段线上重复上述操作,观察其中的区别。

(defun c:subent ()
  (while   
     (setq Ent (entsel "\nPick an entity: "))
     (print (strcat "Entity handle is: "
          (cdr (assoc 5 (entget (car Ent))))))
   )
   (while   
      (setq Ent (nentsel "\nPick an entity or subEntity: "))
      (print (strcat "Entity or subEntity handle is:  "
          (cdr (assoc 5 (entget (car Ent))))))
   )
  (prompt "\nDone.")
  (princ)

)

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 00:11 , Processed in 0.238322 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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