找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 863|回复: 3

[ARX函数]:请问打开层表的时候状态值为eLockViolation怎么处理?

[复制链接]
发表于 2003-7-9 11:15:32 | 显示全部楼层 |阅读模式

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

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

×
我在打开层表的时候,发现返回值为eLockViolation,怎么才能搞定呢?
我使用的开发包是Arx2000
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-9 11:19:12 | 显示全部楼层

Re: [ARX函数]:请问打开层表的时候状态值为eLockViolation怎么处理?

最初由 Echoyin 发布
[B]我在打开层表的时候,发现返回值为eLockViolation,怎么才能搞定呢?
我使用的开发包是Arx2000 [/B]


把相关的完整代码都贴论坛来吧,让大家看看.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-9 11:29:25 | 显示全部楼层

  1.   [FONT=courier new]
  2. AcDbObjectId CCyzConfig::GetLayerId(UINT nLayerIndex)
  3. {
  4.         AcDbLayerTable* pTable;
  5.         Acad::ErrorStatus es;
  6.         es=acdbCurDwg()->getLayerTable(pTable,AcDb::kForWrite);
  7.         if (es!= Acad::eOk)
  8.         {
  9.                 return AcDbObjectId::kNull;
  10.         }
  11.         int i = nLayerIndex;
  12.         AcDbLayerTableRecord *pRecord;
  13.         char LayerAlias[128];
  14.         char LayerName[128];
  15.         UINT         color;
  16.         char LineName[128];
  17.         if(!GetLayerInfo(nLayerIndex,LayerAlias,LayerName,&color,LineName))
  18.         {
  19.                 if(pTable)
  20.                         pTable->close();
  21.                 return AcDbObjectId::kNull;
  22.         }
  23.         if(pTable->has(LayerName))       
  24.         {
  25.                 //这个层已经有了按s_LayerInfo中的值设置
  26.                 Acad::ErrorStatus Status;
  27.                 Status = pTable->getAt(LayerName, pRecord,AcDb::kForWrite);
  28.                 pTable->close();
  29.                 if(Status != Acad::eOk)
  30.                 {
  31.                         return AcDbObjectId::kNull;
  32.                 }
  33.                 pRecord->setIsFrozen(Adesk::kFalse);        //解冻
  34.                 pRecord->setIsLocked(Adesk::kFalse);        //解锁
  35.                 pRecord->setIsOff(Adesk::kFalse);                //on
  36.                 pRecord->close();
  37.         }
  38.         else                //这个层没有,按s_LayerInfo中的值设置
  39.         {
  40.                 pRecord = new AcDbLayerTableRecord();
  41.                 ASSERT(pRecord != NULL);

  42.                 pRecord->setName(LayerName);
  43.                 AcCmColor ByLayerColor,LayerColor;
  44.                 LayerColor.setColorIndex(color);
  45.                 pRecord->setColor(LayerColor);
  46.                 AcDbObjectId LineTypeID;
  47.                 if(LoadLineType (LineName))        //装入线型成功,否则采用缺省的线型
  48.                 {               
  49.                        
  50.                         LineTypeID = GetObjectId(__CYZ_CHECKTABLE_LINETYPE,LineName);
  51.                         if(LineTypeID == AcDbObjectId::kNull)
  52.                         {
  53.                                 pTable->close();
  54.                                 if(pRecord)
  55.                                         delete pRecord;
  56.                                 return AcDbObjectId::kNull;
  57.                         }
  58.                         pRecord->setLinetypeObjectId(LineTypeID);
  59.                 }

  60.                 pTable->add(pRecord);
  61.                 pRecord->close();
  62.                 pTable->close();

  63.                 ByLayerColor.setColorIndex(256);        // bylayer
  64.                 acdbCurDwg()->setCecolor(ByLayerColor);
  65.                 AcDbObjectId BylayerLineTypeID;
  66.                 LineTypeID = GetObjectId(__CYZ_CHECKTABLE_LINETYPE,"BYLAYER");
  67.                 VERIFY(LineTypeID != NULL);
  68.                 acdbCurDwg()->setCeltype(LineTypeID);
  69.         }

  70.         if(acdbCurDwg()->getLayerTable(pTable,AcDb::kForRead) != Acad::eOk)
  71.                 return AcDbObjectId::kNull;
  72.         AcDbObjectId objId;
  73.         pTable->getAt(LayerName, objId);
  74.         pTable->close();
  75.         return objId;

  76. }
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-9 11:51:08 | 显示全部楼层
1、插入无名块
2、兼容属性块和无属性块
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 12:31 , Processed in 0.252680 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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