ZDMAdjust.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. include("scripts/EAction.js");
  2. include("scripts/simple.js");
  3. include("scripts/Common/DrawingUtils.js");
  4. include("scripts/Common/CsvToZdmConvert.js")
  5. include("scripts/Common/DrawZdmAll.js");
  6. function ZDMAdjust(guiAction) {
  7. EAction.call(this, guiAction);
  8. // 绘图比例
  9. this.ratio = 10.0;
  10. // 弹框
  11. this.dialog = undefined;
  12. }
  13. ZDMAdjust.prototype = new EAction();
  14. ZDMAdjust.includeBasePath = includeBasePath;
  15. ZDMAdjust.prototype.beginEvent = function () {
  16. EAction.prototype.beginEvent.call(this);
  17. var appWin = EAction.getMainWindow();
  18. if (RSettings.getStringValue("OpenProject/Current", "") == "") {
  19. QMessageBox.critical(appWin, qsTr("提示"), qsTr("请先选择工程路径"));
  20. return;
  21. }
  22. this.dialog = this.createWidget(ZDMAdjust.includeBasePath + "/ZDMAdjustDialog.ui", appWin);
  23. // 恢复默认
  24. var resetBtn = this.dialog.findChild("resetBtn");
  25. resetBtn.clicked.connect(this, this.resetClicked);
  26. // 恢复默认
  27. var calBtn = this.dialog.findChild("calBtn");
  28. calBtn.clicked.connect(this, this.calClicked);
  29. // var lastOpenFile = RSettings.getStringValue("OpenProject/Current", RSettings.getDocumentsLocation());
  30. var lastOpenFileDir = RSettings.getStringValue("OpenProject/Current", RSettings.getDocumentsLocation()) + "/K_E_R.csv";
  31. // var lastOpenFileDir = ZDMAdjust.includeBasePath + "/../../../project/" + lastOpenFile + "/K_E_R.csv";
  32. this.zdmCsvPath = lastOpenFileDir.substring(0, lastOpenFileDir.lastIndexOf(".")) + ".csv";
  33. EAction.handleUserMessage("lastOpenZdmFileDirZDM:" + this.zdmCsvPath);
  34. this.setTable(this.zdmCsvPath);
  35. // this.setTable("D:\\BaiduNetdiskDownload\\20230613software\\K_E_R.csv");
  36. };
  37. ZDMAdjust.prototype.setTable = function (fileName) {
  38. var tableWidget = this.dialog.findChild("tableWidget");
  39. tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch);//布局
  40. var file = new QFile(fileName);
  41. file.open(makeQIODeviceOpenMode(QIODevice.ReadOnly, QIODevice.Text));
  42. var stream = new QTextStream(file);
  43. var row = 0;
  44. while (!stream.atEnd()) {
  45. var line = stream.readLine().trim();
  46. // EAction.handleUserMessage(line);
  47. var fields = line.split(",");//按照","分割字符,因为csv文件是以逗号间隔数据的
  48. var rowCount = tableWidget.rowCount;
  49. if (row == 0) {
  50. tableWidget.setHorizontalHeaderLabels(fields);
  51. }
  52. else {
  53. tableWidget.insertRow(rowCount);
  54. for (var i = 0; i < 3; i++) {
  55. tableWidget.setItem(rowCount, i, new QTableWidgetItem(fields[i]));
  56. }
  57. }
  58. row++;
  59. }
  60. if (!this.dialog.exec()) {
  61. EAction.handleUserMessage("clicked~");
  62. destr(this.dialog);
  63. EAction.activateMainWindow();
  64. return undefined;
  65. }
  66. }
  67. ZDMAdjust.prototype.resetClicked = function () {
  68. fileName = this.zdmCsvPath;
  69. // fileName = "D:/Project/JD_R_ls_aj.csv";
  70. var tableWidget = this.dialog.findChild("tableWidget");
  71. var rowNum = tableWidget.rowCount;
  72. // EAction.handleUserMessage("rowCount"+rowNum);
  73. for (var i = 0; i < rowNum; i++) {
  74. tableWidget.removeRow(0);
  75. }
  76. var file = new QFile(fileName);
  77. file.open(makeQIODeviceOpenMode(QIODevice.ReadOnly, QIODevice.Text));
  78. var stream = new QTextStream(file);
  79. var row = 0;
  80. while (!stream.atEnd()) {
  81. var line = stream.readLine().trim();
  82. var fields = line.split(",");//按照","分割字符,因为csv文件是以逗号间隔数据的
  83. var rowCount = tableWidget.rowCount;
  84. if (row == 0) {
  85. tableWidget.setHorizontalHeaderLabels(fields);
  86. }
  87. else {
  88. tableWidget.insertRow(rowCount);
  89. for (var i = 0; i < 3; i++) {
  90. tableWidget.setItem(rowCount, i, new QTableWidgetItem(fields[i]));
  91. }
  92. }
  93. row++;
  94. }
  95. }
  96. ZDMAdjust.prototype.calClicked = function () {
  97. var tableWidget = this.dialog.findChild("tableWidget");
  98. //首先获取表格内容,先试着保存到csv
  99. // var tmpStr = this.zdmCsvPath.substring(0, this.zdmCsvPath.lastIndexOf(".")) + "_aj.csv";
  100. var tmpStr = this.zdmCsvPath.replace(/.\w+$/i, "_aj.csv")
  101. var fileName = tmpStr;//"D:\\BaiduNetdiskDownload\\20230613software\\K_E_R_aaa.csv";
  102. var file = new QFile(fileName);
  103. file.open(makeQIODeviceOpenMode(QIODevice.ReadWrite, QIODevice.Text));
  104. var stream = new QTextStream(file);
  105. var conTents = "";
  106. // 写入头
  107. var header = tableWidget.horizontalHeader();
  108. if (null != header) {
  109. for (var i = 0; i < header.count(); i++) {
  110. var item = tableWidget.horizontalHeaderItem(i);
  111. conTents += item.text();
  112. if (i < header.count() - 1) {
  113. conTents += ",";
  114. }
  115. }
  116. conTents += "\n";
  117. }
  118. // 写内容
  119. for (var row = 0; row < tableWidget.rowCount; row++) {
  120. for (var column = 0; column < tableWidget.columnCount; column++) {
  121. var item = tableWidget.item(row, column);
  122. var str = item.text();
  123. conTents += str;
  124. if (column < tableWidget.columnCount - 1) {
  125. conTents += ",";
  126. }
  127. }
  128. conTents += "\n";
  129. }
  130. stream.writeString(conTents);
  131. file.close();
  132. //调用
  133. this.convert();
  134. if (this.dialog) {
  135. destr(this.dialog);
  136. }
  137. }
  138. ZDMAdjust.prototype.convert = function () {
  139. try {
  140. var csvFile = this.zdmCsvPath.replace(/.\w+$/i, "_aj.csv");
  141. var convert = new CsvToZdmConvert(csvFile);
  142. convert.convert();
  143. var zdmFile = convert.getZdmFileName();
  144. // 图层
  145. var layername = getLayername("CSV", csvFile);
  146. // addLayerToView(layername, "white", "CONTINUOUS", RLineweight.Weight025, 0);
  147. // setCurrentLayer(layername);
  148. // var exZDMImport = new FileZDM(filename, this.ratio);
  149. // exZDMImport.applyOperation();
  150. var drawZdmAll = new DrawZdmAll(this.ratio);
  151. var path = RSettings.getStringValue("OpenProject/Current", "");
  152. var dmxFile = path + "/诸城南-五莲北.DMX";
  153. var ctrFile = dmxFile.replace(/.\w+$/i, ".CTR");
  154. drawZdmAll.applyPainting(layername, dmxFile, zdmFile, ctrFile, false);
  155. if (true) {
  156. var tmp = RSettings.getStringValue("OpenDisplayFile/ZDMFile", "");
  157. RSettings.setValue("OpenDisplayFile/ZDMFile", tmp + "," + zdmFile);
  158. }
  159. return true;
  160. } catch (error) {
  161. EAction.handleUserMessage("ZDMAdjust.js, ERROR: " + error.toString());
  162. return false;
  163. }
  164. };