⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myeditview.cpp

📁 地理信息系统(GIS)相关.实现按照方向加产状的功能.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//剪贴板操作
void CMyEditView::OnCopy() 
{
	_CopyToCbAi(GetPool(),GetPoolNum());
}

void CMyEditView::OnCut() 
{
	_CutToCbAi(GetPool(),GetPoolNum());
	_UpdateWindow();
}

void CMyEditView::OnPaste() 
{
	_PasteToMapGisAi(GetCurrentPntArea(),GetCurrentLinArea(),GetCurrentRegArea());	
	_UpdateWindow();
}

void CMyEditView::OnCreatelabel() 
{
	CreateLabelFile();
}

void CMyEditView::OnAutolinklin() 
{
	AutoLinkAllLin();
}

//----------------------------//
//--------菜单状态函数---------//
//----------------------------//
void CMyEditView::OnUpdateInstmLnlin(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIndotLnlin(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIn0Lnarc(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIn0Lncir(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIn0Lrect(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIn1Lnarc(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIn1Lncir(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateIn1Lrect(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateInEllips(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateInPtarc(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateInPtcir(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateInPtstr(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateInPtsub(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateCrossLnlin(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

void CMyEditView::OnUpdateCopy(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(GetPoolNum() > 0);
}

void CMyEditView::OnUpdateCut(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(GetPoolNum() > 0);
}

void CMyEditView::OnUpdatePaste(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(_IsMapgisClipBoardAvailable());
}

/*
void CMyEditView::OnUpdateSetTicPoint(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable((GetDigObj() != NULL)&&(_dgCheckTabletInited(GetDigObj())));
}

*/

void CMyEditView::OnMakegraphicsregion() 
{
	MakeGraphRegion();	
}

//-----------------------//
//-----自己定义的函数----//
//-----------------------//
//显示工作区中的文件名称
void CMyEditView::UpdateAreaName()
{
	char str[1000];
	char name[_MAX_FNAME];
	CString FName;
	
	str[0]=0;
	if (PAi)
	{   
	   name[0]=0;
	   _GetAreaFileName1(PAi,name,_MAX_FNAME);

	   if (name[0])
	   {
		  lstrcat(str,name);
		  
		  //添加后缀名
		  FName=name;
	      if (FName.Find(".",0)<0)
			  lstrcat(str,".wt");

          lstrcat(str," /");
	   }
	}
	 
	if (LAi)
	{  
	   name[0]=0;
	   _GetAreaFileName1(LAi,name,_MAX_FNAME);

	   if (name[0])
	   {
          lstrcat(str,name);

		  //添加后缀名
		  FName=name;
	      if (FName.Find(".",0)<0)
			  lstrcat(str,".wl");

		  lstrcat(str," /");
	   }
	}

	if (RAi)
	{  
	   name[0]=0;
	   _GetAreaFileName1(RAi,name,_MAX_FNAME);

	   if (name[0])
	   {  
		  lstrcat(str,name);
		  
		  //添加后缀名
		  FName=name;
	      if (FName.Find(".",0)<0)
			  lstrcat(str,".wp");

		  lstrcat(str," /");
	   }
	}

	//修改标题
    GetDocument()->SetTitle(str);
}

//------自定义操作------//
//--删除点--
void CMyEditView::OnMyDelpnts() 
{
	BaseGisTool *extTool;

	extTool=new CDelGroupPointTool(this);

	SetExtTool(extTool);
}

void CMyEditView::OnMyUndo() 
{
	Undo();	
}



D_DOT xyz[2];short ai;int k1=0;
void CMyEditView::OnDaoxian() 
{
	D_DOT  *lxy;
long      len;
LIN_INFO linf;
ai=GetEditArea(LIN);
_GetLin(ai,1,&lxy,&len,&linf);


//以下为主循环
int i=0;
double M=0.000000;
D_DOT j=lxy[0];
double L=0;

double next=0.0000;
float jianju;
jianju=jianju1();

                       for (;i<len-1;i++)
	 {
int al=1;
if (lxy[i].y<lxy[i+1].y) al=1;
else al=(-1);
double o1=1;
o1=al*atan(fabs(lxy[i].y-lxy[i+1].y)/fabs(lxy[i].x-lxy[i+1].x));

next=_SegmentLength(&j,&lxy[i+1]);
M=M+next;



if (M>=jianju)
{
while (M>=jianju)
		{
	L=jianju+next-M;
	j=MOVEJ(j,L,o1);
	HJ(j);k1++;
	next=_SegmentLength(&j,&lxy[i+1]);
		M=next;
	if (next<jianju&&(i+2)<len)
	{i--;M=0;}

		}
}
else 
{
j=lxy[i+1];
}
	 }

	
}

void CMyEditView::HJ(D_DOT k)
{
xyz[0].x=k.x;
xyz[0].y=k.y;
xyz[1].x=k.x;
xyz[1].y=k.y+17;
LIN_INFO inf;
	memset(&inf,0,sizeof(LIN_INFO));
inf.ltp=1;	//线型号
inf.lclr=2;	//线颜色
inf.lw=2;
inf.xscale=1;		//X系数
inf.yscale=1;	//线宽
ai=GetEditArea(LIN);
_AppendLin(ai,xyz,2,&inf);	//处理线实体



	PNT_INFO   inf1;
	D_DOT      xy;
	char       dat[64];      	
xy.x=k.x-3;
xy.y=k.y+22;
/*CString str;
str.Format(_T("%d%d"),"导线号",k1); */
char string[25];
char string4[25];
itoa(k1, string, 10);
itoa(k1+1, string4, 10);
char string2[25];
char string3[25]="导";
char string5[25]="-";//这一大段是处理字符串,头都大了....囧...
strcpy(string2,string);
strcat(string2,string5);
strcat(string2,string4);
strcat(string2,string3);
lstrcpy(dat,string2);
memset(&inf1,0,sizeof(PNT_INFO));
inf1.type=PNT_NOTE;
inf1.info.ch.height=2;
inf1.info.ch.width=2;
inf1.iclr=2;
inf1.info.text.ifnt=1;
inf1.info.text.chnt=1;
short ai1;
ai1=GetEditArea(PNT);
_AppendPnt(ai1,&xy,dat,lstrlen(dat),&inf1);

_RestoreWindow();
}

D_DOT CMyEditView::MOVEJ(D_DOT A, double L, double o1)
{
D_DOT b;
b.x=A.x+L*cos(o1);
b.y=A.y+L*sin(o1);
return b;
}

float CMyEditView::jianju1()
{
	Cjianju dlg;
		float jianju2;
	if( dlg.DoModal() == IDOK )

		 jianju2=dlg.m_jianju;

	return jianju2;

}


int k2=0;float jianju2=0;
void CMyEditView::OnFenceng() 
{
	D_DOT  *lxyz;
long      len;
LIN_INFO linf;
ai=GetEditArea(LIN);
_GetLin(ai,1,&lxyz,&len,&linf);

//以下为主循环
int i=0;
double M=0.000000;
D_DOT j=lxyz[0];
double L=0;
double next=0.0000;
double o1=1;
//Ljianju=jianju1();

   for(;i<len-1;i++)
	 {
int al=1;
if (lxyz[i].y<lxyz[i+1].y) al=1;

else al=(-1);
o1=al*atan(fabs(j.y-lxyz[i+1].y)/fabs(j.x-lxyz[i+1].x));
next=_SegmentLength(&j,&lxyz[i+1]);
M=M+next;



if (M>=jianju2)
{
	L=jianju2+next-M;
	j=MOVEJ(j,L,o1);
	HJ1(j);k2++;
    jianju2=fcjianju();
	i--;
	M=0;
}
else 
{
j=lxyz[i+1];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -