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

📄 dxfdlg.cpp

📁 利用VC++开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		layer.LineTypeObjhandle = objhandle1; // Continuous
		drawing.AddLayer(&layer);

		// Layer4
		ZeroMemory(&layer, sizeof(layer));
		strcpy(layer.Name, "Layer4");
		layer.Color = 4;
		layer.LineTypeObjhandle = objhandle1; // Continuous
		drawing.AddLayer(&layer);

		//  STYLE table type -------------------------
		STYLE	style;

		ZeroMemory(&style, sizeof(style));
		strcpy(style.Name, "Style1");
		strcpy(style.PrimaryFontFilename, "TIMES.TTF");
		style.LastHeightUsed = 0.3;
		style.WidthFactor = 1;
		objhandle1 = drawing.AddTextStyle(&style);

		//  DIMSTYLE table type ----------------------
		DIMSTYLE	dimstyle;

		//  DIM1
		ZeroMemory(&dimstyle, sizeof(dimstyle));
		strcpy(dimstyle.Name, "DIM1");			// DimStyle Name
		dimstyle.dimclrd = 2;					// Dimension line & Arrow heads color
		dimstyle.dimdle = 0.0000;				// Dimension line size after Extensionline
		dimstyle.dimclre = 2;					// Extension line color
		dimstyle.dimexe = 0.1800;				// Extension line size after Dimline
		dimstyle.dimexo = 0.0625;				// Offset from origin
		strcpy(dimstyle.dimblk1, "ClosedFilled");// 1st Arrow head
		strcpy(dimstyle.dimblk2, "ClosedFilled");// 2nd Arrow head
		dimstyle.dimasz = 0.1800;				// Arrow size
		dimstyle.dimtxstyObjhandle = objhandle1;// Text style
		dimstyle.dimclrt = 3;					// Text color
		dimstyle.dimtxt = 0.1800;				// Text height
		dimstyle.dimtad = 1;					// Vertical Text Placement
		dimstyle.dimgap = 0.0900;				// Offset from dimension line
		drawing.AddDimStyle(&dimstyle);
/*
		// Entities Section ----------------------------------------
		// set current textstyle to Style1
		drawing.SetTextStyle("Style1");

		// default current layer is 0
		// draw text
		result &= drawing.Text("Solid", 11.4, 4.6, 0.3) > 0;

		// set current layer to Layer2
		result &= drawing.SetLayer("Layer2");
		// draw a line
		result &= drawing.Line(1.8, 3.1, 8.1, 7.5) > 0;

		// set current layer to Layer1 and linetype to DASHDOT2
		result &= drawing.SetLayer("Layer1");
		result &= drawing.SetLineType("DASHDOT2");
		// draw a circle
		result &= drawing.Circle(8.1, 4.4, 1.75) > 0;

		// set current layer to Layer2
		result &= drawing.SetLayer("Layer2");
		// draw text
		result &= drawing.Text("Circle", 7.5, 4.2, 0.3, 0) > 0;

		// set current layer to Layer4
		result &= drawing.SetLayer("Layer4");
		// draw a solid
		REALPOINT points[4];
		points[0].x = 10.4; points[0].y = 7.2;
		points[1].x = 13.6; points[1].y = 7.4;
		points[2].x = 13.1; points[2].y = 4.9;
		points[3].x = 10.9; points[3].y = 5.9;
		result &= drawing.Solid(points[0], points[1], points[2], points[3]) > 0;
		// draw polyline
	/*	result &= drawing.SetColor(3);
		ENTVERTEX vertex[5];
        
    	ENTVERTEX vertex[5];
		ZeroMemory(vertex, sizeof(ENTVERTEX)*5);
    	
	    vertex[0].Point.x = 1.2125; vertex[0].Point.y = 5.1811;
		vertex[1].Point.x = 2.5888; vertex[1].Point.y = 4.9520;
		vertex[2].Point.x = 2.7910; vertex[2].Point.y = 7.1188;
		vertex[3].Point.x = 4.7204; vertex[3].Point.y = 6.6414;
		vertex[4].Point.x = 5.0015; vertex[4].Point.y = 8.0484;
	    
		result &= drawing.PolyLine(vertex, 5);
 		// draw text
      result &= drawing.SetColor(3);
		POSITION pos;
		int i=m_dxfpline.GetCount();
	
        pos=m_dxfpline.GetHeadPosition();
  */    
        // m=
	/*	if(pos!=NULL)
		{
	
      // result &= drawing.PolyLine(m_dxfpline.GetAt(pos)->y_vertex, 3);
	   TRACE("the date is %f,%f\n", m_dxfpline.GetAt(pos)->z_vertex[0].Point.x,m_dxfpline.GetAt(pos)->z_vertex[0].Point.y);
	   TRACE("the date is z %f\n", m_dxfpline.GetAt(pos)->z_vertex[0].Point.z);
	   TRACE("the date is %f,%f\n", m_dxfpline.GetAt(pos)->z_vertex[1].Point.x,m_dxfpline.GetAt(pos)->z_vertex[1].Point.y);
        result &= drawing.PolyLine(m_dxfpline.GetAt(pos)->z_vertex, m_dxfpline.GetAt(pos)->y_pointnum);
        result &= drawing.PolyLine(m_dxfpline.GetAt(pos)->y_vertex, m_dxfpline.GetAt(pos)->z_pointnum);
      
		}
      
*/
		result &= drawing.SetColor(3);
		POSITION pos;
		pos=m_dxfpline.GetHeadPosition();
		int x_step=0;
		int y_step=0;
       int i=1;
		while(pos!=NULL)
		{  
			if(i<=10)
			{
		   m_dxfpline.GetAt(pos)->ADD_COUNTDATE(x_step,y_step);
		   drawing.PolyLine(m_dxfpline.GetAt(pos)->y_vertex, m_dxfpline.GetAt(pos)->y_pointnum);
           drawing.PolyLine(m_dxfpline.GetAt(pos)->z_vertex, m_dxfpline.GetAt(pos)->z_pointnum);
           i++;
		   drawing.Line(x_step,y_step+5,x_step,y_step-5);
		   
		   CString s;
		   s.Format("%.2f",m_dxfpline.GetAt(pos)->zhuanghao);
		   s.Replace(".00","");
	       drawing.Text(s, x_step-0.5,y_step, 1, 0);
		   y_step+=20;
		   
			}
			else
			{
				i=0;
				x_step+=200;
				y_step=0;
				m_dxfpline.GetAt(pos)->ADD_COUNTDATE(x_step,y_step);
		        drawing.PolyLine(m_dxfpline.GetAt(pos)->y_vertex, m_dxfpline.GetAt(pos)->y_pointnum);
				drawing.PolyLine(m_dxfpline.GetAt(pos)->z_vertex, m_dxfpline.GetAt(pos)->z_pointnum);
				drawing.Line(x_step,y_step+5,x_step,y_step-5);
			}
			m_dxfpline.GetNext(pos);


		}




