天气与日历 切换到窄版

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

ObjectARX中acedSSGet选择块定义名称包含“#“字符的图块

[复制链接]
  • TA的每日心情
    开心
    前天 06:18
  • 签到天数: 49 天

    [LV.5]常住居民I

    185

    主题

    150

    回帖

    1695

    积分

    管理员

    积分
    1695
    发表于 2024-4-19 14:09:20 | 显示全部楼层 |阅读模式
    void SelectSth()
    {
            CString sPrompt[2] = { _T("请拾取对象<退出>:") ,_T("请拾取对象<退出>:") };
            ads_name ssName;
            struct resbuf * rbFilter;

            //将名称中的“#”替换为"`# ",这样反引号之后的将会按字面意思解释
            //rbFilter = acutBuildList(RTDXF0, _T("INSERT"), 2, _T("1#11"), RTNONE);
            rbFilter = acutBuildList(RTDXF0, _T("INSERT"), 2, _T("1`#11"), RTNONE);
            if (RTNORM == acedSSGet(_T(""), sPrompt, NULL, rbFilter, ssName))
            {
                    //add your code... ...
            }

            acutRelRb(rbFilter);
            acedSSFree(ssName);
    }

     

     

     

     

    ObjectARX中acedSSGet选择块定义名称包含“#“字符的图块
    哎...膜结构车棚,签到来了1...
  • TA的每日心情
    开心
    前天 06:18
  • 签到天数: 49 天

    [LV.5]常住居民I

    185

    主题

    150

    回帖

    1695

    积分

    管理员

    积分
    1695
     楼主| 发表于 2024-4-19 14:15:38 | 显示全部楼层
    您提到的`rbFilter`表达式使用了`acutBuildList`函数来构建一个基于`acedSSGet`的过滤器列表。这个过滤器列表定义了选择文本(TEXT)对象时应遵循的规则。具体解释如下:

    ```cpp
    rbFilter = acutBuildList(
        RTDXF0,                  // 选择集类型为RTDXF0,表示根据DXF组码进行过滤
        _T("TEXT"),              // 选择对象类型为“TEXT”,即只选择文本对象
        1,                       // DXF组码编号为1,对应于对象类型(TEXT)
        _T("S*"),                // 使用“S*”作为通配符,表示选择以“S”开头的文本对象
        RTNONE                   // 结束标志,表示过滤器列表结束
    );
    ```

    在这个过滤器列表中:

    - `RTDXF0`指定了过滤器类型为基于DXF组码的过滤器,这是AutoCAD选择集的一种常见过滤方式。
    - `_T("TEXT")`指定了要选择的对象类型为“TEXT”,即文本对象。
    - `1`是DXF组码编号,对于文本对象,DXF组码1表示对象类型(TEXT)。
    - `_T("S*")`是一个通配符表达式,表示选择所有以“S”开头的文本对象。这里星号(`*`)代表任意字符序列,所以“S*”会匹配所有以“S”开头的文本对象。

    使用此过滤器列表调用`acedSSGet`函数,用户将只能选择那些以“S”开头的文本对象。请注意,这里的过滤条件是基于文本对象本身的名称(如果适用),而不是其内容或关联的块定义名称。

    如果您需要根据文本内容或块定义名称中包含特定字符(如“#”)来选择文本对象,由于`acedSSGet`的过滤器机制对此类需求支持有限,建议采用我在前几个回答中提到的后处理选择集方法或者自定义选择过滤器方法(如果适用)。这两种方法能够更灵活地处理基于文本内容或块定义名称的筛选需求。

     

     

     

     

    ObjectARX中acedSSGet选择块定义名称包含“#“字符的图块
    哎...膜结构车棚,签到来了1...
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-13 15:46 , Processed in 0.087680 second(s), 21 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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