ObjectArx开发笔记(五)--- 符号表总述

一、符号表

1.1 继承关系

  • 九大符号表(最重要的是块表AcDbViewTable)

    注意:符号表不可删除


  • 符号表记录(对应各自符号表)

    注意:块表记录可以删除添加


  • 符号表迭代器(用于遍历符号表中的记录)

  • 符号表操作流程:
    • 添加表记录:获取表==> 新建表记录并添加进表==>关闭表==> 将对象添加进表记录==> 关闭表记录
    • 修改表记录:获取表==> 通过表(getAt函数)获取表记录==>关闭表==> 遍历(getAt函数)表记录查找==> 修改目标表记录==>关闭表记录
    • 删除表记录:获取表==> 通过表(getAt函数)获取表记录==>关闭表==> 遍历(getAt函数)表记录查找==> 删除目标表记录==>关闭表记录
    • 查找表记录:获取表==> 通过表(getAt函数)获取表记录==>关闭表==> 遍历(getAt函数)表记录查找并返回=>关闭表记录

二、符号表常用函数

  • 符号表类常用函数(AcDbSymbolTable基类方法)
    // getAt方法:传入表记录名指针entryName、接收返回表记录指针pRec、
    //			 打开方式、是否查询已标记为删除的记录
    Acad::ErrorStatus getAt (const ACHAR* entryName,
                             AcDbSymbolTableRecord*& pRec,
                             AcDb::OpenMode openMode = AcDb::kForRead,
                             bool openErasedRec = false) const
    {
        return this->openAt(entryName, pRec, openMode, openErasedRec);
    }
    
    // getIdAt方法:传入表记录名指针entryName、接收返回数据库对象id recordId、
    //			   是否查询已标记为删除的记录
    ACDBCORE2D_PORT Acad::ErrorStatus getIdAt(const ACHAR* entryName,
                                              AcDbObjectId& recordId,
                                              bool getErasedRecord = false) const;
                                              
    // getAt方法:传入表记录名指针entryName、接收返回数据库对象id recordId、
    //			 是否查询已标记为删除的记录                         
    Acad::ErrorStatus getAt (const ACHAR* entryName,
                             AcDbObjectId& recordId,
                             bool getErasedRecord = false) const
    {
        return this->getIdAt(entryName, recordId, getErasedRecord);
    }
    
    // 判断表中 记录名称集合中 是否有传入 name指向的 字符串 同名的 字符串
    bool has(const ACHAR* name) const
    {
        AcDbObjectId id;
        this->assertReadEnabled();
        return this->getIdAt(name, id) == Acad::eOk;
    }
    

三、cad表监视器

3.1 效果图

3.2 制作方法

  • 进入目录:C:\objectarx2020\samples\database\ARXDBG
  • 打开解决方案:ArxDbg.sln
  • 编译:选择release、x64,注意结合1.3.3节调试,
  • 加载:在ARXDBG\x64文件夹下找生成的arx文件,在cad中加载

3.3 遇到问题

  • 问题:fatal error C1083: 无法打开包括文件: “afxwin.h
  • 原因:没有安装MFC组件
  • 修复:
    • 步骤一:
    • 步骤二:右侧勾选用于x86和x64的Visual C++ MFC

  • 问题:fatal error C1083: 无法打开包括文件: “new.h
  • 原因:需要包含操作系统的库和头文件
  • 修复:
    • 步骤一:在项目上右键选属性,修改C++目录
    • 步骤二:头文件目录:C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt
    • 步骤三:库目录:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64

    注意:10.0.17763.0可能每个电脑不一样,找类似的目录即可

传送门 返回 列表

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值