找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 693|回复: 1

[求助]:如何得到块名称?

[复制链接]
发表于 2002-3-19 01:24:23 | 显示全部楼层 |阅读模式

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

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

×
我在编程时遇到如下的问题:
在图纸中有一个块(名为风口或其他)
块上有一个点P1,
用程序选取此点后,如何用程序来得到通过该点的块的名称。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-19 01:39:47 | 显示全部楼层

Re: [求助]:如何得到块名称?

最初由 xyzjint_cn 发布
[B]我在编程时遇到如下的问题:
在图纸中有一个块(名为风口或其他)
块上有一个点P1,
用程序选取此点后,如何用程序来得到通过该点的块的名称。 [/B]


可以使用XDRX_API的构造过一个点的选择集,得到选择集了,然后得到块实体,然后得到块实体的组码2就是块名了。如果开始用ENTSEL拾取,就更方便了。
xdrx_entsel可以使用过滤的,见下面的用法...



30.xdrx_GetPtSs

功能:构造通过一点的符合过滤要求的实体选择集

调用格式:(xdrx_GetPtSs <pt> [提示字符串]  [拾取窗半宽] [英文层名或中文层索引名] [内部数据库选择集编号][过滤表])         

说明:1.层名: 可以写作 "abc", "a*", "a??", "*" 等, 省略层名等价于 "*"。
     2.内部数据库选择集编号: 该参数为 1 - 10, 将取得的选择集存入xdrx内部数据库中的 ARX 变量,
       并将 (ssname) 当前实体指针 i 置 0。
     3.过滤表为LISP中的过滤表,如'((8 . "abc")(0 . "line")....),也支持AND,OR,NOT等
     4.若过滤表中提供层组码8,则前面的“英文层名或中文索引名”选项不起作用。

返回值:成功返回  选择集, 失败返回 nil。

31. xdrx_entsel

功能:单选符合过滤表条件的实体,LISP 函数(entsel)的增强。并将该实体的(entget)实体数据存入XDRX内部数据库的ARX变量,
      供相关函数调用。

调用格式:(xdrx_entsel <提示字符串> [英文层名或中文索引层名] [实体选择项] [SSGET过滤表])

说明:1.若提供SSGET过滤表如'((8 . "a*")(0 . "*line")...),若SSGET过滤表中提供层组码8,则忽略前面的[英文层名或中文索引层名]。
       若SSGET过滤表中没有提供层组码8,若前面设置了 [英文层名或中文索引层名],则将英文层面用(cons 8 ename),若中文索引,则求
       出中文索引对应的英文层名后,加入SSGET过滤表中。
     2.[实体选择项] 值为0,1,2, 若给其他值,函数返回NIL退出。
     3.[实体选择项]含义:(不提供,默认为0)
         若符合条件的实体不是一个(如有重复实体,或拾取框中范围符合条件的实体多于一个)
         0:返回任意一个符合条件的提示和最近捕捉点
         1:弹出选项 请选取符合条件的实体/X-退出/Y-确定/<下一个>:
            若输入X,则退出函数,返回NIL.
            若输入Y,则返回当前亮显的实体名和最近捕捉点
            输入回车(或鼠标右键),则循环亮显实体,供用户选择,直到输入Y确认为止。
提示: 允许配合使用函数(initget)。

返回值:成功返回表(图元名  最近捕捉点), 失败返回 nil。


  1. 示例: 点选图层“轴线”层的LINE实体
  2.      (if (setq e (xdrx_entsel "\n请点选轴线实体<退出>:" "轴线" 0 '((0 . "line"))))
  3.         (progn
  4.            ...
  5.         )
  6.      )
  7.      或者
  8.      (if (setq e (xdrx_entsel "\n请点选轴线实体<退出>:" "dote"  '((0 . "line"))))
  9.         (progn
  10.            ...
  11.         )
  12.      )
  13.      或者
  14.      (if (setq e (xdrx_entsel "\n请点选轴线实体<退出>:"  0 (list (xdrx_getlyrname "轴线")'(0 . "line")))))
  15.         (progn
  16.            ...
  17.         )
  18.      )

     提示:函数xdrx_getlyrname 提取中文索引层名对应的英文层名。索引定义在文件layerdef.dat中。
     
     提示:该函数做完后,可以不提供参数使用xdrx_setenttodb
         即:(xdrx_setenttodb)等价于(xdrx_setenttodb (car e))
         因为不提供参数,XDRX_SETENTTODB函数将当前内部数据库中的(entget)实体数据放入ARX变量。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 14:00 , Processed in 0.379388 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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