/*
        CDXFPLINE  *p=new CDXFPLINE;
		ZeroMemory(p->y_vertex, sizeof(ENTVERTEX)*15);
		p->y_vertex[0].Point.x=-2;
        p->y_vertex[0].Point.y=5;
        p->y_vertex[1].Point.x=6;
        p->y_vertex[1].Point.y=12;
//TRACE("the date is %f,%f\n", p->z_vertex[0].Point.x,p->z_vertex[0].Point.y);
//TRACE("the date is %f,%f\n", p->z_vertex[1].Point.x,p->z_vertex[1].Point.y);
     //   p=m_dxfpline.GetAt();
        m_dxfpline.AddTail(p);
        POSITION pos=m_dxfpline.GetHeadPosition();
        result &= drawing.PolyLine(m_dxfpline.GetAt(pos)->y_vertex, 2);




		result &= drawing.SetColor(4);
		result &= drawing.Text("Polyline", 2.97, 5.7, 0.3, 30) > 0;

		// set current layer to Layer3
		result &= drawing.SetLayer("Layer3");
		result &= drawing.SetColor(COLOR_BYLAYER);
		// draw text
		result &= drawing.Text("Line", 6.5, 6.5, 0.3, 35) > 0;
		// draw a dimension line
		result &= drawing.SetDimStyle("DIM1");
		result &= drawing.DimLinear(6.35, 3, 9.85, 3, 9.85, 2, 0, "3.50") > 0;
*/	
		// Save data to dxf file
		if(!drawing.SaveDXFFile(DxfFileName))
		{
			result = FALSE;
			MessageBox("Error while saving dxf file!", "Error", MB_ICONERROR | MB_OK);
		}

		// Initialize Drawing View Window
		CRect r;
		m_DrawingWindow.GetClientRect(r);
		drawing.InitView(0, 0, r.Width(), r.Height());
        drawing.ZoomExtents();
		m_DrawingWindow.RedrawWindow();

		// Destroy CDrawing and free allocated memory
//		result &= drawing.Destroy();

		if(result)
			MessageBox("Writing dxf file done.", "Dxf Test (CDrawing)", MB_ICONINFORMATION | MB_OK);
		else
			MessageBox("Error!", "Error", MB_ICONERROR | MB_OK);

	}	// TODO: Add your control notification handler code here
	}
	else
	{
		AfxMessageBox("请先打开数据");
	}
	
}

void CDXFDlg::OnZoomIN() 
{
	// TODO: Add your control notification handler code here
	if(drawing.isOpen())
	{
		drawing.SetZoomLevel( drawing.GetZoomLevel() * 1.5 );
		m_DrawingWindow.RedrawWindow();
	}	
}

void CDXFDlg::OnZoomOut() 
{
	// TODO: Add your control notification handler code here
		if(drawing.isOpen())
	{
		drawing.SetZoomLevel( drawing.GetZoomLevel() / 1.5 );
		m_DrawingWindow.RedrawWindow();
	}
}

void CDXFDlg::OnExit() 
{
	// TODO: Add your control notification handler code here
	drawing.Destroy();
	m_DrawingWindow.RedrawWindow();
}

void CDXFDlg::OnZoomExtents() 
{
	// TODO: Add your control notification handler code here
		if(drawing.isOpen())
	{
		drawing.ZoomExtents();
		m_DrawingWindow.RedrawWindow();
	}
}

BOOL CDXFDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
   if(drawing.isOpen())
	{
		if(zDelta>0)
			drawing.SetZoomLevel( drawing.GetZoomLevel() * 1.5 );
		else
			drawing.SetZoomLevel( drawing.GetZoomLevel() / 1.5 );
		m_DrawingWindow.RedrawWindow();
	}
	return CDialog::OnMouseWheel(nFlags, zDelta, pt);	

}

BOOL CDXFDlg::TURN_DATE_DXF()
{
           POSITION pos;
		   pos=m_date.GetHeadPosition();
		   while(pos!=NULL)
		   {
			CDXFPLINE *p=new CDXFPLINE;
		
			p->zhuanghao=m_date.GetAt(pos)->zhuanghao;
			int n1,n2;
			n1=m_date.GetAt(pos)->you.GetSize();
			if(n1>=2)
			{
					int j=1;
					int n=0;
                    //p->y_vertex[0].Point.x=0;
					for(int i=0;n1/2>i;i++)
					{
					
						p->y_vertex[j].Point.x=-m_date.GetAt(pos)->you[n];
                        n++;
					
						p->y_vertex[j].Point.y=m_date.GetAt(pos)->you[n];
						n++;
						j++;
					}
					p->y_pointnum=j;
			}
			n2=m_date.GetAt(pos)->zuo.GetSize();
			if(n2>=2)
				{
					int j=1;
					int n=0;
					for(int i=0;n2/2>i;i++)
					{
					
						p->z_vertex[j].Point.x=m_date.GetAt(pos)->zuo[n];
							
						n++;
					
						p->z_vertex[j].Point.y=m_date.GetAt(pos)->zuo[n];
						TRACE("the date is %f,%f\n", p->z_vertex[j].Point.x,p->z_vertex[j].Point.y);
						n++;
						j++;
					}
					p->z_pointnum=j;


			   }
			m_dxfpline.AddTail(p);
			m_date.GetNext(pos);
			
		}

			
  
	return true;

}

void CDXFDlg::DeleteM_DATE(DUANMIAN &m_date)
{
	POSITION pos=m_date.GetHeadPosition();
	while(pos!=NULL)
	{
		DUANMIANDATE *p=m_date.GetNext(pos);
		delete p;
	}
	m_date.RemoveAll();

}

void CDXFDlg::DeleteM_DXFPLINE(DXFPLINE &m_dxfpline)
{
	POSITION pos=m_dxfpline.GetHeadPosition();
	while(pos!=NULL)
	{
		CDXFPLINE *p=m_dxfpline.GetNext(pos);
		delete p;
	}
	m_dxfpline.RemoveAll();

}

void CDXFDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	DeleteM_DATE(m_date);
	DeleteM_DXFPLINE(m_dxfpline);
	dlg.DoModal();
}

void CDXFDlg::OnOPENDXF() 
{
static char szFilter[] = "DXF file format(*.dxf) |*.dxf|All Files (*.*)|*.*||";

	CFileDialog OpenDlg( TRUE, NULL, NULL/*LastFilePath*/, OFN_HIDEREADONLY | OFN_EXPLORER, szFilter, NULL );
	OpenDlg.m_ofn.lpstrTitle = "Open DXF File";

	if(OpenDlg.DoModal()==IDOK)
	{	// Openning sample dxf file
		CString DxfFileName( OpenDlg.GetPathName() );

		if(drawing.isOpen())
			drawing.Destroy();

		// Create Drawing
		if(!drawing.Create())
		{
			MessageBox("Fatal error on creating CDrawing!", "Error", MB_ICONERROR | MB_OK);
			return;
		}
	
		// Initialize Progressbar
		CProgressDlg ProgDlg;
		ProgDlg.Create(this);
		ProgDlg.SetRange(0, 100);

		// Load data from dxf file
		if(!drawing.LoadDXFFile(DxfFileName, ProgDlg.m_hWnd))
		{
			ProgDlg.DestroyWindow();
			MessageBox("Error while loading dxf file!", "Error", MB_ICONERROR | MB_OK);
			return;
		}

		// Close Progress window
		ProgDlg.DestroyWindow();

		// Initiaze Drawing View Window
		CRect r;
		m_DrawingWindow.GetClientRect(r);
		drawing.InitView(0, 0, r.Width(), r.Height());
		drawing.ZoomExtents();
		m_DrawingWindow.RedrawWindow();
	}	
}

//DEL BOOL CDXFDlg::DestroyWindow() 
//DEL {
//DEL 	// TODO: Add your specialized code here and/or call the base class
//DEL 	
//DEL 	return CDialog::DestroyWindow();
//DEL }

void CDXFDlg::OnButton7() 
{
	// TODO: Add your control notification handler code here
	//dlg.DoModal();
	CAboutDlg dlg;
	dlg.DoModal();
}

⌨️ 快捷键说明

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