天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 132|回复: 0

在AutoCAD、 中选择实体

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-5-4 18:25:18 | 显示全部楼层 |阅读模式
    选择集

    一个选择集就是AutoCAD当前图形中的一组实体,通过名字加以引用,在这里是一个ads采用name对象。选择集非常类似于AutoCAD实体的“组(group)”。一旦拥有一个选择集,就可以确定组成选择集的实体数量(也称为选择集长度引用)。既然我们知道了选择集的长度,我们就可以使用循环机制遍历选择集中的每个实体,并读取和修改实体。一个实体在一个选择集中只能表示一次,然而一个实体可以属于多个选择集。如果我们有一个选择集ss1,并希望向选择集中添加一条直线实体,我们可以手工选择直线实体。按规则我们可以多次选择直线实体,但在选择集中多次选择的实体只表示一次。假定我们现在创建第二个选择集ss2,并选择同一条直线实体,那么该实体就被加到第二个选择集中。现在直线实体出现在ss1和ss2两个选择集中,但在每一个选择集中直线实体只表达一次。

    选择集是实体的有名集合,选择集中的实体由AutoCAD用户手工选择或依据实体特性加入。依据特性选择实体,如选择“parts”层上半径小于0.25的所有圆,这允许我们把它们的半径改为0.375。选择集甚至可以选择被冻结的图层上的实体。选择集也可以是空的—它只是存放AutoCAD实体的一个容器,就像放糖果的纸袋一样,如果你没有在里面放糖果或者你已把它们全部吃光,纸袋就空了。

    选择集函数              说      明            等效的AutoLISP函数

    acedSSGet()        选择要加到选择集中的实体 ssget

    acedSSLength()  返回指定选择集的长度 sslength

    acedSSAdd()       添加实体到已有选择集或新建一空选择集 ssadd

    acedSSDel()        从已有选择集中删除实体 ssdel

    acedSSName()    在选择集中检索出实体的ads采用name ssname

    acedSSMemb()   测试某实体是否为选择集的成员 ssmemb

    acedSSFree()     释放选择集 —

    1. acedSSGet()[ads采用ssget()]

    选择集是ads采用name对象,为了把实体加入到指定的选择集,必须使用acedSSGet()函数选择实体,或者假如预先知道实体名,则可使用acedSSAdd()函数。

    下面是acedSSGet()函数的定义:acedSSGet()函数返回一个选择集,当指定了一种AutoCAD选取模式时就获得该选择集,选取模式可以通过AutoCAD用户的提示或过滤图形数据库指定。使用acedSSGet()函数有多种方式。首先我们将说明函数中的各个参数,然后阐述使用acedSSGet()函数的各种方式。

    参数str是指定实体选取模式的可选字符串。参数pt1和pt2指定若干选取模式的可选点。对于polygon(多边形)或fence(栏选)选取模式选项,参数pt1还可以是一个含有多个点的结果缓冲区链表。参数filter是一个可选的结果缓冲区链表,能使acedSSGet()函数过滤图形以选择具有某种类型与(或)具有某种特性的实体。无论你使用哪一种模式来获得选择集,都用参数ss来标识选择集的名称。参数str指定要使用哪一种选取模式,它可以是表3-7所列字符串之一。

    从表3-7可以看出有多种选择集的选取模式,如果想探讨所有的选项,可参阅帮助文档。一般我只做两件事:让用户选择实体(NULL选项)或根据特性选择实体(“X”选项)。

    下面是一些有代表性的调用acedSSGet()函数的程序代码。如acutBuildList()函数调用示例那样,对于多边形选项CP和WP(但不包括F)会自动封闭列出的点,不必把终点指定为起点。

    表3-7   acedSSGet()函数的选取模式选项:参数str的值

    值(选取模式) 说      明

    NULL 单点选择(指定pt1)或用户选择(pt1也是NULL)

    “I” 指定PICKFIRST实体集

    “C” Crossing选取模式

    “CP” Crossing polygon选取模式

    “F” Fence(或open polygon)选取模式

    “L” Last选取模式,选择最近生成的实体

    “P” Previous选取模式,选择上一个选择集

    “W” Window选取模式

    “WP” Window Polygon选取模式

    “X” 只用于过滤选取模式

    “G” Groups选取模式

    ” Prompts supplied选取模式

    “:?” “Other” callbacks选取模式

    ” Duplicates allowed选取模式

    “:E” Everything in aperture选取模式

    “:K” Keyword callbacks选取模式

    “:N” Nested选取模式

    “:S” 单一对象选取模式

    “.” 用户选取模式

    “#” 非几何选取模式(all、last、previous)

    “A” All选取模式

    “B” BOX选取模式

    “M” Multiple选取模式

    3.10.1   选择集的过滤

    为了使用选择集过滤模式,参数str必须指定为“X”。选择集过滤模式允许依据特性选择实体。过滤参数是一个结果缓冲区表,在这里给acedSSGet()函数详细说明了要使用的实体种类和特性种类。如果过滤参数是NULL,并且参数str为“X”,则选择集ss将包含当前AutoCAD图形中的每一

    个实体,而不考虑实体是否在冻结的层上。函数调用如下:

    现在选择集ss将包含当前AutoCAD图形中的每一个实体。那么我们怎样选择数据库中所有的圆实体呢?为了有效地使用选择集,必须知道DXF组码。首先我们必须构造一个结果缓冲区,但因为我们只寻找一种实体,所以我们可以使用acutNewRb()函数来创建该结果缓冲区。下面是一段代码实

    例:

    下面的程序代码实例生成由某一图层上所有的实体组成的选择集。图层的DXF组码是8。

    好了,下面我们举一个稍微复杂一点的例子,假定我们要选择“parts”层上的所有圆。这是一个利用acutBuildList()函数构造结果缓冲区表后再传给acedSSGet()函数的实例。

    3.10.2   选择集的关系过滤

    在选择集中可以使用关系运算符。例如:我们要选取“parts”图层上半径大于等于2.0的所有圆。在缺省情况下,acedSSGet()函数选取满足过滤表中所有条件的实体。过滤时每两个项之间的隐含关系是“相等(equals)”。对于数值型组码(整数、实数、点和向量),借助在结果缓冲区中包

    含一个说明关系运算符的特殊组码“-4”可以指定其他的关系运算。该运算符应用于紧跟其后的结果缓冲区项。关系运算符由字符串指定。表3-8列出了所有的关系运算符。

    关系运算符可以用实例来很好地说明,继续我们所举的例子:选取“parts”图层上半径大于等于2.0的所有圆。其程序代码如下:

    表3-8   选择集过滤表的关系运算符关系运算符 说      明

    “*” 任意(始终为真)

    “=” 等于

    “!=” 不等于(C/C++)

    “/=” 不等于(AutoLISP)

    “<>” 不等于

    ““

    “>” 大于

    “>=” 大于或等于

    “&” 按位“与”(只用于整数组码)

    “&=” 按位等于(只用于整数组码)

     

     

     

     

    在AutoCAD、 中选择实体
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 09:25 , Processed in 0.179739 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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