请教大神,最近在项目中遇到一个问题,有没有懂java用到Teigha第三方插件的大神,
,我只想取到模型空间的数据,代码如下,但是这样将图形里面的数据也取出来了,所以想请问有没有大神知道,有没有一个标识区分是模型空间的还是图形空间的数据
public List<String> getDwgBlockData(String fileName,String storeCode,String ifpVersion
,MemoryManager mMan,MemoryTransaction mStartTrans,ExSystemServices systemServices,ExHostAppServices appServices){
/********************************************************************/
/* Create a Service and HostApp instances. */
/********************************************************************/
/* ExSystemServices systemServices = new ExSystemServices();
ExHostAppServices appServices = new ExHostAppServices();
appServices.disableOutput(true); //Disable progress meter
*/ /********************************************************************/
/* Initialize Teigha. */
/********************************************************************/
TD_Db.odInitialize(systemServices);
MemoryTransaction mTrans1 = mMan.StartTransaction();
//block数据集合
List<String> dataList=new ArrayList<String>();
List<String> blockIdList=new ArrayList<String>();
boolean isUpdateBlkId=false;
if(fileName!=null){
OdDbDatabase localOdDbDatabase = null;
try {
if (!appServices.findFile(fileName).isEmpty()) {
localOdDbDatabase = appServices.readFile(fileName);
if (localOdDbDatabase != null) {
OdDbBlockTable pTable = (OdDbBlockTable) localOdDbDatabase.getBlockTableId().safeOpenObject(OpenMode.kForWrite, false);
OdDbBlockTableIterator localIterator = (OdDbBlockTableIterator) pTable.newIterator();
int i = 0,s = 0;
for (localIterator.start(); !localIterator.done(); localIterator.step()) {
i++;
OdDbBlockTableRecord blkRecord=(OdDbBlockTableRecord) localIterator.getRecord(OpenMode.kForWrite);
OdDbObjectIdArray objArr=new OdDbObjectIdArray();
blkRecord.getBlockReferenceIds(objArr);
Iterator<OdDbObjectId> objIt=objArr.iterator();
int j = 0 , k = 0;
while(objIt.hasNext()){
OdDbBlockReference ref=(OdDbBlockReference) objIt.next().safeOpenObject(OpenMode.kForWrite);
BlockBean blkData=this.getBlockData(fileName,ref,storeCode.trim(),ifpVersion,blockIdList);
j++;
if(blkData!=null){
blockIdList.add(blkData.getFixtureBlockId());
dataList.add(blkData.toString());
k++;
if(blkData.getIsUpdateBlkId()!=null&&blkData.getIsUpdateBlkId()){
isUpdateBlkId=true;
}
}
}
s +=k;
System.out.println("i:" + i + ", j:" + j + ", k:" + k);
}
System.out.println("ROWS:" + i +" count:"+s);
if(isUpdateBlkId){
MemoryTransaction mTr = mMan.StartTransaction();
saveDwgFile(fileName,localOdDbDatabase,storeCode);
mMan.StopTransaction(mTr);
}
}
}
} catch (Exception e) {
String errorMsg="read file error in export csv action->"+fileName+",Please check";
System.err.println(errorMsg);
LogUtil.writeLog(errorMsg+LogUtil.getErrorInfoFromException(e),MessageBean.ERROR);
}
}
//添加block tableHeader
dataList.add(getCsvHead().toString());
mMan.StopTransaction(mTrans1);
/* mMan.StopTransaction(mStartTrans);
TD_Db.odUninitialize();*/
return dataList;
}