Warning: mkdir(): No space left on device in /www/wwwroot/test001/func.php on line 253

Warning: file_put_contents(./cachefile_yuan/ilouw.com/cache/99/13c7b/9e131.html): failed to open stream: No such file or directory in /www/wwwroot/test001/func.php on line 241
CAXA2007、2011 提取標題欄屬性問題,望不吝賜教,謝謝。 | CAXA二次開發|CAD/CAE/CAM/CAPP/PLM/MES等工業軟件|CAD論壇 - Powered by Discuz!

彩神iv

咖迷社區(CAXA彩神iv)

 找回密碼
 立即注冊

QQ登錄

隻需一步,快速開始

查看: 22134|回複: 25
打印 上一主題 下一主題

CAXA2007、2011 提取標題欄屬性問題,望不吝賜教,謝謝。

[複製鏈接]

3

主題

12

帖子

17

積分

新手上路

Rank: 1

積分
17
跳轉到指定樓層
樓主
發表於 2011-5-17 19:32:00 | 隻看該作者 |隻看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
2007 提取標題欄屬性問題:
我使用函數ebPaGetHeaderBlock 獲取方式如下:
rtn = ebPaGetHeaderBlock(&SysEntBase,&pBlock,str);
if(rtn != RT_NORMAL){
  AfxMessageBox("ebPaGetHeaderBlock失敗");
  return RT_FAILED;
}
AfxMessageBox(str);
最後彈出來的對話框竟然是圖框的名稱,而不是標題欄的名稱,感覺非常奇怪。
采用另外一種方式獲取,但是中途CAXA2007會出現內存不可讀,然後終止程序。獲取的方式如下:
CBlock *pTitleBlock = NULL;
pTitleBlock = GetFrameBlock("*HEADER", &SysEntBase);//*HEADER
if (NULL==pTitleBlock){
  AfxMessageBox("GetFrameBlock 獲取失敗");
  return RT_FAILED;
}
AfxMessageBox(pTitleBlock->name);
CStringArray attrName;
CStringArray attrValue;
ebPaGetHeaderAttArray(pTitleBlock,attrName,attrValue);
str.Format("%d",attrValue.GetSize());

