📄 myeditview.cpp
字号:
//剪贴板操作
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 + -