📄 finiteelementview.cpp
字号:
pDC->TextOut(start.x+(j+1)*4*m_line,start.y+(i+1)*m_line,str);
}
}
//-----------------------------------------
start=CPoint(start.x+3*m_line,start.y+m_line*pDoc->m_structure.m_element_num+2*m_line);
pDC->TextOut(start.x-3*m_line,start.y,"结构中所有结点信息:");
pDC->TextOut(start.x-3*m_line,start.y+m_line,"结点号 结点坐标 支承情况 荷载情况");
for(i=0;i<pDoc->m_structure.m_node_num;i++)
{
pNode=(CNode*)(pDoc->m_structure.m_nodeArray.GetAt(i));
sprintf(str,"结点%d:",pNode->m_node_id);
pDC->TextOut(start.x-m_line*3,start.y+m_line*2*(i+1),str);
for(j=0;j<2;j++)
{
sprintf(str,"%7.5e",pNode->m_nodexy[j]);
pDC->TextOut(start.x,start.y+m_line*(2*i+1)+(j+1)*m_line,str);
sprintf(str,"%d",pNode->m_supportinfo[j]);
pDC->TextOut(start.x+m_line*7,start.y+m_line*(2*i+1)+(j+1)*m_line,str);
sprintf(str,"%7.5e",pNode->m_loadinfo[j]);
pDC->TextOut(start.x+m_line*10,start.y+m_line*(2*i+1)+(j+1)*m_line,str);
}
}
}
void CFiniteElementView::DisplayStructureGraph(CDC *pDC, CFiniteElementDoc *pDoc)
{
SetScrollSizes(MM_TEXT, CSize(40*m_line,2*m_page));
CElement* pElement;
int i,j;
int dx;
char str[20];
CPoint cp1,cp2,cp3,start;
CPoint tempoint;
CPen pen;
CFont* pOldFont;
int scale=1;
start=CPoint(5*m_line,5*m_line);
//----------------------
if(!pDC->IsPrinting())
{
CRect rect;
GetClientRect(&rect);
pDC->SelectStockObject(GRAY_BRUSH);
pDC->Rectangle(&CRect(0,0,rect.right,m_page*2));
pDC->SelectStockObject(WHITE_BRUSH);
pDC->Rectangle(CRect(start.x-2*m_line,start.y-2*m_line,
start.x+35*m_line,2*m_page-10*m_line));
}
//------------------------------
pen.CreatePen(PS_SOLID,(int)(m_line/10),RGB(128,0,255));
pDC->SetTextColor(RGB(128,0,128));
pOldFont=pDC->SelectObject(&m_title_font);
//-------------------------------
pDC->TextOut(start.x+5*m_line,start.y,"数据文件所确定的结构图形如下");
pDC->SelectObject(pOldFont);
pDC->SelectObject(&pen);
start=CPoint(start.x,start.y+m_line*6*pDoc->m_structure.m_node_num/3);
for(i=0;i<pDoc->m_structure.m_elementArray.GetSize();i++)
{
pElement=(CElement*)(pDoc->m_structure.m_elementArray.GetAt(i));
for(;;)
{
cp1=CPoint((int)(pElement->m_pNode[0]->m_nodexy[0]*scale),
(int)(pElement->m_pNode[0]->m_nodexy[1]*scale*(-1)))+CPoint(8*m_line,0)+start;
cp2=CPoint((int)(pElement->m_pNode[1]->m_nodexy[0]*scale),
(int)(pElement->m_pNode[1]->m_nodexy[1]*scale*(-1)))+CPoint(8*m_line,0)+start;
cp3=CPoint((int)(pElement->m_pNode[2]->m_nodexy[0]*scale),
(int)(pElement->m_pNode[2]->m_nodexy[1]*scale*(-1)))+CPoint(8*m_line,0)+start;
if(max(abs(cp1.x-cp2.x),abs(cp1.y-cp2.y))<5*m_line)scale+=2;
else break;
}
pDC->MoveTo(cp1);
pDC->LineTo(cp2);
pDC->LineTo(cp3);
pDC->LineTo(cp1);
dx=(m_line/5);
pDC->Ellipse(cp1.x-dx,cp1.y-dx,cp1.x+dx,cp1.y+dx);
pDC->Ellipse(cp2.x-dx,cp2.y-dx,cp2.x+dx,cp2.y+dx);
pDC->Ellipse(cp3.x-dx,cp3.y-dx,cp3.x+dx,cp3.y+dx);
//---------标注单元号---------
pDC->SetTextColor(RGB(240,0,0));
tempoint=CPoint(CPoint(cp1+cp2+cp3).x/3,CPoint(cp1+cp2+cp3).y/3);
pDC->Ellipse(tempoint.x-(int)(m_line/2),tempoint.y-(int)(m_line/2),
tempoint.x+(int)(m_line/2),tempoint.y+(int)(m_line/2));
sprintf(str,"%d",pElement->m_element_id);
pDC->DrawText(str,&CRect(tempoint.x-(int)(m_line/2),tempoint.y-(int)(m_line/2)
,tempoint.x+(int)(m_line/2),tempoint.y+(int)(m_line/2)),DT_CENTER);
//--------标注结点号-----------
sprintf(str,"%d",pElement->m_pNode[0]->m_node_id);
pDC->TextOut(cp1.x,cp1.y,str);
sprintf(str,"%d",pElement->m_pNode[1]->m_node_id);
pDC->TextOut(cp2.x,cp2.y,str);
sprintf(str,"%d",pElement->m_pNode[2]->m_node_id);
pDC->TextOut(cp3.x,cp3.y,str);
//-----------------------------
}
start=CPoint(start.x,start.y+m_line*3);
pDC->SetTextColor(RGB(128,0,200));
pDC->TextOut(start.x,start.y,"1号单元的刚度矩阵如下:");
//=============================================
double ** elestiffmatrix;
elestiffmatrix=new double*[6];//刚度矩阵
for(i=0;i<6;i++)
{
elestiffmatrix[i]=new double[6];
}
if(pDoc->m_structure.m_elementArray.GetSize()>0)
pElement=(CElement*)(pDoc->m_structure.m_elementArray.GetAt(0));
else
return;
pElement->GetElementStiffMatrix(elestiffmatrix);
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
sprintf(str,"%7.4e",elestiffmatrix[i][j]);
pDC->TextOut(start.x+j*5*m_line,start.y+m_line*(i+2),str);
}
}
for(i=0;i<6;i++)
{
delete elestiffmatrix[i];
}
delete elestiffmatrix;
//================================
/*start=CPoint(start.x,start.y+6*m_line);
double* loadvector;
loadvector=new double[20];
pDoc->m_structure.GetLoadVector(loadvector);
for(i=0;i<20;i++)
{
sprintf(str,"结点%d :%7.5e",i/2+1,loadvector[i]);
pDC->TextOut(start.x,start.y+m_line*(i+2),str);
}*/
}
void CFiniteElementView::DisplayAnalysisData(CDC *pDC, CFiniteElementDoc *pDoc)
{
SetScrollSizes(MM_TEXT, CSize(40*m_line,3*m_page));
CNode* tempNode;
CElement* tempEle;
int i;
char tempstr[50];
CPoint start(5*m_line,5*m_line);
CFont* pOldFont;
pOldFont=pDC->SelectObject(&m_title_font);
pDC->SetTextColor(RGB(128,0,128));
//----------------------
if(!pDC->IsPrinting())
{
CRect rect;
GetClientRect(&rect);
pDC->SelectStockObject(GRAY_BRUSH);
pDC->Rectangle(&CRect(0,0,rect.right,m_page*3));
pDC->SelectStockObject(WHITE_BRUSH);
pDC->Rectangle(CRect(start.x-2*m_line,start.y-2*m_line,
start.x+35*m_line,3*m_page-10*m_line));
}
//------------------------------
pDC->TextOut(start.x+5*m_line,start.y,"静力分析结果数据");
pDC->SelectObject(pOldFont);
pDC->TextOut(start.x,start.y+2*m_line,"各结点位移如下:");
for(i=0;i<pDoc->m_structure.m_node_num;i++)
{
tempNode=(CNode*)(pDoc->m_structure.m_nodeArray.GetAt(i));
sprintf(tempstr,"结点号:%d\0",tempNode->m_node_id);
pDC->TextOut(start.x,start.y+m_line*(2*i+3),tempstr);
sprintf(tempstr,"X位移:%7.5e\0",tempNode->m_displace[0]);
pDC->TextOut(start.x+2*m_line,start.y+m_line*(2*i+4),tempstr);
sprintf(tempstr,"Y位移:%7.5e\0",tempNode->m_displace[1]);
pDC->TextOut(start.x+10*m_line,start.y+m_line*(2*i+4),tempstr);
}
start=CPoint(start.x,start.y+m_line*(pDoc->m_structure.m_node_num+2)*2);
pDC->TextOut(start.x,start.y,"单元应力情况分析:");
for(i=0;i<pDoc->m_structure.m_element_num;i++)
{
tempEle=(CElement*)(pDoc->m_structure.m_elementArray.GetAt(i));
sprintf(tempstr,"单元号:%d\0",tempEle->m_element_id,tempEle->m_element_id);
pDC->TextOut(start.x,start.y+m_line*(i*5+1),tempstr);
sprintf(tempstr,"单元面积 :%7.5e",tempEle->m_area);
pDC->TextOut(start.x,start.y+m_line*(i*5+2),tempstr);
sprintf(tempstr,"X 应力分量:%7.5e\0",tempEle->m_sigmaX);
pDC->TextOut(start.x,start.y+m_line*(i*5+3),tempstr);
sprintf(tempstr,"X 应力分量:%7.5e\0",tempEle->m_sigmaY);
pDC->TextOut(start.x,start.y+m_line*(i*5+4),tempstr);
sprintf(tempstr,"剪切力分量:%7.5e\0",tempEle->m_taoXY);
pDC->TextOut(start.x,start.y+m_line*(i*5+5),tempstr);
sprintf(tempstr,"最大主应力:%7.5e\0",tempEle->m_maxMainStress);
pDC->TextOut(start.x+10*m_line,start.y+m_line*(i*5+3),tempstr);
sprintf(tempstr,"最小主应力:%7.5e\0",tempEle->m_minMainStress);
pDC->TextOut(start.x+10*m_line,start.y+m_line*(i*5+4),tempstr);
sprintf(tempstr,"主平面角 :%7.5e\0",tempEle->m_mainPlaneAngle);
pDC->TextOut(start.x+10*m_line,start.y+m_line*(i*5+5),tempstr);
}
}
void CFiniteElementView::DisplayFirst(CDC *pDC)
{
SetScrollSizes(MM_TEXT, CSize(40*m_line,10*m_line));
CPoint start(5*m_line,5*m_line);
//---------没有打印时页面边框--------
if(!pDC->IsPrinting())
{
CRect rect;
GetClientRect(&rect);
pDC->SelectStockObject(GRAY_BRUSH);
pDC->Rectangle(&rect);
pDC->SelectStockObject(WHITE_BRUSH);
pDC->Rectangle(CRect(start.x-2*m_line,start.y-2*m_line,
start.x+25*m_line,start.y+10*m_line));
}
//--------------
CFont* pOldFont;
pOldFont=pDC->SelectObject(&m_title_font);
pDC->SetTextColor(RGB(128,0,128));
pDC->TextOut(start.x,start.y,"当前没有输入数据,请打开数据文件");
pDC->TextOut(start.x,start.y+2*m_line,"打开后,从查看菜单中选择要看的数据结果。");
pDC->SelectObject(pOldFont);
pDC->TextOut(start.x,start.y+6*m_line,"[石油大学 数理系 无线电物理实验室所有]");
pDC->TextOut(start.x,start.y+7*m_line," 2004-3");
}
void CFiniteElementView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
CScrollView::OnPrepareDC(pDC, pInfo);
if(pDC->IsPrinting())
{
m_line=(int)(m_linebase*pDC->GetDeviceCaps(LOGPIXELSY)/96);
m_page=(int)(m_pagebase*pDC->GetDeviceCaps(LOGPIXELSY)/96);
m_title_font.CreateFont(int(m_line*1.2),0,0,0,FW_BOLD,FALSE,FALSE,FALSE,
GB2312_CHARSET,OUT_TT_PRECIS,CLIP_TT_ALWAYS,
DEFAULT_QUALITY,DEFAULT_PITCH,"方正姚体");
m_content_font.CreateFont(int(m_line*0.9),0,0,0,FW_THIN,FALSE,FALSE,FALSE,
GB2312_CHARSET,OUT_TT_PRECIS,CLIP_TT_ALWAYS,
DEFAULT_QUALITY,DEFAULT_PITCH,"FIXEDSYS");
}
else
{
m_line=20;
m_page=600;
m_title_font.CreateFont(int(m_line*1.2),0,0,0,FW_BOLD,FALSE,FALSE,FALSE,
GB2312_CHARSET,OUT_TT_PRECIS,CLIP_TT_ALWAYS,
DEFAULT_QUALITY,DEFAULT_PITCH,"方正姚体");
m_content_font.CreateFont(int(m_line*0.9),0,0,0,FW_THIN,FALSE,FALSE,FALSE,
GB2312_CHARSET,OUT_TT_PRECIS,CLIP_TT_ALWAYS,
DEFAULT_QUALITY,DEFAULT_PITCH,"FIXEDSYS");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -