天气与日历 切换到窄版

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

添加并显示扩展数据

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

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    1、添加扩展数据
    // 提示用户选择所要添加扩展数据的图形对象
    ads_name en;
    ads_point pt;
    if (acedEntSel("\n选择所要添加扩展数据的实体:", en, pt) != RTNORM)  
    return;
    AcDbObjectId entId;
    Acad::ErrorStatus es = acdbGetObjectId(entId, en);
    // 扩展数据的内容
    struct resbuf* pRb;
    char appName[] = {"XData"};
    char typeName[] = {"道路中心线"};
    // 注册应用程序名称
    acdbRegApp("XData");
    // 创建结果缓冲区链表
    pRb = acutBuildList(AcDb::kDxfRegAppName, appName,  // 应用程序名称  
         AcDb::kDxfXdAsciiString, typeName,    // 字符串  
         AcDb::kDxfXdInteger32, 2,       // 整数  
         AcDb::kDxfXdReal, 3.14,       // 实数  
         AcDb::kDxfXdWorldXCoord, pt,     // 点坐 标值  
         RTNONE);
    // 为选择的实体添加扩展数据
    AcDbEntity *pEnt;
    acdbOpenAcDbEntity(pEnt, entId, AcDb::kForWrite);
    struct resbuf *pTemp;
    pTemp = pEnt->xData("XData");
    if (pTemp != NULL)  // 如果已经包含扩展数据,就不再添加新的 扩展数据
    {  
    acutRelRb(pTemp);  
    acutPrintf("\n所选择的实体已经包含扩展数据!");
    }
    else
    {  
    pEnt->setXData(pRb);
    }
    pEnt->close();
    acutRelRb(pRb); //释放缓冲区

    2、显示扩展数据
    // 提示用户选择所要查看扩展数据的图形对象
    ads_name en;
    ads_point pt;
    if (acedEntSel("\n选择所要查看扩展数据的实体:", en, pt) != RTNORM)
    return;
    AcDbObjectId entId;
    Acad::ErrorStatus es = acdbGetObjectId(entId, en);
    // 打开图形对象,查看是否包含扩展数据
    AcDbEntity *pEnt;
    acdbOpenAcDbEntity(pEnt, entId, AcDb::kForRead);
    struct resbuf *pRb;
    pRb = pEnt->xData("XData");
    pEnt->close();
    if (pRb != NULL)
    {  
    // 在命令行显示所有的扩展数据
    struct resbuf *pTemp;
    pTemp = pRb;
    // 首先要跳过应用程序的名称这一项
    pTemp = pTemp->rbnext;
    acutPrintf("\n字符串类型的扩展数据是:%s", pTemp->resval.rstring);
    pTemp = pTemp->rbnext;
    acutPrintf("\n整数类型的扩展数据是:%d", pTemp->resval.rint);
    pTemp = pTemp->rbnext;
    acutPrintf("\n实数类型的扩展数据是:%.2f", pTemp->resval.rreal);
    pTemp = pTemp->rbnext;
    acutPrintf("\n点坐标类型的扩展数据是:(%.2f, %.2f, %.2f)",  
      pTemp->resval.rpoint[X], pTemp->resval.rpoint[Y],    pTemp->resval.rpoint[Z]);
    acutRelRb(pRb);   
    }
    else
    {  
    acutPrintf("\n所选择的实体不包含任何的扩展数据!");
    }

     

     

     

     

    添加并显示扩展数据
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-7-1 05:49 , Processed in 0.056595 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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