?? cnsdftctl.cpp
字號:
for(int j=1;j<=7;j++)
{
char* swap=strtok(NULL,",");
sscanf(swap,"%d",&PlyChild[i*8+j]);
}
}
else
{
fgetNoEmpty(buffer,sizeof(buffer),pfile);
strtok(buffer,",");
sscanf(buffer,"%d",&PlyChild[cout*8]);
for(int k=1;k<pCurPolygon->ChildNum%8;k++)
{
char* swap=strtok(NULL,",");
sscanf(swap,"%d",&PlyChild[cout*8+k]);
}
}
}
}
pCurPolygon->pNext=NULL;
if(flag==1)
pHeadPolygon=pCurPolygon;
else
pPrevPolygon->pNext=pCurPolygon;
pPrevPolygon=pCurPolygon;
flag=0;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
}
}
void CCNSDFTCtrl::ReadVctAnnotation(FILE *pfile)
{
///////讀注記
pHeadAntation=NULL;
char buffer[200];
fgetNoEmpty(buffer,sizeof(buffer),pfile);
Annotation *pPrevAntation,*pCurAntation;
int flg=1;
while(strnicmp("AnnotationEnd",buffer,13)!=0)
{
pCurAntation=new Annotation[sizeof(Annotation)];
pCurAntation->AimCode=buffer;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
pCurAntation->FeatureCode=buffer;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
pCurAntation->LayerName=buffer;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
pCurAntation->Font=buffer;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
sscanf(buffer,"%d",&pCurAntation->Color);
fgetNoEmpty(buffer,sizeof(buffer),pfile);
strtok(buffer,",");
char* temp=strtok(NULL,",");
char* tm=strtok(NULL,",");
sscanf(buffer,"%d",&pCurAntation->Pound);
sscanf(temp,"%d",&pCurAntation->Shape);
sscanf(tm,"%c",&pCurAntation->Udline);//problem
fgetNoEmpty(buffer,sizeof(buffer),pfile);
char* tmp=strtok(buffer,",");
int test;
sscanf(buffer,"%f",&test);
if(test<100&&test>0)
sscanf(buffer,"%f",&pCurAntation->Size);
else
sscanf(buffer,"%f",&pCurAntation->Width);
sscanf(tmp,"%f",&pCurAntation->High);
fgetNoEmpty(buffer,sizeof(buffer),pfile);
sscanf(buffer,"%f",&pCurAntation->Intevel);
fgetNoEmpty(buffer,sizeof(buffer),pfile);
pCurAntation->Content=buffer;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
sscanf(buffer,"%d",&pCurAntation->AntnNum);
Point *AntnPoint=new Point[pCurAntation->AntnNum];
pCurAntation->pMemberPoint=AntnPoint;
for(int i=0;i<pCurAntation->AntnNum;i++)
{
fgetNoEmpty(buffer,sizeof(buffer),pfile);
char* temp=strtok(buffer,",");
char* tmp=strtok(NULL,",");
sscanf(buffer,"%f",&AntnPoint[i].X);
sscanf(temp,"%f",&AntnPoint[i].Y);
//sscanf(tmp,"%f",&AntnPoint[i].Z);
}
pCurAntation->pNext=NULL;
if(flg==1)
pHeadAntation=pCurAntation;
else
pPrevAntation->pNext=pCurAntation;
pPrevAntation=pCurAntation;
flg=0;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
}
}
void CCNSDFTCtrl::ReadVctAttribute(FILE *pfile)
{
/////////讀屬性數據
pHeadAbute=NULL;
char buffer[1024];
fgetNoEmpty(buffer,sizeof(buffer),pfile);
TableStructure *pVisit;
Attribute *pPrevAbute,*pCurAbute;
int flaga=1;
while(strnicmp("AttributeEnd",buffer,12)!=0)
{
pCurAbute=new Attribute[sizeof(Attribute)];
pCurAbute->ListName=buffer;
CString test=buffer;
pVisit=pHeadTblStruct;
while(pVisit->ListName.Compare(test)!=0)
pVisit=pVisit->pTblNext;
pCurAbute->ItemNum=pVisit->ItemNum;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
int listflag=1;
RecordList *pHeadRecordList;
while(strnicmp("TableEnd",buffer,8)!=0)
{
RecordList *pCurRecordList,*pPrevRecordList;
pCurRecordList=new RecordList[sizeof(RecordList)];
CString* record=new CString[pVisit->ItemNum+1];
strtok(buffer,&m_filehead.Separator);
record[0]=buffer;
for(int i=1;i<pVisit->ItemNum+1;i++)
{
char* temp=strtok(NULL,&m_filehead.Separator);
record[i]=temp;
}
pCurRecordList->Record=record;
pCurRecordList->pNext=NULL;
if(listflag==1)
pHeadRecordList=pCurRecordList;
else
pPrevRecordList->pNext=pCurRecordList;
pPrevRecordList=pCurRecordList;
listflag=0;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
}
pCurAbute->pRecordList=pHeadRecordList;
pCurAbute->pNext=NULL;
if(flaga==1)
pHeadAbute=pCurAbute;
else
pPrevAbute->pNext=pCurAbute;
pPrevAbute=pCurAbute;
flaga=0;
fgetNoEmpty(buffer,sizeof(buffer),pfile);
}
}
void CCNSDFTCtrl::WriteVctFileHead(FILE *pfile)
{
fprintf(pfile,"%s%s\n","DataMark: ",m_filehead.DataMark);
fprintf(pfile,"%s%2.1f\n","VerSion: ",m_filehead.VerSion);
fprintf(pfile,"%s%c\n","Unit: ",m_filehead.Unit);
fprintf(pfile,"%s%d\n","Dim: ",m_filehead.Dim);
fprintf(pfile,"%s%d\n","Topo: ",m_filehead.Topo);
if(m_filehead.MinX!=0)
fprintf(pfile,"%s%9.3f\n","MinX: ",m_filehead.MinX);
if(m_filehead.MinY!=0)
fprintf(pfile,"%s%9.3f\n","MinY: ",m_filehead.MinY);
if(m_filehead.MinZ!=0)
fprintf(pfile,"%s%9.3f\n","MinY: ",m_filehead.MinZ);
if(m_filehead.MaxX!=0)
fprintf(pfile,"%s%9.3f\n","MaxX: ",m_filehead.MaxX);
if(m_filehead.MaxY!=0)
fprintf(pfile,"%s%9.3f\n","MaxY: ",m_filehead.MaxY);
if(m_filehead.MaxZ!=0)
fprintf(pfile,"%s%9.3f\n","MaxY: ",m_filehead.MaxZ);
if(m_filehead.ScaleM!=0)
fprintf(pfile,"%s%9.0f\n","ScaleM: ",m_filehead.ScaleM);
if(m_filehead.Projection!="NO")
fprintf(pfile,"%s%s\n","Projection: ",m_filehead.Projection);
if(m_filehead.Spheroid!="NO")
fprintf(pfile,"%s%s\n","Spheroid: ",m_filehead.Spheroid);
if(m_filehead.Parameters!="NO")
fprintf(pfile,"%s%s\n","Parameters: ",m_filehead.Parameters);
if(m_filehead.Date!="NO")
fprintf(pfile,"%s%s\n","Date: ",m_filehead.Date);
fprintf(pfile,"%s%c\n","Separator: ",m_filehead.Separator);
///暫沒有坐標系Coordinate
}
void CCNSDFTCtrl::WriteVctFeature(FILE *pfile)
{
Feature *pVisitFeature=pHeadFeature;
if(pHeadFeature==NULL)
{
AfxMessageBox("被轉入的文件沒有要素類型參數信息");
return;
}
while(pVisitFeature!=NULL)
{
fprintf(pfile,"%s,",pVisitFeature->Code);
fprintf(pfile,"%s,",pVisitFeature->Name);
fprintf(pfile,"%s,",pVisitFeature->Shape);
fprintf(pfile,"%d,",pVisitFeature->Color);
fprintf(pfile,"%s",pVisitFeature->ListName);
fputs("\n",pfile);
pVisitFeature=pVisitFeature->pNext;
}
}
void CCNSDFTCtrl::WriteVctTableStructure(FILE *pfile)
{
TableStructure *pVisitTblStruct=pHeadTblStruct;
if(pHeadLineData==NULL)
{
AfxMessageBox("被轉入的文件沒有屬性數據結構信息");
return;
}
while(pVisitTblStruct!=NULL)
{
fprintf(pfile,"%s,",pVisitTblStruct->ListName);
fprintf(pfile,"%d\n",pVisitTblStruct->ItemNum);
for(int i=0;i<pVisitTblStruct->ItemNum;i++)
{
fprintf(pfile,"%s,",pVisitTblStruct->pItem[i].Name);
fprintf(pfile,"%s,",pVisitTblStruct->pItem[i].Type);
if(pVisitTblStruct->pItem[i].Type=="Char"||pVisitTblStruct->pItem[i].Type=="Integer")
fprintf(pfile,"%d\n",pVisitTblStruct->pItem[i].Width);
if(pVisitTblStruct->pItem[i].Type=="Float")
{
fprintf(pfile,"%d,",pVisitTblStruct->pItem[i].Width);
fprintf(pfile,"%d\n",pVisitTblStruct->pItem[i].Pric);
}
}
pVisitTblStruct=pVisitTblStruct->pTblNext;
}
}
void CCNSDFTCtrl::WriteVctGraphy()
{
fputs("PointBegin\n",pfile);
WriteVctPoint(pfile);
fputs("PointEnd\n",pfile);
fputs("\n",pfile);
fputs("LineBegin\n",pfile);
WriteVctLine(pfile);
fputs("LineEnd\n",pfile);
fputs("\n",pfile);
fputs("PolygonBegin\n",pfile);
WriteVctPolygon(pfile);
fputs("PolygonEnd\n",pfile);
fputs("\n",pfile);
}
void CCNSDFTCtrl::WriteVctPoint(FILE *pfile)
{
if(pHeadPointData==NULL)
{
AfxMessageBox("被轉入的文件沒有點數據信息");
return;
}
PointData *pVisitPoint=pHeadPointData;
while(pVisitPoint!=NULL)
{
fprintf(pfile,"%s\n",pVisitPoint->AimCode);
fprintf(pfile,"%s\n",pVisitPoint->FeatureCode);
fprintf(pfile,"%s\n",pVisitPoint->LayerName);
fprintf(pfile,"%d\n",pVisitPoint->PointMark);
fprintf(pfile,"%f,",pVisitPoint->X);
fprintf(pfile,"%f\n",pVisitPoint->Y);
//////////////////////////坐標Z未加
if(m_filehead.Topo==2&&pVisitPoint->PointMark==2)
{
//////////待擴充的模塊
}
fputs("\n",pfile);
pVisitPoint=pVisitPoint->pNext;
}
}
void CCNSDFTCtrl::WriteVctLine(FILE *pfile)
{
/////寫線數據
if(pHeadLineData==NULL)
{
AfxMessageBox("被轉入的文件沒有線數據信息");
return;
}
LineData *pVisitLine=pHeadLineData;
while(pVisitLine!=NULL)
{
fprintf(pfile,"%s\n",pVisitLine->AimCode);
fprintf(pfile,"%s\n",pVisitLine->FeatureCode);
fprintf(pfile,"%s\n",pVisitLine->LayerName);
fprintf(pfile,"%d\n",pVisitLine->LineMark);
if(pVisitLine->LineMark!=100)
{
fprintf(pfile,"%d\n",pVisitLine->PointNum);
for(int i=0;i<pVisitLine->PointNum;i++)
{
fprintf(pfile,"%f,",pVisitLine->pMemberPoint[i].X);
fprintf(pfile,"%f\n",pVisitLine->pMemberPoint[i].Y);
///坐標Z暫未加
}
}
else
{
///////寫間接坐標
fprintf(pfile,"%d\n",pVisitLine->ChildNum);
int cout=GetShang(pVisitLine->ChildNum,8);
for(int i=0;i<cout+1;i++)
{
if(i!=cout)
{
for(int j=0;j<8;j++)
{
if(j==7)
fprintf(pfile,"%d",pVisitLine->pMemberChild[i*8+j]);
else
fprintf(pfile,"%d,",pVisitLine->pMemberChild[i*8+j]);
}
}
else
{
for(int j=0;j<pVisitLine->ChildNum%8;j++)
{
if(j==(pVisitLine->ChildNum%8)-1)
fprintf(pfile,"%d",pVisitLine->pMemberChild[cout*8+j]);
else
fprintf(pfile,"%d,",pVisitLine->pMemberChild[cout*8+j]);
}
}
fputs("\n",pfile);
}
}
fputs("\n",pfile);
pVisitLine=pVisitLine->pNext;
}
}
void CCNSDFTCtrl::WriteVctPolygon(FILE *pfile)
{
/////////寫多邊形
if(pHeadLineData==NULL)
{
AfxMessageBox("被轉入的文件沒有多邊形數據信息");
return;
}
PolygonData* pVisitPolygon=pHeadPolygon;
while(pVisitPolygon!=NULL)
{
fprintf(pfile,"%s\n",pVisitPolygon->AimCode);
fprintf(pfile,"%s\n",pVisitPolygon->FeatureCode);
fprintf(pfile,"%s\n",pVisitPolygon->LayerName);
fprintf(pfile,"%f,",pVisitPolygon->labX);
fprintf(pfile,"%f\n",pVisitPolygon->labY);
if(m_filehead.Topo==0)
{ ///////寫直接坐標
fprintf(pfile,"%d\n",pVisitPolygon->PointNum);
for(int i=0;i<pVisitPolygon->PointNum;i++)//problem
{
fprintf(pfile,"%f,",pVisitPolygon->pMemberPoint[i].X);
fprintf(pfile,"%f\n",pVisitPolygon->pMemberPoint[i].Y);
}
fprintf(pfile,"%d,",0);
}
else
{
/////////寫間接坐標
fprintf(pfile,"%d\n",pVisitPolygon->ChildNum);
int cout=GetShang(pVisitPolygon->ChildNum,8);
for(int i=0;i<cout+1;i++)
{
if(i!=cout)
{
for(int j=0;j<8;j++)
{
if(j==7)
fprintf(pfile,"%d",pVisitPolygon->pMemberChild[i*8+j]);
else
fprintf(pfile,"%d,",pVisitPolygon->pMemberChild[i*8+j]);
}
}
else
{
for(int j=0;j<(pVisitPolygon->ChildNum%8);j++)
{
if(j==(pVisitPolygon->ChildNum%8)-1)
fprintf(pfile,"%d",pVisitPolygon->pMemberChild[cout*8+j]);
else
fprintf(pfile,"%d,",pVisitPolygon->pMemberChild[cout*8+j]);
}
}
fputs("\n",pfile);
}
}
fputs("\n",pfile);
pVisitPolygon=pVisitPolygon->pNext;
}
}
void CCNSDFTCtrl::WriteVctAnnotation(FILE *pfile)
{
/////////////寫注記
Annotation *pVisitAnnotation=pHeadAntation;
if(pHeadAntation==NULL)
{
AfxMessageBox("被轉入的文件沒有注記信息");
return;
}
while(pVisitAnnotation!=NULL)
{
fprintf(pfile,"%s\n",pVisitAnnotation->AimCode);
fprintf(pfile,"%s\n",pVisitAnnotation->FeatureCode);
fprintf(pfile,"%s\n",pVisitAnnotation->LayerName);
fprintf(pfile,"%s\n",pVisitAnnotation->Font);
fprintf(pfile,"%d\n",pVisitAnnotation->Color);
fprintf(pfile,"%d,",pVisitAnnotation->Pound);
fprintf(pfile,"%d,",pVisitAnnotation->Shape);
fprintf(pfile,"%c\n",pVisitAnnotation->Udline);
if(pVisitAnnotation->Size>0&&pVisitAnnotation->Size<100)
fprintf(pfile,"%f,",pVisitAnnotation->Size);
else
fprintf(pfile,"%f,",pVisitAnnotation->Width);
fprintf(pfile,"%f\n",pVisitAnnotation->High);
fprintf(pfile,"%f\n",pVisitAnnotation->Intevel);
fprintf(pfile,"%s\n",pVisitAnnotation->Content);
fprintf(pfile,"%d\n",pVisitAnnotation->AntnNum);
for(int i=0;i<pVisitAnnotation->AntnNum;i++)
{
fprintf(pfile,"%f,",pVisitAnnotation->pMemberPoint[i].X);
fprintf(pfile,"%f\n",pVisitAnnotation->pMemberPoint[i].Y);
//fprintf(pfile,"%d\n",pVisitAnnotation->Z);
}
fputs("\n",pfile);
pVisitAnnotation=pVisitAnnotation->pNext;
}
}
void CCNSDFTCtrl::WriteVctAttribute(FILE *pfile)
{
///////寫屬性數據
Attribute *pVisitAbute=pHeadAbute;
if(pHeadAbute==NULL)
{
AfxMessageBox("被轉入的文件沒有屬性信息");
return;
}
while(pVisitAbute!=NULL)
{
fprintf(pfile,"%s\n",pVisitAbute->ListName);
while(pVisitAbute->pRecordList!=NULL)
{
for(int i=0;i<pVisitAbute->ItemNum+1;i++)
{
if(i==pVisitAbute->ItemNum)
fprintf(pfile,"%s\n",pVisitAbute->pRecordList->Record[i]);
else
fprintf(pfile,"%s,",pVisitAbute->pRecordList->Record[i]);
}
pVisitAbute->pRecordList=pVisitAbute->pRecordList->pNext;
}
fputs("TableEnd\n",pfile);
fputs("\n",pfile);
pVisitAbute=pVisitAbute->pNext;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -