版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、道路與鐵道工程 CAD第三次作業(yè)業(yè):道路與鐵道工程 名:田家凱 號(hào):124811166專姓學(xué)指導(dǎo)老師:2012.11.16一、 數(shù)據(jù)庫此次作業(yè)中使用 Visual FoxPro 6.0 建立數(shù)據(jù)庫和數(shù)據(jù)表,利用數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的讀入和結(jié)果的保存。數(shù)據(jù)庫文件:inputdata.dbc數(shù)據(jù)表文件:data.dbf圖 1 數(shù)據(jù)表文件其中讀入的為交點(diǎn)的 X、Y、R 和 L0,計(jì)算得到的為 T,L,E。二、框圖 21框表 1框控件IDCaptionFunction利用 CFileDialog 類打開數(shù)據(jù)庫文件 inputdata.dbc 和數(shù)據(jù)表文IDC_OpenFile打開文件件 data.dbf。交
2、點(diǎn) X、Y、R 以及 L0 數(shù)據(jù)。IDC_SaveResult保存文件將計(jì)算得到的交點(diǎn)的 T、L、E到數(shù)據(jù)表 data.dbf。IDC_EDIT1/顯示打開數(shù)據(jù)庫文件的地址。IDC_EDIT2/顯示數(shù)據(jù)表文件的地址。利用 CGridCtrl 類將輸入的交點(diǎn)的 X、Y、R 以及L0 數(shù)據(jù)顯示在對(duì)IDC_Display顯示數(shù)據(jù)話框的表控件里面。IDC_Cal計(jì)算曲線要素計(jì)算各個(gè)交點(diǎn)的曲線要素及繪圖所能用到的各種數(shù)據(jù)。在 CAD2009 中繪交點(diǎn)的連線、線路的中線、起終點(diǎn)及交點(diǎn)標(biāo)注、IDC_CADCAD 繪圖百米樁及千米樁標(biāo)注并且繪制出曲線要素表。IDC_MyGridCtrl/Class:MFCGr
3、idCtrl,用于顯示數(shù)據(jù)。IDC_Quit退出計(jì)算完成,退出。三、 ARX 繪圖此次作業(yè)中使用 VS2005+ObjectARX2009+AutoCAD2009 的組合進(jìn)行線路繪圖。程序工程中的文件及其功能如下表所示:表 2 工程文件列表*.h/*.cppStruct / clsssFunction線路交點(diǎn)參數(shù):結(jié)構(gòu)體:mainpoX、Y、R、L0、T、L、E、特征點(diǎn)里坐標(biāo)等線任意一點(diǎn)參數(shù):結(jié)構(gòu)體:po2DCaculation.h/Caculation.cppX、Y、切線方位角各種計(jì)算函數(shù):讀寫數(shù)據(jù)庫函數(shù),計(jì)算方位角、轉(zhuǎn)類:CCaculation角、T、L、E、特征點(diǎn)里程及坐標(biāo)、任意里程轉(zhuǎn)坐
4、標(biāo)等ttset.h/ttset.cpp類:Cttset讀寫 Fox 數(shù)據(jù)庫用于 ARX 的繪圖,包括直線、圓、CreatEnt.h/CreatEnt.cpp類:CCreatEnt圓弧、單行文字等modifyEnt.h/modifyEnt.cpp類:CmodifyEnt用于改變繪制圖形的顏色2下面是程序調(diào)試的效果圖以及線路繪制的成果圖:1、在 CAD2009 中加載生成的 tjkzuoyeARX.arx 文件。圖 3 加載 ARX 文件框。操作步驟如下:2、輸入定義令 aaa,調(diào)出【打開文件】-【顯示數(shù)據(jù)】-【計(jì)算曲線要素】-【CAD 繪圖】-【保存文件】-【退出】圖 4數(shù)據(jù)過程3圖 5 繪圖完
5、成3、在 CAD 中自動(dòng)繪制的線路中線圖如下所示:角樁樁 角角樁樁圖 6 線路中線圖4樁樁角角樁樁角角樁樁角角樁樁角角樁樁角角樁樁角角樁樁角圖 7 線路起終點(diǎn)標(biāo)注圖圖 8 線路交點(diǎn)細(xì)節(jié)圖5圖 9 線路曲線要素表四、程序代碼1.mainpo、po2D 結(jié)構(gòu)體、CCaculation 類6Caculation.h#include #include #include #include #include using namespatd;#defin4.0*atan(1.0)/交點(diǎn)參數(shù)/struct mainpodouble m_x, m_y;/ 交點(diǎn)坐標(biāo)m_R, m_lo;/ 半徑、緩和曲線doubl
6、e m_fwj, m_Alfa, m_Dist, m_p,m_m;/ 方位角、偏角、交點(diǎn)間距離、內(nèi)移距、切垂距double m_A;/ 緩和曲線參數(shù)double m_T, m_L, m_E;/ 切線長(zhǎng)、曲線長(zhǎng)、外矢距 double m_ZHml, m_HYml, m_QZml, m_YHml, m_HZml; / 曲線主點(diǎn)里程 double m_ZH_x,m_ZH_y,m_HZ_x,m_HZ_y;/直緩緩直點(diǎn)坐標(biāo)double m_HY_x,m_HY_y,m_YH_x,m_YH_y;/緩圓圓緩點(diǎn)坐標(biāo)double m_Ox,m_Oy;/圓心坐標(biāo)double m_jpfx;/交點(diǎn)角平分線角度doub
7、le m_temp;double m_jdzhh;/交點(diǎn)樁號(hào)m_Sum;double m_center_x,m_center_y;/線路中點(diǎn)坐標(biāo);/任意一點(diǎn)參數(shù)/struct po2Ddouble x,y;/任意一點(diǎn)的坐標(biāo) double alfa; /切線方位角;/計(jì)算函數(shù)/class CCaculationpublic:CCaculation(); public:CCaculation(void);JD角樁樁號(hào)轉(zhuǎn)角RLs1Ls2T1T2LE左右JD6K6+991.363087.81000202077.8577.85155.502.327Caculation.cpp#include stdaf
8、x.h #include Caculation.h CCaculation:CCaculation()jdNum = 1;jdPo= NULL;CCaculation:CCaculation(void)delete jdPo;/函數(shù)功能:將由數(shù)據(jù)表讀入的數(shù)據(jù)賦值給結(jié)構(gòu)體數(shù)組/void CCaculation:Dataexchange(double* aa,bb)jdNum=bb;jdPo= new mainpojdNum; for (i= 0;i jdNum; i+)jdPoi.m_x=aai0;jdPoi.m_y=aai1;jdPoi.m_R=aai2;jdPoi.m_lo=aai3;/函數(shù)
9、功能:計(jì)算方位角、距離、轉(zhuǎn)角各個(gè)交點(diǎn)的角平分線角度/void CCaculation:Cal_jpfx()for (i=0;ijdNum-1;i+)if (jdPoi+1.m_x-jdPoi.m_x)0)jdPoi.m_temp=atan(jdPoi+1.m_y-jdPoi.m_y)/(jdPoi+1.m_x-jdPoi.m_x);elsevoid Dataexchange(double*,);/將由數(shù)據(jù)表讀入的數(shù)據(jù)賦值給結(jié)構(gòu)體數(shù)組 void InputData(wchar_t * inputfilename);/文件輸入函數(shù)void Cal_fwj_Dist_Alfa();/計(jì)算方位角、兩點(diǎn)
10、之間距離、轉(zhuǎn)角的函數(shù) void Cal_m_p();/計(jì)算圓曲線內(nèi)移距、切垂距函數(shù)void Cal_T_L_E();/計(jì)算切線長(zhǎng)、曲線長(zhǎng)、外矢距函數(shù) void Cal_ml();/計(jì)算主點(diǎn)里程函數(shù)void Cal_ZH_HZ_xy(); /計(jì)算ZH、HZ點(diǎn)坐標(biāo) void Cal_HY_YH_xy(); /計(jì)算HY、YH點(diǎn)坐標(biāo) void Cal_jpfx(); /計(jì)算角平分線角度void Cal_JDzhh(); /計(jì)算交點(diǎn)樁號(hào)po 2D age_to_coordinate(double); /任意里程轉(zhuǎn)坐標(biāo)函數(shù) void OutputResult(wchar_t * outputfilenam
11、e);/文件輸出函數(shù)jdNum;mainpo* jdPo;jdPoi.m_temp=atan(jdPoi+1.m_y-jdPoi.m_y)/(jdPoi+1.m_x-jdPoi.m_x)-PI;for (jdPoi=0;ijdNum-2;i+)i.m_jpfx=(jdPoi+1.m_temp)+(jdPoi.m_temp)/2.0;/函數(shù)功能:計(jì)算方位角、距離、轉(zhuǎn)角/void CCaculation:Cal_fwj_Dist_Alfa()/方位角的計(jì)算for(i= 0;i = 0.0 &cy 0.0)jdPoi.m_fwj=atan(fabs(cx)/fabs(cy);else if(cxjd
12、Po= 0.0 & cy 0.0)i.m_fwj=PI-atan(fabs(cx)/fabs(cy);else if(cxjdPo 0.0 & cy 0.0) i.m_fwj=PI+atan(fabs(cx)/fabs(cy);else if(cxjdPo0.0)i.m_fwj=2.0*PI-atan(fabs(cx)/fabs(cy);else if(cxjdPo0.0 & cy=0.0)i.m_fwj=PI/2.0;else if(cxjdPo0.0 & cy=0.0)i.m_fwj=PI*3.0/2.0;jdPoi.m_Dist=sqrt(cx*cx+cy*cy);/計(jì)算交點(diǎn)間的距離/轉(zhuǎn)
13、向角的計(jì)算jdPo for (0.m_Alfa = 0.0;i= 0;i PI)/轉(zhuǎn)角范圍-180到+180i+1.m_Alfa-=2*PI;else if(jdPoi+1.m_Alfa-PI)jdPoi+1.m_Alfa+=2*PI;8/函數(shù)功能:計(jì)算圓曲線內(nèi)移距、切垂距函數(shù)/void CCaculation:Cal_m_p()jdPo jdPo0.m_p=0.0;0.m_m=0.0;for (i= 0;i jdNum-2; i+)jdPoi+1.m_m=jdPoi+1.m_lo/2.0-(jdPoi+1.m_lo*1.0,3)/240.0/(jdPoi+1.m_R*1.0,2);/計(jì)算切垂
14、距jdPo/計(jì)算內(nèi)移距/i+1.m_p=(jdPoi+1.m_lo*jdPoi+1.m_lo)/24.0/jdPoi+1.m_R;/函數(shù)功能:計(jì)算切線長(zhǎng)、曲線長(zhǎng)、外矢距函數(shù)/void CCaculation:Cal_T_L_E()jdPo jdPo jdPo for (0.m_L=0.0;0.m_T=0.0;0.m_E=0.0;i= 0;i jdNum-2; i+)/計(jì)算切線長(zhǎng)jdPoi+1.m_T=(jdPoi+1.m_R+jdPoi+1.m_p)*fabs(tan(jdPoi+1.m_Alfa/2.0)+jdPointi+1.m_m;/切線長(zhǎng)jdPoi+1.m_E=fabs(jdPoi+1
15、.m_R+jdPoi+1.m_p)/cos(fabs(jdPoi+1.m_Alfa)/2.0) -jdPoi+1.m_R; /外矢距jdPoi+1.m_L=fabs(jdPoi+1.m_Alfa*jdPoi+1.m_R)+jdPoi+1.m_lo;/計(jì)算曲線長(zhǎng)度/函數(shù)功能:計(jì)算主點(diǎn)里程,包括:ZH、HY、QZ、YH、HZ點(diǎn)/void CCaculation:Cal_ml()/計(jì)算主點(diǎn)里程doublei; jdPo jdPo jdPo jdPo jdPostartml = 0.0;0.m_ZHml = 0.m_HYml = 0.m_QZml = 0.m_YHml = 0.m_HZml =star
16、tml; startml; startml; startml; startml;for(i = 1; i jdNum-1; i+ )jdPoi.m_ZHml = jdPoi-1.m_HZml + jdPoi-1.m_Dist -jdPoi-1.m_T -9jdPoi.m_T; jdPo jdPo jdPo jdPoi.m_HYml = i.m_QZml = i.m_YHml = i.m_HZml =jdPo jdPo jdPo jdPoi.m_ZHml i.m_ZHml i.m_ZHml i.m_ZHml+jdPo (jdPo jdPo jdPoi.m_lo;i.m_L) / 2;i.m_L
17、- jdPoi.m_L;i.m_lo;jdPo jdPo jdPo jdPo jdPoi.m_ZHml = i.m_HYml = i.m_QZml = i.m_YHml = i.m_HZml =jdPo jdPo jdPo jdPo jdPoi-1.m_HZml +i.m_ZHml;i.m_ZHml;i.m_ZHml;i.m_ZHml;jdPoi-1.m_Dist - jdPoi-1.m_T;/函數(shù)功能:計(jì)算ZH、HZ點(diǎn)坐標(biāo)/void CCaculation:Cal_ZH_HZ_xy()double l1,l2;i;for (i=0;ijdNum;i+ )l1=jdPo jdPo jdPoi.
18、m_T;i.m_HZ_x = jdPoi.m_xi.m_y+ l1*cos(PI/2.0-jdPo+ l1*sin(PI/2.0-jdPoi.m_fwj);i.m_fwj);i.m_HZ_y = jdPojdPo jdPo0.m_ZH_x = jdPo 0.m_ZH_y = jdPo0.m_x;0.m_y;for (i=0;ijdNum-1;i+ )l2 = jdPo jdPojdPoiii.m_Dist-jdPo+ 1.m_ZH_x = jdPo+ 1.m_ZH_y = jdPoi +1.m_T;i.m_x + l2*cos(PI/2.0-jdPo i.m_y + l2*sin(PI/2.0
19、-jdPoi.m_fwj);i.m_fwj);/函數(shù)功能:計(jì)算HY、YH點(diǎn)坐標(biāo)/void CCaculation:Cal_HY_YH_xy()double x1,y1,l,a,b; i;/起始點(diǎn)初始化jdPo jdPo jdPo jdPo0.m_HY_x = 0.m_HY_y = 0.m_YH_x = 0.m_YH_y =jdPo jdPo jdPo jdPo0.m_x;0.m_y;0.m_x;0.m_y;for (i = 1;i jdNum-1;i+ )l = jdPoi.m_lo;x1 = l- y1 = l *(l,3) / 40.0 / jdPoi.m_R / jdPoi.m_R;l
20、/6.0 / jdPoi.m_R;a = PI / 2.0 b = 3.0 * PI- jdPoi-1.m_fwj;/ 2.0 -jdPoi.m_fwj;/左轉(zhuǎn)if (jdPoi.m_Alfa 0)/右轉(zhuǎn)i.m_HY_x = i.m_HY_y = i.m_YH_x = i.m_YH_y =cos(a) * sin(a) * cos(b) * sin(b) *x1 x1 x1 x1+-+sin(a)cos(a)sin(b)cos(b)*y1 y1 y1 y1+ jdPo+ jdPo+ jdPo+ jdPoi.m_ZH_x;i.m_ZH_y;i.m_HZ_x;i.m_HZ_y;jdPo jdPo
21、jdPo jdPoi.m_HY_x = i.m_HY_y = i.m_YH_x = i.m_YH_y =jdPo jdPo jdPo jdPoi.m_x;i.m_y;i.m_x;i.m_y;/函數(shù)功能:計(jì)算HY、YH點(diǎn)坐標(biāo)/void CCaculation:Cal_JDzhh()jdPo for (1.m_jdzhh=jdPo0.m_Dist;i = 2;i jdNum-1;i+ )jdPoi.m_jdzhh=jdPoi.m_ZHml+jdPoi.m_T;/函數(shù)功能:任一點(diǎn)里程轉(zhuǎn)大地坐標(biāo)/po2D CCaculation:age_to_coordinate(double ml)lx;/任一里程
22、點(diǎn)類型 i;double x1,y1,x,y,l,a,b,center_x,center_y,az,bz,cz,alfa; center_x=0.0;center_y=0.0; alfa=0.0;for (i = 0;i = jdPolx = 1; break;i.m_HZml & ml jdPoi.m_ZHml & ml lx = 3; break;jdPoi.m_YHml & ml = jdPoi.m_HYml & ml = jdPoi.m_YHml)lx = 4; break;/4 代表圓曲線switch (lx)case 1:l = ml - x = jdPo y = jdPojdPo
23、i.m_HZml + jdPoi.m_T;i.m_x + l * cos(PI / 2.0 - jdPoi.m_fwj);i.m_fwj);i.m_y + l * sin(PI /2.0 - jdPoalfa = jdPo break;i.m_fwj;case 2:l=ml-jdPoi.m_ZHml;x1=l- i.m_lo +y1=(l*1.0,5) / 40.0 / jdPo (l*1.0,9) / 3456.0 /i.m_R / jdPoi.m_R / jdPoi.m_lo /jdPo(jdPoi.m_R * jdPoi.m_lo*1.0,4);(l*1.0,3) / 6.0 / jdP
24、oi.m_R / jdPoi.m_lo * (1 -+(l*1.0,4) / 56.0 /(jdPoi.m_R*jdPoi.m_lo*1.0,2)(l*1.0,8) / 7040.0 /(jdPoi.m_R * jdPoi.m_lo*1.0,4);a=PI / 2.0 - jdPoi-1.m_fwj;if (jdPoi.m_Alfa 0)x = cos(a) * x1 + sin(a) * y1 + jdPoi.m_ZH_x;y = sin(a) * x1-cos(a)*y1 + jdPoi.m_ZH_y;alfa= jdPoi - 1.m_Alfa + l * l / 2.0 / jdPoi
25、.m_R / jdPoi.m_lo;break;case 3:l = jdPoi.m_HZml - ml;(l*1.0,5) / 40.0 / (l*1.0,9) / 3456.0 /x1 = l jdPoi.m_lo +y1 =-jdPo(jdPoi.m_R / jdPo i.m_R * jdPoi.m_R / jdPoi.m_lo /i.m_lo*1.0,4);(l*1.0,3) / 6.0 / jdPoi.m_R / jdPoi.m_lo * (1 -(l*1.0,4) / 56.0/(jdPoi.m_R * jdPoi.m_lo*1.0,2) +(l*1.0,8) / 7040.0 /
26、(jdPoi.m_R *jdPoi.m_lo*1.0,4);a = 3.0 * PI / 2.0 - jdPoi.m_fwj;if (jdPoi.m_Alfa 0)12x = cos(a) * x1 - sin(a) * y1 + jdPo y = sin(a) * x1 + cos(a) * y1 + jdPoi.m_HZ_x;i.m_HZ_y;alfa =jdPoi.m_Alfa - l * l / 2.0 / jdPoi.m_R / jdPoi.m_lo;break;case 4:x1 = jdPo y1 = jdPoi.m_YH_x - jdPo i.m_YH_y - jdPoi.m_
27、HY_x;i.m_HY_y;double temp = atan(y1 / x1);b=(PI - fabs(jdPoi.m_Alfa) + jdPoi.m_lo / jdPoi.m_R)/2.0;/求所在圓圓心的大地坐標(biāo)if (jdPoi.m_Alfa 0)if (x1 0)a = b - temp;if (x1 0)a = b - tempcenter_x = jdPo center_y = jdPo+ PI;i.m_HY_x i.m_HY_y+ jdPo- jdPoi.m_R * cos(a);i.m_R * sin(a);if (jdPoi.m_Alfa 0)a = b + temp;
28、if (x1 0.0)if (x1 0)temp = b - a;if (x1 0)temp = b - a + PI;132.數(shù)據(jù)庫14ttset.hclass Cttset : public CRecordsetpublic:CString m_tbname;Cttset(CDatabase* pDatabase = NULL); DECLARE_DYNAMIC(Cttset)/ Field/Param Data/AFX_FIELD(Cttset, CRecordset) m_r;m_l0; double m_x; double m_y; double m_t; double m_l; d
29、ouble m_e;/AFX_FIELD/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(Cttset)if (jdPoi.m_Alfa 0)temp = b + a;if (x1 = 0 & dn 0) alfa = atan(fabs(de / dn);else if(de = 0 & dn 0) alfa = PI-atan(fabs(de / dn); else if(de 0 & dn 0) alfa = PI + atan(fabs(de / dn);else if(de 0) alf
30、a = 2 * PI - atan(fabs(de / dn); else if(de 0 & dn = 0) alfa = PI / 2;else if(de SetFieldType(CFieldExchange:outpolumn);public:virtual CString GetDefaultConnect();/ Default connection string virtual CString GetDefaultSQL();/ Default SQL for Recordset virtual void DoFieldExchange(CFieldExchange* pFX)
31、; / RFX support/AFX_VIRTUAL/ Implemenion #ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const; #endif;3.ARX 繪圖16CreatEnt.h#pragma once/#include dbmtext.h class CCreatEntpublic:CCreatEnt(void); public:CCreatEnt(void);sic AcDbObjectId Creaine(AcGePo3d ptStart,AcGePo3
32、d ptEnd);/起終點(diǎn)畫線sic AcDbObjectIdtToMSpace(AcDbEntity* pEnt);/將實(shí)體添加到圖形數(shù)據(jù)庫的模型空間sic AcDbObjectId CreateCircle(AcGePo3d ptCenter,AcGeVector3d vec, double radius);/畫圓 sic AcDbObjectId CreateCircle(AcGePo3d ptCenter, double radius);/sic AcGePo3d Pt2dTo3d(AcGePo2d pt);/sic AcDbObjectId CreateArc(AcGePo3d pt
33、Center, AcGeVector3d vec, double radius, double startAngle, double endAngle);/sic AcDbObjectId CreateArc(AcGePo2d ptCenter, double radius, double startAngle, double endAngle);sic AcDbObjectId CreateArc(AcGePo2d ptStart, AcGePo2d ptOnArc,AcGePo2d ptEnd);/ sic AcDbObjectId CreateText(const AcGePo3d& p
34、tInsert,const ACHAR* text, AcDbObjectId style, double height, double roion);/創(chuàng)建文字sic AcDbObjectId CreateMText(const AcGePo3d& ptInsert,const ACHAR* text, AcDbObjectId style = AcDbObjectId:kNull, double height = 2.5, double width = 10);/ 創(chuàng)建多行文字;CreatEnt.cpp#include StdAfx.h #include CreatEnt.h #inclu
35、de math.h #include resource.h CCreatEnt:CCreatEnt(void)CCreatEnt:CCreatEnt(void)AcDbObjectId CCreatEnt:Creaine(AcGePo3d ptStart,AcGePo3d ptEnd)AcDbLine *pLine = new AcDbLine(ptStart, ptEnd);/ 將實(shí)體添加到圖形數(shù)據(jù)庫AcDbObjectId lineId;lineId = CCreatEnt:tToMSpace(pLine); return lineId;RFX_(pFX, _T(r), m_r);RFX_
36、(pFX, _T(l0), m_l0);RFX_Double(pFX, _T(x), m_x);RFX_Double(pFX, _T(y), m_y);RFX_Double(pFX, _T(t), m_t);RFX_Double(pFX, _T(l), m_l);RFX_Double(pFX, _T(e), m_e);/AFX_FIELD_MAP/ 將實(shí)體添加到圖形數(shù)據(jù)庫的模型空間AcDbObjectId CCreatEnt:tToMSpace(AcDbEntity* pEnt)AcDbBlockTable *pBlockTable;acdbHostApplicationServi()-wor
37、kingDatabase()-getBlockTable(pBlockTable, AcDb:kForRead); AcDbBlockTableRecord *pBlockTableRecord;pBlockTable-ge(ACDB_M_SPACE, pBlockTableRecord,AcDb:kForWrite); AcDbObjectId entId;pBlockTableRecord-appendAcDbEntity(entId, pEnt); pBlockTable-close();pBlockTableRecord-close(); pEnt-close();return ent
38、Id;AcDbObjectId CCreatEnt:CreateCircle(AcGePo3d ptCenter,AcGeVector3d vec, double radius)AcDbCircle *pCircle = new AcDbCircle(ptCenter, vec, radius);/ 將實(shí)體添加到圖形數(shù)據(jù)庫AcDbObjectId circleId;circleId = CCreatEnt: return circleId;tToMSpace(pCircle);AcDbObjectId CCreatEnt:CreateCircle(AcGePo3d ptCenter, doub
39、le radius)AcGeVector3d vec(0, 0, 1);return CCreatEnt:CreateCircle(ptCenter, vec, radius);AcGePo3d CCreatEnt:Pt2dTo3d(AcGePo2d pt)AcGePo3d ptTemp(pt.x, pt.y, 0); return ptTemp;AcDbObjectId CCreatEnt:CreateArc(AcGePo3d ptCenter, AcGeVector3d vec,double radius, double startAngle, double endAngle)AcDbAr
40、c *pArc = new AcDbArc(ptCenter, vec, radius, startAngle, endAngle); AcDbObjectId arcId;arcId = CCreatEnt: return arcId;tToMSpace(pArc);AcDbObjectId CCreatEnt:CreateArc(AcGePo2d ptCenter, double radius,double startAngle, double endAngle)AcGeVector3d vec(0, 0, 1);return CCreatEnt:CreateArc(CCreatEnt:P
41、t2dTo3d(ptCenter),vec, radius, startAngle, endAngle);AcDbObjectId CCreatEnt:CreateArc(AcGePo2d ptStart, AcGePo/ 使用幾何類獲得圓心、半徑AcGeCircArc2d geArc(ptStart, ptOnArc, ptEnd); AcGePo2d ptCenter = geArc.center(); double radius = geArc.radius();/ 計(jì)算起始和終止角度2d ptOnArc,AcGePo2d ptEnd)174.更改圖形實(shí)體顏色18modifyEnt.cp
42、p#include stdafx.h #include resource.h #include modifyEnt.h #ifdef _DEBUG#undef THIS_FILEsic char THIS_FILE= FILE ; #define new DEBUG_NEW#endif/ Construction/Destruction/ CmodifyEnt:CmodifyEnt()modifyEnt.h#pragma once class CmodifyEntpublic:CmodifyEnt();virtual CmodifyEnt();sic Acad:ErrorSus ChangeC
43、olor(AcDbObjectId entId, Adesk:U16 color);AcGeVector2d vecStart(ptStart.x - ptCenter.x, ptStart.y - ptCenter.y); AcGeVector2d vecEnd(ptEnd.x - ptCenter.x, ptEnd.y - ptCenter.y); double startAngle = vecStart.angle();double endAngle = vecEnd.angle();return CCreatEnt:CreateArc(ptCenter, radius, startAn
44、gle, endAngle);/ 創(chuàng)建文字實(shí)現(xiàn)部分AcDbObjectId CCreatEnt:CreateText(const AcGePo3d& ptInsert, const ACHAR* text, AcDbObjectId style,double height, double roion)AcDbText *pText = new AcDbText(ptInsert, text, style, height, roion); return CCreatEnt:tToMSpace(pText);/ 創(chuàng)建多行文字實(shí)現(xiàn)部分AcDbObjectId CCreatEnt:CreateMTex
45、t(const AcGePo3d& ptInsert, const ACHAR* text, AcDbObjectId style,double height, double width)AcDbMText *pMText = new AcDbMText();/ 設(shè)置多行文字的特性 pMText-setTextStyle(style); pMText-setContents(text);pMText-setLocation(ptInsert); pMText-setTextHeight(height); pMText-setWidth(width);pMText-se ta ent(AcDbM
46、Text:kBottomLeft); return CCreatEnt: tToM Space(pMText);5.框19zuoyeArxDlg.h#pragma once #include Resource.h#include Caculation.h #include GridCtrl/GridCtrl.h #include CreatEnt.h #include modifyEnt.h #include afxwin.h/ CzuoyeArxDlg框class CzuoyeArxDlg : public CDialogDECLARE_DYNAMIC(CzuoyeArxDlg) publi
47、c:CzuoyeArxDlg(CWnd* pParent = NULL);/ 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual CzuoyeArxDlg();/框數(shù)據(jù)enum IDD = IDD_DIALOG1 ;protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV 支持DECLARE_MESSAGE_MAP()public:CCaculation js; public:CString m_dataFilePathName; public:CString m_PathName; public:CString m_SavePathNam
48、e; public:CString m_PathNamedbc; public:CString m_PathNamedbf; public:CGridCtrl m_GridCtrl; GV_ITEM Item;void GridCtrlInit(); public:afx_msg void OnBnClickedOpenfile();CmodifyEnt:CmodifyEnt()/修改實(shí)體顏色Acad:ErrorSus CmodifyEnt:ChangeColor(AcDbObjectId entId,Adesk:U16 colorIndex)AcDbEntity *pEntity;/打開圖形
49、數(shù)據(jù)庫中的對(duì)象 acdbOpenObject(pEntity,entId,AcDb:kForWrite);/修改實(shí)體的顏色pEntity-setColorIndex(colorIndex);/用完之后,及時(shí)關(guān)閉 pEntity-close(); return Acad:eOk;20zuoyeArxDlg.cpp/ zuoyeArxDlg.cpp : 實(shí)現(xiàn)文件/#include stdafx.h #include zuoyeArxDlg.h #include ttset.h/ CzuoyeArxDlg框IMPLEMENT_DYNAMIC(CzuoyeArxDlg, CDialog)CzuoyeA
50、rxDlg:CzuoyeArxDlg(CWnd* pParent /*=NULL*/): CDialog(CzuoyeArxDlg:IDD, pParent)CzuoyeArxDlg:CzuoyeArxDlg()void CzuoyeArxDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_PathNamedbc); DDX_Text(pDX, IDC_EDIT2, m_PathNamedbf);DDX_Control(pDX, IDC_MyGridCtrl,
51、 m_GridCtrl);BEGIN_MESSAGE_MAP(CzuoyeArxDlg, CDialog) ON_BN_CLICKED(IDC_OpenFile, &CzuoyeArxDlg:OnBnClickedOpenfile)ON_BN_CLICKED(IDC_SaveResult, &CzuoyeArxDlg:OnBnClickedSaveresult) ON_BN_CLICKED(IDC_Display, &CzuoyeArxDlg:OnBnClickedDisplay) ON_BN_CLICKED(IDC_Cal, &CzuoyeArxDlg:OnBnClickedCal) ON_
52、BN_CLICKED(IDOK, &CzuoyeArxDlg:OnBnClickedOk) ON_EN_CHANGE(IDC_EDIT1, &CzuoyeArxDlg:OnEnChangeEdit1) ON_BN_CLICKED(IDC_CAD, &CzuoyeArxDlg:OnBnClickedCad)END_MESSAGE_MAP()/ CzuoyeArxDlg 消息處理程序void CzuoyeArxDlg:OnBnClickedOpenfile()/ TODO: 在此添加控件通知處理程序代碼/打開數(shù)據(jù)庫/獲取數(shù)據(jù)庫路徑CFileDialog opendbc(TRUE,/TRUE是創(chuàng)建打
53、開文件框,F(xiàn)ALSE則創(chuàng)建的是保存文件框L.dbc,/默認(rèn)的打開文件的類型 NULL,/默認(rèn)打開的文件名OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,/打開只讀文件L數(shù)據(jù)庫文件(*.dbc)|*.dbc|所有文件(*.*)|*.*|);/所有可以打開的文件類型 if (opendbc.DoModal() = IDOK)m_dataFilePathName = opendbc.GetPathName();afx_msg void OnBnClickedSaveresult(); afx_msg void OnBnClickedDisplay(); afx_msg
54、void OnBnClickedCal(); afx_msg void OnBnClickedOk(); afx_msg void OnEnChangeEdit1(); afx_msg void OnBnClickedCad();ITION po;po=opendbc.GetStart while(po)ition();/獲取第一個(gè)文件位置m_dataFilePathName=opendbc.GetNextPathName(po);/獲取選中文件列表中的下一個(gè)文件名 m_PathNamedbc=m_dataFilePathName;UpdateData(FALSE);/打開數(shù)據(jù)庫 CDatab
55、ase projectbase;CString str=LODBC;SourceDB=+m_PathNamedbc+; if(!projectbase.Open(LVisual FoxPro Database,false,false,str,true)MessageBox(L項(xiàng)目數(shù)據(jù)庫打開失敗,L數(shù)據(jù)庫錯(cuò)誤,MB_ICONERROR); return;elseMessageBox(L項(xiàng)目數(shù)據(jù)庫打開成功);/打開數(shù)據(jù)表/獲取數(shù)據(jù)表路徑 MessageBox(L選擇數(shù)據(jù)表);CFileDialog opendbf(TRUE, /TRUE是創(chuàng)建打開文件框,F(xiàn)ALSE則創(chuàng)建的是保存文件框L.dbf,
56、NULL,OFN_HIDEREADONLY/默認(rèn)的打開文件的類型/默認(rèn)打開的文件名| OFN_OVERWRITEPROMPT,/打開只讀文件L數(shù)據(jù)表文件(*.dbf)|*.dbf|所有文件(*.*)|*.*|); /所有可以打開的文件類型 if(opendbf.DoModal()=IDOK)CString m_FilePath = opendbf.GetPathName();/取出文件路徑 m_PathNamedbf=m_FilePath;/將文件的路徑放入m_filepathUpdateData(FALSE);/打開數(shù)據(jù)表Cttset projectdata(&projectbase); p
57、rojectdata.m_tbname=m_PathNamedbf; if(!projectdata.Open(CRecordset:snapshot,NULL,CRecordset:none)MessageBox(L數(shù)據(jù)表打開失敗,L數(shù)據(jù)庫錯(cuò)誤,MB_ICONERROR); return ;elseMessageBox(L數(shù)據(jù)表打開成功);/數(shù)據(jù)表數(shù)據(jù)num=0; for(;!projectdata.IsEOF();)num=num+1; projectdata.MoveNext();/數(shù)據(jù)表行數(shù),即交點(diǎn)數(shù)21projectdata.Move(); /指向第一行/在行數(shù)知道之后,動(dòng)態(tài)創(chuàng)建一個(gè)
58、二維數(shù)組 double *daemp = new double*num;for (dai = 0; i num; i+)empi = new double4;/數(shù)據(jù)i=0;for(;!projectdata.IsEOF();)da da da daempi0 =empi1 =empi2 =empi3 =projectdata.m_x; projectdata.m_y; projectdata.m_r; projectdata.m_l0;i=i+1; projectdata.MoveNext();/將由數(shù)據(jù)表讀入的數(shù)據(jù)賦值給結(jié)構(gòu)體數(shù)組js.Dataexchange(da/daemp空間emp,n
59、um);for(i = 0; i num; i+)delete daempi;delete daemp;daemp = NULL;projectdlose();projectbase.Close();GridCtrlInit();/運(yùn)行Grid初始化函數(shù),添加表頭voidCzuoyeArxDlg:OnBnClickedSaveresult()/ TODO: 在此添加控件通知處理程序代碼/打開數(shù)據(jù)庫 CDatabase projectbase;CString str=LODBC;SourceDB=+m_PathNamedbc+; if(!projectbase.Open(LVisual FoxP
60、ro Database,false,false,str,true)MessageBox(L項(xiàng)目數(shù)據(jù)庫打開失敗,L數(shù)據(jù)庫錯(cuò)誤,MB_ICONERROR); return;/打開數(shù)據(jù)表/打開數(shù)據(jù)表Cttset projectdata(&projectbase); projectdata.m_tbname=m_PathNamedbf; if(!projectdata.Open(CRecordset:snapshot,NULL,CRecordset:none)MessageBox(L數(shù)據(jù)表打開失敗,L數(shù)據(jù)庫錯(cuò)誤,MB_ICONERROR); return ;/數(shù)據(jù)表數(shù)據(jù)i=0;for(;!projec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版墓地使用權(quán)轉(zhuǎn)售與墓園維護(hù)服務(wù)合同4篇
- 2025版園藝樹苗種植合作合同范本范文3篇
- 安徽省蕪湖市無為市2024-2025學(xué)年七年級(jí)上學(xué)期期末地理試題(含答案)
- 儀器儀表在智能娛樂與虛擬現(xiàn)實(shí)體驗(yàn)中的應(yīng)用考核試卷
- 小麥種植農(nóng)業(yè)土地流轉(zhuǎn)研究考核試卷
- 二零二五年度木雕工藝研發(fā)與創(chuàng)新合作合同4篇
- 2025年受歡迎廣告協(xié)議指南大揭秘攻略
- 2025年化工品批發(fā)合同
- 2025年孕婦健身指導(dǎo)服務(wù)協(xié)議
- 2025年高端紙質(zhì)信封印刷定制委托協(xié)議6篇
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開評(píng)標(biāo)數(shù)字見證服務(wù)規(guī)范
- 人教版2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 江蘇省無錫市2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 俄語版:中國(guó)文化概論之中國(guó)的傳統(tǒng)節(jié)日
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護(hù)理匯報(bào)
- 2024年全國(guó)統(tǒng)一高考數(shù)學(xué)試卷(新高考Ⅱ)含答案
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)四 引起受眾傳播內(nèi)容要素的掌控
- 繪本《汪汪的生日派對(duì)》
- 助產(chǎn)護(hù)理畢業(yè)論文
評(píng)論
0/150
提交評(píng)論