MapGis67读取点线区

#pragma pack(push, 1)
#include "Win_area.h"
#pragma pack(pop)//读取点文件long CTerrionLableApp::ReadLableInfoFromFile()
{CString cstrfilter, strPathName;char cszTextTemp[LEN_LONG_CODE] = "";
/*  String strLabel;*/char *szLabel = NULL;cstrfilter =_T("MapGis点文件(*.WT)|*.WT");CFileDialog cFDlg(TRUE,_T(".xls"),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,cstrfilter);if (cFDlg.DoModal() == IDOK){strPathName.Format(_T("%s"),cFDlg.GetPathName());}elsereturn 0;AREA_HINST ahInst = NULL;short sPntAi = 0;long i = 0, lLGNum= 0, lPhyNum = 0;short lsize = 0;CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;CMineLabelStr  mineLabel;D_DOT ddPos;m_vMineLabel.clear();ahInst = _InitWorkArea(NULL);sPntAi = _OpenFileArea(ahInst, strPathName.GetBuffer(0));_GetPntNum(sPntAi, &lLGNum, &lPhyNum); //得到 点的个数PNT_INFO pntInfo;for (i = 0; i < lPhyNum; i++){if (_GetPntExistFlag(sPntAi,i) !=1)continue;_GetPnt(sPntAi,i,&ddPos,&szLabel,&lsize,&pntInfo);mineLabel.m_lNO = i;mineLabel.m_strLabel= szLabel;mineLabel.m_lColorNo = pntInfo.iclr;
//      mineLabel.m_strType = pntInfo.info.text.ifnt;mineLabel.m_lSize = pntInfo.info.ch.height;_GetPntAtt(sPntAi,i,&RAttStru,&czAtt);_CvtFldToString1(RAttStru, czAtt, "坐标X", cszTextTemp, LEN_LONG_CODE, NULL, NULL);mineLabel.m_dPos.x = atof(cszTextTemp);_CvtFldToString1(RAttStru, czAtt, "坐标Y", cszTextTemp, LEN_LONG_CODE, NULL, NULL);mineLabel.m_dPos.y = atof(cszTextTemp);_CvtFldToString1(RAttStru, czAtt, "坐标Z", cszTextTemp, LEN_LONG_CODE, NULL, NULL);mineLabel.m_dPos.z = atof(cszTextTemp);m_vMineLabel.push_back(mineLabel);}_CloseArea(sPntAi);_FreeWorkArea(ahInst);return 1;
}//读取线文件long CCKQModelCls::GetRcdsFromLineWL(char *szLineFileName,CMineProfile *pMineProfile)
{CATT_STRU      *stru = NULL;char          *att = NULL;long           num = 0, lLgcNum = 0, lPhyNum = 0;char           szFldValue[LEN_LONG_CODE];int               i = 0, j = 0,lRes = 0;;short         ai = 0;char            CrdID[LEN_LONG_CODE];AREA_HINST ahist = _InitWorkArea(NULL);ai = _OpenFileArea(ahist, szLineFileName);if (ai == 0){lRes = 0;goto EndPro;}if (_GetLinNum(ai, &lLgcNum, &lPhyNum) == 1){for (i = 0; i < lPhyNum; i++){if (_GetLinExistFlag(ai, i) != 1){continue;}_GetLinAtt(ai, i, &stru, &att);if(_CvtFldToString1(stru,att,"储量边界类型",szFldValue,LEN_LONG_CODE,NULL,NULL) <= 0)continue;if (0 == strcmp(szFldValue,m_strType.GetBuffer(0)))//储量边界类型为1{D_DOT    *pDots = NULL;D_3DOT   d3Dots;long lDotNum = 0, lType = 0, lFlag = 0;   _GetLin(ai, i, &pDots, &lDotNum, NULL, NULL);m_pMineDataMng->ReadCoalPmType(pMineProfile->m_szKTXCode, &lType);if (lDotNum < 3)continue;v3Dots.clear();for (j = 0; j < lDotNum; j++){_GetOriPoint1(pMineProfile->m_d3StartPos,pMineProfile->m_d3EndPos,pDots[j],d3Dots,lType);v3Dots.push_back(d3Dots);}       //判断是否封闭if (fabs(v3Dots[0].x - v3Dots[lDotNum-1].x) > 0.0001 || fabs(v3Dots[0].y - v3Dots[lDotNum-1].y) > 0.0001|| fabs(v3Dots[0].z - v3Dots[lDotNum-1].z) > 0.0001){//不封闭,添加最后一点为最初点v3Dots.push_back(d3Dots);}if(_CvtFldToString1(stru,att,"ID",szFldValue,LEN_LONG_CODE,NULL,NULL) <= 0)continue;strcpy(CrdID, pMineProfile->m_szKTXCode);strcat(CrdID, "--");strcat(CrdID, szFldValue);SaveRcdsToCkqCoord(CrdID,pMineProfile->m_szKTXCode);
//              m_v3DotList.push_back(v3Dots);//存储所有点到内存        if(-1 == DrawCkqLineArea(String(CrdID),pMineProfile->m_szKTXCode))//这里最好是一个不重复的字符,wl文件中获取{lRes = 0;goto EndPro;}}}}lRes = 1;
EndPro:_CloseArea(ai);_FreeWorkArea(ahist);return lRes;
}移动点//
long CPrjViewTool::MoveOreReservesTablePnt(short sPntAi, char * cszBlockCode,double dMoveHeight, double dMoveWeight)
{D_DOT          dDotPos;CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;long           lLGNum = 0, lPhyNum = 0, i = 0;char           cszTextTemp[LEN_LONG_CODE] = "";_GetPntNum(sPntAi, &lLGNum, &lPhyNum); //得到 区的个数for (i = 0; i <lPhyNum; i++){if (_GetPntExistFlag(sPntAi,i) !=1)continue;_GetPntAtt(sPntAi,i,&RAttStru,&czAtt);_CvtFldToString1(RAttStru, czAtt, "块段编号", cszTextTemp, LEN_LONG_CODE, NULL, NULL);if (strcmp(cszBlockCode, cszTextTemp) == 0){_GetPntPos(sPntAi,i,&dDotPos);dDotPos.x += dMoveWeight;dDotPos.y += dMoveHeight;_UpdatePntPos(sPntAi,i,&dDotPos);}}return 1;
}移动线/
long CPrjViewTool::MoveOreReservesTableLine(short sLineAi, char * cszBlockCode,double dMoveHeight, double dMoveWeight)
{CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;long           lLGNum = 0, lPhyNum = 0, i = 0, k = 0;char           cszTextTemp[LEN_LONG_CODE] = "";D_DOT        *pLineDot;long           lLineNum;_GetLinNum(sLineAi, &lLGNum, &lPhyNum); //得到 线的个数for (i = 0; i <lPhyNum; i++){if (_GetLinExistFlag(sLineAi,i) !=1)continue;_GetLinAtt(sLineAi,i,&RAttStru,&czAtt);_CvtFldToString1(RAttStru, czAtt, "块段编号", cszTextTemp, LEN_LONG_CODE, NULL, NULL);if (strcmp(cszBlockCode, cszTextTemp) == 0){_GetLin(sLineAi,i,&pLineDot, &lLineNum, NULL);for (k = 0; k < lLineNum; k++){pLineDot[k].x += dMoveWeight;pLineDot[k].y += dMoveHeight;}_UpdateLin(sLineAi,i,pLineDot, lLineNum, NULL);}}return 1;
}//移动区
long CPrjViewTool::MoveOreReservesTableReg(short sRegAi, char * cszBlockCode,double dMoveHeight, double dMoveWeight)
{CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;long           lLGNum = 0, lPhyNum = 0, i = 0, k = 0;char           cszTextTemp[LEN_LONG_CODE] = "";long          * rdat = NULL;long            len = 0;D_DOT         * pRegDot = NULL;long            lRegDotNum = 0;_GetRegNum(sRegAi, &lLGNum, &lPhyNum); //得到 区的个数for (i = 0; i < lPhyNum; i ++){if (_GetRegExistFlag(sRegAi,i) !=1)continue;_GetRegAtt(sRegAi,i,&RAttStru,&czAtt);_CvtFldToString1(RAttStru, czAtt, "块段编号", cszTextTemp, LEN_LONG_CODE, NULL, NULL);if (strcmp(cszBlockCode, cszTextTemp) == 0){_GetReg(sRegAi, i, &rdat, &len, NULL);_GetLin(sRegAi,rdat[1], &pRegDot,&lRegDotNum, NULL);for (k = 0; k<lRegDotNum; k++){pRegDot[k].x += dMoveWeight;pRegDot[k].y += dMoveHeight;}_UpdateLin(sRegAi,rdat[1],pRegDot, lRegDotNum, NULL);_UpdateReg(sRegAi, i, rdat, len, NULL);}}return 1;
}long CPrjViewTool::DelPntLineReg()
{//删除已经存在的旧的点线区short  sPntAi = 0;short  sLineAi = 0;short  sRegAi = 0;long lpti = 0, lLni = 0, lRegi;long lLgNum = 0,lPyNum = 0;CATT_STRU* CatStru;char* szAtt;long  *rdat = NULL;long    len = 0;sPntAi = GetPrjAi(m_PrjInfo.m_OrePrj, BLOCK_TABLE_WT, CUREDT);sLineAi = GetPrjAi(m_PrjInfo.m_OrePrj, BLOCK_TABLE_WL, CUREDT);sRegAi =  GetPrjAi(m_PrjInfo.m_OrePrj, BLOCK_TABLE_WP, CUREDT);//删点_GetPntNum(sPntAi,&lLgNum,&lPyNum);for (lpti = 0; lpti < lPyNum; lpti++){if (_GetPntExistFlag(sPntAi,lpti) == 1){_GetPntAtt(sPntAi,lpti,&CatStru,&szAtt);_DelPnt(sPntAi,lpti);}}//删线lLgNum = 0,lPyNum = 0;_GetLinNum(sLineAi,&lLgNum,&lPyNum);for (lLni = 0; lLni < lPyNum; lLni++){if (_GetLinExistFlag(sLineAi,lLni) == 1){_GetLinAtt(sLineAi,lLni,&CatStru,&szAtt);_DelLin(sLineAi,lLni);}}//删区lLgNum = 0,lPyNum = 0;_GetRegNum(sRegAi, &lLgNum, &lPyNum);for (lRegi = 0; lRegi < lPyNum; lRegi ++){if (_GetRegExistFlag(sRegAi, lRegi) == 1){_GetReg(sRegAi, lRegi, &rdat, &len, NULL);_DelLin(sRegAi, rdat[1]);_DelReg(sRegAi, lRegi);}}return 1;
}//写点属性///
long CPrjViewTool::WritePntAtt(short sPntAi, long * spti, char * cBlockCode, char * cNoteType)
{CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;long           i = 0;//  ExtendPntAtt(sPntAi);_GetPntAtt(sPntAi,* spti,&RAttStru,&czAtt);_SetFldFromStr(czAtt,RAttStru,"块段编号",cBlockCode);_SetFldFromStr(czAtt,RAttStru,"注记类型",cNoteType);_WritePntAtt(sPntAi,* spti,RAttStru,czAtt);
//  _SaveFile(sPntAi);return 1;
}
long CPrjViewTool::ExtendPntAtt(short sPntAi)
{long        lNum = 0, i = 0;CATT_STRU  *RAttStru = NULL;short       sFlg = FALSE;CFIELD_HEAD FldEntry;//坐标_GetPntAttStru(sPntAi, &RAttStru);lNum = RAttStru->hd.numbfield;if(lNum > 2)return TRUE;FldEntry.fieldtype   = STR_TYPE;FldEntry.fieldlength = LEN_LONG_CODE;FldEntry.msk_leng    = MAX_PATH;FldEntry.edit_enable = FLDEDT_YES;strcpy(FldEntry.fieldname,"块段编号");_AppendPntStruFld(sPntAi, 1, &FldEntry);strcpy(FldEntry.fieldname,"注记类型");_AppendPntStruFld(sPntAi, 1, &FldEntry);return 1;
}/写线属性/
long CPrjViewTool::WriteLineAtt(short sLineAi, long sLni, char * cBlockCode, char * cNoteType)
{CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;//    ExtendLineAtt(sLineAi);_GetLinAtt(sLineAi,sLni,&RAttStru,&czAtt);_SetFldFromStr(czAtt,RAttStru,"块段编号",cBlockCode);_SetFldFromStr(czAtt,RAttStru,"注记类型",cNoteType);_WriteLinAtt(sLineAi,sLni,RAttStru,czAtt);
//  _SaveFile(sLineAi);return 1;
}
long CPrjViewTool::ExtendLineAtt(short sLineAi)
{long        lNum = 0, i = 0;CATT_STRU  *RAttStru = NULL;short       sFlg = FALSE;CFIELD_HEAD FldEntry;//坐标_GetLinAttStru(sLineAi, &RAttStru);lNum = RAttStru->hd.numbfield;if(lNum > 2)return TRUE;FldEntry.fieldtype   = STR_TYPE;FldEntry.fieldlength = LEN_LONG_CODE;FldEntry.msk_leng    = MAX_PATH;FldEntry.edit_enable = FLDEDT_YES;strcpy(FldEntry.fieldname,"块段编号");_AppendLinStruFld(sLineAi, 1, &FldEntry);strcpy(FldEntry.fieldname,"注记类型");_AppendLinStruFld(sLineAi, 1, &FldEntry);return 1;
}//写区属性
long CPrjViewTool::WriteRegAtt(short sRegAi, long sRgi, char * cBlockCode, char * cNoteType)
{CATT_STRU     *RAttStru = NULL;char          *czAtt = NULL;//    ExtendRegAtt(sRegAi);_GetRegAtt(sRegAi,sRgi,&RAttStru,&czAtt);_SetFldFromStr(czAtt,RAttStru,"块段编号",cBlockCode);_SetFldFromStr(czAtt,RAttStru,"注记类型",cNoteType);_WriteRegAtt(sRegAi,sRgi,RAttStru,czAtt);
//  _SaveFile(sRegAi);return 1;
}
long CPrjViewTool::ExtendRegAtt(short sRegAi)
{long        lNum = 0, i = 0;CATT_STRU  *RAttStru = NULL;short       sFlg = FALSE;CFIELD_HEAD FldEntry;//坐标_GetRegAttStru(sRegAi, &RAttStru);lNum = RAttStru->hd.numbfield;if(lNum > 2)return TRUE;FldEntry.fieldtype   = STR_TYPE;FldEntry.fieldlength = LEN_LONG_CODE;FldEntry.msk_leng    = MAX_PATH;FldEntry.edit_enable = FLDEDT_YES;strcpy(FldEntry.fieldname,"块段编号");_AppendRegStruFld(sRegAi, 1, &FldEntry);strcpy(FldEntry.fieldname,"注记类型");_AppendRegStruFld(sRegAi, 1, &FldEntry);return 1;
}

---the---end---

MapGis67读取点线区相关推荐

  1. 在 Windows 读取 Linux 分割区的 Ext2Fsd

    不少中小企业都会使用NAS作为档案伺服器,再外接一个USB硬碟作备份之用.现时市面上的NAS使用的都是Linux,如何去查看备份后的内容,便成为一众Windows用户的难题,这时Ext2Fsd便是救星 ...

  2. android主板读取vga线数据_智锐通掘金新基建上新系列之3.5quot; 与ATX工业主板图鉴...

    4月份,工信部正式公布了<工业互联网体系架构(版本2.0)>!5G.大数据.人工智能.区块链.边缘计算等新技术加速融入并不断拓宽工业互联网的内涵与赋能潜力. 新一代信息技术为驱动的数字浪潮 ...

  3. revit 二次开发 模型线读取

    目前只能读取模型线长度,闭合的区域读不到面积 UIApplication uiapp = commandData.Application;UIDocument uidoc = uiapp.Active ...

  4. 操作系统OS-Lab2-FAT12文件读取

    OS-Lab2 问题 PPT相关内容 什么是实模式,什么是保护模式? PPT: * 实模式:基地址+偏移量可以直接获得物理地址的模式* 缺点:非常不安全 * 保护模式:不能直接拿到物理地址,需要进行地 ...

  5. 直尺刻度识别_测量仪器刻度线的快速识别方法

    测量仪器刻度线的快速识别方法 [专利摘要]本发明涉及测量仪器刻度线的快速识别方法,可有效解决测量仪器的检定.校准.试验等过程中对刻度线的识别和监视问题,保证刻度线识别.监视和测量的快速准确的问题,其解 ...

  6. node.js:fs.open 和 fs.write 读取文件和改写文件

    node.js fs.open 和 fs.write 读取文件和改写文件 Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require( ...

  7. 使用labview读取一副位图,并进行BCG校准(或修改其BCG)程序解析

    进行图像处理第一步肯定就是要读取一副图片,然后再进行图像的BCG校准. 首先讲解一下用到的函数第一个函数为IMAQ Create,位于  视觉与运动--Vision Utilities---Image ...

  8. 【译】索引进阶(四):页和区

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 在之前的章节中,我们在有索引和没有索引的情况下执行同一个查询,比较了各自需要的工作.我们的最主要的评判标准是&q ...

  9. c++读取utf8文件_Node.js 进阶之 fs 文件模块学习

    前言 文件操作是开发过程中并不可少的一部分.Node.js 中的 fs 模块是文件操作的封装,它提供了文件读取.写入.更名.删除.遍历目录.链接等 POSIX 文件系统操作.与其它模块不同的是,fs ...

  10. node.js fs.open 和 fs.write 读取文件和改写文件

    Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require('path'); 1.读取文件readFile函数 //readFile( ...

最新文章

  1. 太TM难看了,我自己都看不下去了
  2. Swift 中使用Alamofire 免证书的设置
  3. oracle rownum分页 出现重复数据
  4. 主从故障处理--session 级别参数复制错误
  5. U3D非常诡异的【结构体引用】现象-个例
  6. jQuery EasyUI 折叠面板accordion的使用实例
  7. 牛客网_Go语言相关练习_选择题(2)
  8. 非空约束 mysql
  9. Struts2 + Hibernate + Spring 以及javaweb模块问题解决(2)
  10. 旧金山散记(一):第一次在美国打车
  11. 《圈圈教你玩USB》 第二章 USB 硬件系统设计_测试程序的编写和调试——看书笔记
  12. tcl机顶盒 tk 8296刷机固件及教程
  13. 柯尔莫哥洛夫微分方程
  14. python做erp系统的可行性_ERP可行性分析
  15. Little Dima and Equation
  16. Ae 入门系列之九:运动跟踪和稳定(下)
  17. 第十三届蓝桥杯Java-C组2022年考题个人解析
  18. 问卷星复制内容方法(利用官方功能导出为word格式)
  19. 今天你写控件了吗?----ASP.net控件开发系列
  20. INTRODUCING F#

热门文章

  1. 计算机生成目录步骤word,word生成目录步骤,word怎样做目录
  2. 软件评测师考试内容纲要
  3. R语言中ggplot Theme Assist安装使用教程
  4. QGIS教程—缓冲区buffer
  5. 2022年低压电工考试题模拟考试平台操作
  6. MyBatis 是一款优秀的持久层框架
  7. tomcat8.0安装及配置
  8. H5U PLC定位控制功能块(EtherCAT总线)
  9. C#操作Access数据库(查询,更新,插入)
  10. 高校成绩管理数据库系统