丁香美女社区,国产午夜av秒播在线观看,老八日三个媳妇的最新进展,国产一区二区波多野结衣,国产又黄又爽又猛免费视频播放

咖迷社區(CAXA數碼大方)

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 28157|回復: 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

主題

322

帖子

9萬

積分

管理員

Rank: 10Rank: 10Rank: 10

積分
96727
沙發
發表于 2011-5-17 19:37:00 | 只看該作者
已轉給CAXA開發,需要等明天上午答復了。。。
論壇管理員

35

主題

395

帖子

3萬

積分

社區專家

Rank: 8Rank: 8

積分
33435

咖迷社區專家(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數碼大方) ( )

GMT+8, 2025-11-7 02:34 , Processed in 0.187326 second(s), 23 queries .

Powered by X3.4

Copyright © 2001-2021, Tencent Cloud.

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