AfxMessageBox(str);
for(int attrCount = 0;attrCount<attrValue.GetSize();attrCount++){
  strTemp.Format(attrName.GetAt(attrCount)+"="+attrValue.GetAt(attrCount));
  AfxMessageBox(strTemp);
}
另外,我嚐試使用2011來提取屬性,同樣也失敗了,
2011采用CRX方式來獲取,但是缺少方法:
程序如下:
CRxDbBlockTable *pBlockTable;
crxdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, CRxDb::kForRead);
CRxDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(CRXDB_MODEL_SPACE, pBlockTableRecord,CRxDb::kForRead);
pBlockTable->close();
//創建塊表記錄遍曆器,用遍曆器遍曆實體
CRxDbBlockTableRecordIterator *pBlockIterator;
CRxDbBlockReference    *pAttRef;
pBlockTableRecord->newIterator(pBlockIterator);
for (;!pBlockIterator->done();pBlockIterator->step()){
  CRxDbEntity *pEntity;
  pBlockIterator->getEntity(pEntity, CRxDb::kForRead);
  //crxutPrintf(TEXT("\n%s"),pEntity->desc()->name());
  pAttRef = CRxDbBlockReference::cast(pEntity);
  if (pAttRef != NULL) {
   CRxDbObjectIterator *pBlkRefAttItr=pAttRef->attributeIterator();
   for (pBlkRefAttItr->start(); !pBlkRefAttItr->done();pBlkRefAttItr->step())
   {
    CRxDbObjectId attObjId;
    attObjId = pBlkRefAttItr->objectId();
    CRxDbAttribute *pAtt = NULL;
    CDraft::ErrorStatus es = crxdbOpenObject(pAtt, attObjId, CRxDb::kForRead);
    if (es != CDraft::eOk){
     crxutPrintf(TEXT("\nFailed to open attribute"));
     delete pBlkRefAttItr;
     continue;
    }
    crxutPrintf(TEXT("\n%s"),pAtt->tag());
    pAtt->close();
   }
   
  }
但是沒有attributeIterator方法,係統裏麵的頭文件注釋掉了,我去掉頭文件的注釋,但是鏈接的時候會出錯。
希望各位知道的兄弟,能夠幫幫我,謝謝。
回複

使用道具 舉報

40

主題

323

帖子

8萬

積分

管理員

Rank: 10Rank: 10Rank: 10

積分
88668
沙發
發表於 2011-5-17 19:37:00 | 隻看該作者
已轉給CAXA開發,需要等明天上午答複了。。。
論壇管理員
回複 支持 反對

使用道具 舉報

35

主題

391

帖子

3萬

積分

社區專家

Rank: 8Rank: 8

積分
33084

咖迷社區專家(CAXA)

板凳
發表於 2011-5-17 22:50:00 | 隻看該作者
希望樓主以後能成為marswu一樣的大師。
回複 支持 反對

使用道具 舉報

3

主題

12

帖子

17

積分

新手上路

Rank: 1

積分
17
地板
 樓主| 發表於 2011-5-18 08:21:00 | 隻看該作者
謝謝各位,靜候佳音。
回複 支持 反對

使用道具 舉報

0

主題

16

帖子

2萬

積分

VIP會員

Rank: 8Rank: 8

積分
20014
5#
發表於 2011-5-18 11:22:00 | 隻看該作者
頭文件裏attributeIterator是注掉的,說明CRX還不支持這個方法
回複 支持 反對

使用道具 舉報

3

主題

12

帖子

17

積分

新手上路

Rank: 1

積分
17
6#
 樓主| 發表於 2011-5-18 11:26:00 | 隻看該作者
樓上的兄弟,我從查看DLL的導出函數,DLL中存在這個方法,而且對應的類也有了。
回複 支持 反對

使用道具 舉報

0

主題

16

帖子

2萬

積分

VIP會員

Rank: 8Rank: 8

積分
20014
7#
發表於 2011-5-18 11:29:00 | 隻看該作者
使用ebPaGetHeaderBlock返回的名稱不正確,可能標題欄裏記錄的名稱信息是錯誤的。具體情況需要分析提取的原始文件才能知道。函數本身應當是沒有錯誤的。
GetFrameBlock是非開放的內部函數,不建議在二次開發過程中使用。
回複 支持 反對

使用道具 舉報

0

主題

16

帖子

2萬

積分

VIP會員

Rank: 8Rank: 8

積分
20014
8#
發表於 2011-5-18 13:09:00 | 隻看該作者

回複 6# rumly 的帖子

請教一下你查看的是哪個dll,版本號是多少?
回複 支持 反對

使用道具 舉報

3

主題

12

帖子

17

積分

新手上路

Rank: 1

積分
17
9#
 樓主| 發表於 2011-5-18 13:49:00 | 隻看該作者
2007中,我調用ebPaGetHeaderBlock返回的是圖框的信息,請看下麵的截圖,謝謝。

CAXA版本信息



源碼


圖紙信息,使用標準模版新建一個空白的圖紙,並設置相關信息。


運行後程序彈出的對話框:



回複 支持 反對

使用道具 舉報

3

主題

12

帖子

17

積分

新手上路

Rank: 1

積分
17
10#
 樓主| 發表於 2011-5-18 13:56:00 | 隻看該作者
頭文件裏attributeIterator是注掉的,說明CRX還不支持這個方法
zzlg 發表於 2011-5-18 11:22:00


這個方法是提取屬性的,如果CRX還不支持這個方法,那麽
我能否理解為CAXA2011不能夠提取標題欄屬性?
謝謝。
回複 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|咖迷社區(CAXA彩神iv) ( 京ICP備05001831號-1 )

GMT+8, 2024-11-1 11:39 , Processed in 0.140472 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回複 返回頂部 返回列表