PMDialogInput.js 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860
  1. /**
  2. * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
  3. *
  4. * This file is part of the QCAD project.
  5. *
  6. * QCAD is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * QCAD is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with QCAD.
  18. */
  19. include("scripts/EAction.js");
  20. include("scripts/simple.js");
  21. include("scripts/Common/DrawingUtils.js")
  22. function PMDialogInput(guiAction) {
  23. EAction.call(this, guiAction);
  24. this.ratio = 1.0;
  25. this.row = 0;
  26. this.newEntityData = new Array();
  27. this.newFZEntityData = new Array();
  28. this.csvData = new Array();
  29. this.csvCoor = new Array();
  30. this.csvR = new Array();
  31. this.csvls = new Array();
  32. }
  33. PMDialogInput.prototype = new EAction();
  34. PMDialogInput.includeBasePath = includeBasePath;
  35. PMDialogInput.prototype.beginEvent = function () {
  36. EAction.prototype.beginEvent.call(this);
  37. var appWin = EAction.getMainWindow();
  38. this.dialog = this.createWidget(PMDialogInput.includeBasePath + "/PMDialogInput.ui", appWin);
  39. var tableWidget = this.dialog.findChild("tableWidget");
  40. tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch);//布局
  41. tableWidget.setHorizontalHeaderLabels(["JD_x", "JD_y", "R", "ls"]);
  42. tableWidget.cellPressed.connect(this, this.selectRow);
  43. // 添加一行
  44. var addBtn = this.dialog.findChild("addBtn");
  45. addBtn.clicked.connect(this, this.addClicked);
  46. // 删除一行
  47. var delBtn = this.dialog.findChild("delBtn");
  48. delBtn.clicked.connect(this, this.delClicked);
  49. // 计算绘图
  50. var calBtn = this.dialog.findChild("calBtn");
  51. calBtn.clicked.connect(this, this.calClicked);
  52. // var lastOpenFile = RSettings.getStringValue("OpenProject/Current", RSettings.getDocumentsLocation());
  53. // var lastOpenFileDir = PMAdjust.includeBasePath + "/../../../project/" + lastOpenFile + "/JD_R_ls.csv";
  54. // // EAction.handleUserMessage("lastOpenPmFileDir" + lastOpenFileDir);
  55. // this.pmCsvPath = lastOpenFileDir.substring(0,lastOpenFileDir.lastIndexOf("."))+".csv";
  56. // this.setTable(this.pmCsvPath);
  57. if (!this.dialog.exec()) {
  58. EAction.handleUserMessage("clicked~");
  59. destr(this.dialog);
  60. EAction.activateMainWindow();
  61. return undefined;
  62. }
  63. };
  64. // 添加行
  65. PMDialogInput.prototype.addClicked = function () {
  66. var tableWidget = this.dialog.findChild("tableWidget");
  67. tableWidget.insertRow(tableWidget.rowCount);
  68. };
  69. // 删除行
  70. PMDialogInput.prototype.delClicked = function () {
  71. var tableWidget = this.dialog.findChild("tableWidget");
  72. if (this.curRow == -1) {
  73. // EAction.handleUserMessage("111~");
  74. return;
  75. } else {
  76. tableWidget.model().removeRow(this.curRow);
  77. }
  78. };
  79. // 选择行
  80. PMDialogInput.prototype.selectRow = function (currentRow, curCol) {
  81. this.curRow = currentRow;
  82. }
  83. // 计算绘图 // 读取tablewidget数据-
  84. PMDialogInput.prototype.calClicked = function () {
  85. //首先获取表格内容,先试着保存到csv
  86. var tmpStr = RSettings.getStringValue("OpenProject/Current", RSettings.getDocumentsLocation()) + "/JD_R_ls_input.csv";
  87. var fileName = tmpStr;//"D:/Project/JD_R_ls_aj.csv";
  88. var file = new QFile(fileName);
  89. file.open(makeQIODeviceOpenMode(QIODevice.ReadWrite, QIODevice.Text));
  90. var stream = new QTextStream(file);
  91. var conTents = "";
  92. // 写入头
  93. var tableWidget = this.dialog.findChild("tableWidget");
  94. var header = tableWidget.horizontalHeader();
  95. if (null != header) {
  96. for (var i = 0; i < header.count(); i++) {
  97. var item = tableWidget.horizontalHeaderItem(i);
  98. conTents += item.text();
  99. if (i < header.count() - 1) {
  100. conTents += ",";
  101. }
  102. }
  103. conTents += "\n";
  104. }
  105. // 写内容
  106. for (var row = 0; row < tableWidget.rowCount; row++) {
  107. for (var column = 0; column < tableWidget.columnCount; column++) {
  108. var item = tableWidget.item(row, column);
  109. var str = item.text();
  110. conTents += str;
  111. if (column < tableWidget.columnCount - 1) {
  112. conTents += ",";
  113. }
  114. }
  115. conTents += "\n";
  116. }
  117. stream.writeString(conTents);
  118. file.close();
  119. //调用
  120. var ok = this.convert(fileName);
  121. }
  122. PMDialogInput.prototype.convert = function (filename) {
  123. var process = new QProcess;
  124. EAction.handleUserMessage(PMDialogInput.includeBasePath + "/csv2pm.exe");
  125. process.setProgram(PMDialogInput.includeBasePath + "/csv2pm.exe");
  126. var args = [];
  127. args.push(filename);
  128. process.setArguments(args);
  129. process.start();
  130. process.waitForStarted(); //等待程序启动
  131. process.waitForFinished(-1);//等待程序关闭
  132. var filenamePM = filename.replace(/.\w+$/i, ".pm");
  133. // 绘制PM
  134. var filePM = new DrawPM(filenamePM, this.ratio, 4);
  135. filePM.applyDrawing();
  136. if (true) {
  137. var tmp = RSettings.getStringValue("OpenDisplayFile/PMFile", "");
  138. RSettings.setValue("OpenDisplayFile/PMFile", tmp + "," + filenamePM);
  139. }
  140. return true;
  141. };
  142. // PMDialogInput.prototype.applyOperation = function (preview) {
  143. // // 添加图层
  144. // addLayerToView(this.sFile, "white", "CONTINUOUS", RLineweight.Weight025, 1);
  145. // setCurrentLayer(this.sFile);
  146. // var colorReady = new Array(
  147. // [
  148. // new RColor(255, 0, 0),
  149. // new RColor(255, 0, 0),
  150. // new RColor(160, 32, 240),
  151. // new RColor(0, 255, 0),
  152. // ]
  153. // ,
  154. // [
  155. // new RColor(128, 0, 128),
  156. // new RColor(77, 255, 77),
  157. // new RColor(200, 96, 255),
  158. // new RColor(160, 32, 240),
  159. // ],
  160. // [
  161. // new RColor(255, 153, 77),
  162. // new RColor(255, 153, 77),
  163. // new RColor(128, 255, 255),
  164. // new RColor(0, 255, 255),
  165. // ],
  166. // [
  167. // new RColor(77, 255, 255),
  168. // new RColor(77, 255, 255),
  169. // new RColor(255, 255, 128),
  170. // new RColor(255, 255, 0),
  171. // ],
  172. // [
  173. // new RColor(148, 121, 253),
  174. // new RColor(148, 121, 253),
  175. // new RColor(255, 192, 128),
  176. // new RColor(255, 165, 0),
  177. // ]
  178. // );
  179. // var colorIndex = Math.floor(Math.random() * colorReady.length);
  180. // var selectedArray = colorReady[colorIndex];
  181. // var YQXColor = selectedArray[0];
  182. // var ZXColor = selectedArray[1];
  183. // var HHQXColor = selectedArray[2];
  184. // var FZXColor = selectedArray[3];
  185. // var jdIndx = 1;
  186. // var lastType = 0;
  187. // for (var i = 0; i < this.newEntityData.length; i++) {
  188. // if (1 == this.newEntityData[i][8]) {
  189. // var TempEntityData = new Array();
  190. // TempEntityData.push([this.newEntityData[i][0], this.newEntityData[i][1]]);
  191. // TempEntityData.push([this.newEntityData[i][2], this.newEntityData[i][3]]);
  192. // addPolylinetoView(TempEntityData, false, false, 1, ZXColor);
  193. // // EAction.handleUserMessage(this.newEntityData[i].toString());
  194. // this.mileage_line(
  195. // lastType,
  196. // new Array(this.newEntityData[i][0], this.newEntityData[i][1]),
  197. // new Array(this.newEntityData[i][2], this.newEntityData[i][3]),
  198. // ZXColor, true
  199. // );
  200. // }
  201. // else if (3 == this.newEntityData[i][8]) {
  202. // //-1:右曲线,1:左曲线 其中右曲线因为是逆时针(角度由大到小),需要画出对应的反向弧 lyz
  203. // // EAction.handleUserMessage(this.newEntityData[i].toString());
  204. // if (1 == this.newEntityData[i][7]) {
  205. // addArctoView(this.newEntityData[i][0], this.newEntityData[i][1], this.newEntityData[i][4],
  206. // this.newEntityData[i][5], this.newEntityData[i][6], false, 1, YQXColor);
  207. // }
  208. // else if (-1 == this.newEntityData[i][7]) {
  209. // addArctoView(this.newEntityData[i][0], this.newEntityData[i][1], this.newEntityData[i][4],
  210. // this.newEntityData[i][5], this.newEntityData[i][6], true, 1, YQXColor);
  211. // }
  212. // this.mileage_circle(
  213. // lastType,
  214. // new Array(this.newEntityData[i][0], this.newEntityData[i][1]),
  215. // this.newEntityData[i][4],
  216. // this.newEntityData[i][5],
  217. // this.newEntityData[i][6],
  218. // true,
  219. // YQXColor,
  220. // true
  221. // );
  222. // }
  223. // else {
  224. // //-1:右曲线,1:左曲线 其中右曲线因为是逆时针(角度由大到小),需要画出对应的反向弧 lyz
  225. // // EAction.handleUserMessage(this.newEntityData[i].toString());
  226. // if (1 == this.newEntityData[i][7]) {
  227. // addArctoView(this.newEntityData[i][0], this.newEntityData[i][1], this.newEntityData[i][4],
  228. // this.newEntityData[i][5], this.newEntityData[i][6], false, 1, HHQXColor);
  229. // }
  230. // else if (-1 == this.newEntityData[i][7]) {
  231. // addArctoView(this.newEntityData[i][0], this.newEntityData[i][1], this.newEntityData[i][4],
  232. // this.newEntityData[i][5], this.newEntityData[i][6], true, 1, HHQXColor);
  233. // }
  234. // this.mileage_circle(
  235. // lastType,
  236. // new Array(this.newEntityData[i][0], this.newEntityData[i][1]),
  237. // this.newEntityData[i][4],
  238. // this.newEntityData[i][5],
  239. // this.newEntityData[i][6],
  240. // true,
  241. // YQXColor,
  242. // lastType != this.newEntityData[i][8]
  243. // );
  244. // }
  245. // lastType = this.newEntityData[i][8];
  246. // }
  247. // //绘制辅助线,1为辅助线起点,2为焦点点,3为辅助线终点
  248. // for (var i = 0; i < this.newFZEntityData.length;) {
  249. // var TempLineData = new Array();
  250. // if (i < this.newFZEntityData.length && this.newFZEntityData[i][2] == 1) {
  251. // TempLineData.push([this.newFZEntityData[i][0], this.newFZEntityData[i][1]]);
  252. // }
  253. // if (i + 1 < this.newFZEntityData.length && this.newFZEntityData[i + 1][2] == 2) {
  254. // TempLineData.push([this.newFZEntityData[i + 1][0], this.newFZEntityData[i + 1][1]]);
  255. // addCircleToView(this.newFZEntityData[i + 1][0], this.newFZEntityData[i + 1][1], 0.5, 1, FZXColor);
  256. // }
  257. // if (i + 2 < this.newFZEntityData.length && this.newFZEntityData[i + 2][2] == 3) {
  258. // TempLineData.push([this.newFZEntityData[i + 2][0], this.newFZEntityData[i + 2][1]]);
  259. // }
  260. // // 计算角度
  261. // this.calDeg([this.newFZEntityData[i][0], this.newFZEntityData[i][1]], [this.newFZEntityData[i + 1][0], this.newFZEntityData[i + 1][1]],
  262. // [this.newFZEntityData[i + 2][0], this.newFZEntityData[i + 2][1]], jdIndx);
  263. // jdIndx = jdIndx + 1;
  264. // addPolylinetoView(TempLineData, false, false, 1, FZXColor);
  265. // i = i + 3;
  266. // }
  267. // EAction.handleUserMessage("loading success!");
  268. // // var di = getAssignDocumentInterface(1);
  269. // if (!isNull(di)) {
  270. // // di.regenerateScenes();
  271. // di.autoZoom();
  272. // }
  273. // return true;
  274. // };
  275. // PMDialogInput.prototype.readTxt = function (file) {
  276. // var reader = new QFile(file);
  277. // var flags = makeQIODeviceOpenMode(QIODevice.ReadOnly, QIODevice.Text);
  278. // if (!reader.open(flags)) {
  279. // EAction.handleUserWarning("cannot open file: " + file);
  280. // return;
  281. // }
  282. // //每次都去文件中的一行,然后输出读取到的字符串lyz
  283. // var ts = new QTextStream(reader);
  284. // setUtf8Codec(ts);
  285. // //定义初始值 lyz
  286. // var pLineNo = 0;
  287. // var LineStartPointX = 0.0;
  288. // var LineStartPointY = 0.0;
  289. // var CurCurveStartPointX = 0.0;
  290. // var CurCurveStartPointY = 0.0;
  291. // var CurCurveEndPointX = 0.0;
  292. // var CurCurveEndPointY = 0.0;
  293. // var CurCurveZ = 0;
  294. // var CurCurveS = 0.0;
  295. // var CurCurveRO = 0.0;
  296. // var CurCurveRD = 0.0;
  297. // var CurCurveType = 0;
  298. // var CurCurveStartZH = 0.0;
  299. // var CurCurveEndZH = 0.0;
  300. // var CurCurveStartAngle = 0.0;
  301. // var CurCurveEndAngle = 0.0;
  302. // var CurHuanheT = 0.0;
  303. // var CurCurveCenterPointX = 0.0;
  304. // var CurCurveCenterPointY = 0.0;
  305. // var DeltaS = 5.0;//缓和曲线取样点间隔
  306. // var TempFZData = new Array();//临时辅助线 liyz
  307. // //当读取出现错误(返回 -1)或者读取到的字符数为 0 时,结束读取 lyz
  308. // do {
  309. // var textLine = ts.readLine().trim();
  310. // //EAction.handleUserWarning(textLine);
  311. // textLine = textLine.replace(/[\t]+/g, " ").replace(/[\s]+/g, " ");
  312. // textLine = textLine.replace(/\r\n/g, "");
  313. // //EAction.handleUserMessage(textLine);
  314. // var fields = textLine.split(" "); // Reserved: ',&[' & ';&['
  315. // if (fields.length < 4 || pLineNo < 1 /*|| pLineNo >10*/) { // With two extra fields >
  316. // pLineNo++;
  317. // continue;
  318. // } // End with two extra
  319. // if (pLineNo == 1) {
  320. // // EAction.handleUserMessage("LineCurveTotalNum: " + fields[0]);
  321. // }
  322. // else if (pLineNo == 2) {
  323. // // EAction.handleUserMessage("LineStartLinkMode: " + fields[0]);
  324. // // EAction.handleUserMessage("LineStartZH: " + fields[1]);
  325. // // EAction.handleUserMessage("LineStartXY: " + fields[4] + "," + fields[5]);
  326. // //添加线路起点坐标 lyz
  327. // LineStartPointX = parseFloat(fields[4]);
  328. // LineStartPointY = parseFloat(fields[5]);
  329. // //用曲线入口X1,Y1作为起始位置 lyz
  330. // CurCurveStartPointX = parseFloat(fields[4]);
  331. // CurCurveStartPointY = parseFloat(fields[5]);
  332. // //用桩号/公里标作为起始位置 lyz
  333. // // CurCurveStartPointX = parseFloat(fields[1]);
  334. // // CurCurveStartPointY = 0.0;
  335. // this.csvCoor.push([fields[4], fields[5]]);
  336. // }
  337. // else if ((pLineNo - 3) % 3 == 0) {
  338. // // EAction.handleUserMessage("Curve Z: " + fields[0]);
  339. // // EAction.handleUserMessage("Curve S: " + fields[2]);
  340. // // EAction.handleUserMessage("Curve T: " + fields[3]);
  341. // // EAction.handleUserMessage("Curve RO: " + fields[4]);
  342. // // EAction.handleUserMessage("Curve RD: " + fields[5]);
  343. // // EAction.handleUserMessage("Curve Type: " + fields[6]);
  344. // CurCurveZ = parseInt(fields[0]);
  345. // CurCurveS = Math.abs(parseFloat(fields[2]));
  346. // CurHuanheT = parseFloat(fields[3]);
  347. // CurCurveRO = parseFloat(fields[4]);
  348. // CurCurveRD = parseFloat(fields[5]);
  349. // CurCurveType = parseInt(fields[6]);
  350. // }
  351. // else if ((pLineNo - 3) % 3 == 1) {
  352. // //EAction.handleUserMessage("Curve Z:" + fields[0]);
  353. // //EAction.handleUserMessage("Curve S:" + fields[2]);
  354. // //EAction.handleUserMessage("Curve RO:" + fields[2]);
  355. // //EAction.handleUserMessage("Curve RD:" + fields[2]);
  356. // }
  357. // else if ((pLineNo - 3) % 3 == 2) {
  358. // // EAction.handleUserMessage("Curve StartZH: " + fields[0]);
  359. // // EAction.handleUserMessage("Curve EndZH: " + fields[1]);
  360. // // EAction.handleUserMessage("Curve StartAngle: " + fields[2]);
  361. // // EAction.handleUserMessage("Curve EndAngle: " + fields[3]);
  362. // CurCurveStartZH = parseFloat(fields[0]);
  363. // CurCurveEndZH = parseFloat(fields[1]);
  364. // CurCurveStartAngle = parseFloat(fields[2]);
  365. // CurCurveEndAngle = parseFloat(fields[3]);
  366. // if (1 == CurCurveType) {
  367. // //确定直线的起始和终止点 lyz
  368. // CurCurveEndPointX = CurCurveStartPointX + Math.abs(CurCurveS) * Math.cos(CurCurveStartAngle);
  369. // CurCurveEndPointY = CurCurveStartPointY + Math.abs(CurCurveS) * Math.sin(CurCurveStartAngle);
  370. // this.newEntityData.push([CurCurveStartPointX / parseFloat(this.ratio), CurCurveStartPointY / parseFloat(this.ratio),
  371. // CurCurveEndPointX / parseFloat(this.ratio), CurCurveEndPointY / parseFloat(this.ratio), 0,
  372. // 0, 0, CurCurveZ, CurCurveType]);
  373. // }
  374. // else if (21 == CurCurveType || 22 == CurCurveType) {
  375. // ////确定直缓和及缓和直曲线的起始和终止点 lyz
  376. // //var CurCurveStartAngleByCenter = 0.0;
  377. // //var CurCurveEndAngleByCenter = 0.0;
  378. // //var TempCurveR = Math.abs(CurCurveS) / Math.abs(CurCurveEndAngle - CurCurveStartAngle);
  379. // //if (CurCurveZ == 1) {
  380. // // CurCurveStartAngleByCenter = rad2deg(CurCurveStartAngle) - 90;
  381. // // CurCurveEndAngleByCenter = rad2deg(CurCurveEndAngle) - 90;
  382. // //} else if (CurCurveZ == -1) {
  383. // // CurCurveStartAngleByCenter = rad2deg(CurCurveStartAngle) + 90;
  384. // // CurCurveEndAngleByCenter = rad2deg(CurCurveEndAngle) + 90;
  385. // //}
  386. // //CurCurveCenterPointX = CurCurveStartPointX - TempCurveR * Math.cos(deg2rad(CurCurveStartAngleByCenter));
  387. // //CurCurveCenterPointY = CurCurveStartPointY - TempCurveR * Math.sin(deg2rad(CurCurveStartAngleByCenter));
  388. // //CurCurveEndPointX = CurCurveCenterPointX + TempCurveR * Math.cos(deg2rad(CurCurveEndAngleByCenter));
  389. // //CurCurveEndPointY = CurCurveCenterPointY + TempCurveR * Math.sin(deg2rad(CurCurveEndAngleByCenter));
  390. // //this.newEntityData.push([CurCurveCenterPointX / parseFloat(this.ratio), CurCurveCenterPointY / parseFloat(this.ratio), 0, 0, TempCurveR / parseFloat(this.ratio),
  391. // // CurCurveStartAngleByCenter, CurCurveEndAngleByCenter, CurCurveZ, CurCurveType]);
  392. // this.CurHuanheTArr.push(CurHuanheT);
  393. // if (CurCurveZ == 1) {
  394. // CurCurveStartAngleByCenter = rad2deg(CurCurveStartAngle) - 90;
  395. // CurCurveEndAngleByCenter = rad2deg(CurCurveEndAngle) - 90;
  396. // } else if (CurCurveZ == -1) {
  397. // CurCurveStartAngleByCenter = rad2deg(CurCurveStartAngle) + 90;
  398. // CurCurveEndAngleByCenter = rad2deg(CurCurveEndAngle) + 90;
  399. // }
  400. // var CurCurveDeltaR = Math.abs(CurCurveRD - CurCurveRO);
  401. // // EAction.handleUserMessage("Curve CurCurveDeltaR: " + CurCurveDeltaR.toString());
  402. // var TempStartPointX = CurCurveStartPointX;
  403. // var TempStartPointY = CurCurveStartPointY;
  404. // var TempEndPointX = 0;
  405. // var TempEndPointY = 0;
  406. // var TempCenterPointX = 0;
  407. // var TempCenterPointY = 0;
  408. // var TempStartAngleByCenter = CurCurveStartAngleByCenter;
  409. // var TempEndAngleByCenter = 0.0;
  410. // var TempCurveR = 0;
  411. // //插值求解缓和曲线:计算每个分段曲线(用圆弧或者线段都可以,此处用圆弧)的半径、起始角度、终止角度及圆心,再将分段曲线拟合成缓和曲线,liyz
  412. // for (var j = 0; j < CurCurveS; j = j + DeltaS) {
  413. // if (21 == CurCurveType) {
  414. // TempCurveR = CurCurveRO - (j / CurCurveS) * CurCurveDeltaR;
  415. // }
  416. // else {
  417. // TempCurveR = CurCurveRO + (j / CurCurveS) * CurCurveDeltaR;
  418. // }
  419. // // EAction.handleUserMessage("Curve TempCurveR: " + TempCurveR.toString());
  420. // if (1 == CurCurveZ) {
  421. // TempEndAngleByCenter = TempStartAngleByCenter + rad2deg(DeltaS / TempCurveR);
  422. // }
  423. // else {
  424. // TempEndAngleByCenter = TempStartAngleByCenter - rad2deg(DeltaS / TempCurveR);
  425. // }
  426. // TempCenterPointX = TempStartPointX - TempCurveR * Math.cos(deg2rad(TempStartAngleByCenter));
  427. // TempCenterPointY = TempStartPointY - TempCurveR * Math.sin(deg2rad(TempStartAngleByCenter));
  428. // TempEndPointX = TempCenterPointX + TempCurveR * Math.cos(deg2rad(TempEndAngleByCenter));
  429. // TempEndPointY = TempCenterPointY + TempCurveR * Math.sin(deg2rad(TempEndAngleByCenter));
  430. // this.newEntityData.push([TempCenterPointX / parseFloat(this.ratio), TempCenterPointY / parseFloat(this.ratio), 0, 0, TempCurveR / parseFloat(this.ratio),
  431. // TempStartAngleByCenter, TempEndAngleByCenter, CurCurveZ, CurCurveType]);
  432. // //存储临时辅助线数据
  433. // if (21 == CurCurveType && j == 0) {
  434. // TempFZData.push([TempStartPointX, TempStartPointY, CurCurveStartAngle, 1, CurCurveZ]);
  435. // this.csvls.push(Math.abs(CurCurveS));
  436. // }
  437. // else if (22 == CurCurveType && j + DeltaS >= CurCurveS) {
  438. // TempFZData.push([TempEndPointX, TempEndPointY, CurCurveEndAngle, 3, CurCurveZ]);
  439. // }
  440. // TempStartPointX = TempEndPointX;
  441. // TempStartPointY = TempEndPointY;
  442. // TempStartAngleByCenter = TempEndAngleByCenter;
  443. // if (j + DeltaS >= CurCurveS) {
  444. // CurCurveEndPointX = TempEndPointX;
  445. // CurCurveEndPointY = TempEndPointY;
  446. // }
  447. // }
  448. // }
  449. // else if (3 == CurCurveType) {
  450. // //确定圆曲线的起始和终止点 lyz
  451. // var CurCurveStartAngleByCenter = 0.0;
  452. // var CurCurveEndAngleByCenter = 0.0;
  453. // if (CurCurveZ == 1) {
  454. // CurCurveStartAngleByCenter = rad2deg(CurCurveStartAngle) - 90;
  455. // CurCurveEndAngleByCenter = rad2deg(CurCurveEndAngle) - 90;
  456. // } else if (CurCurveZ == -1) {
  457. // CurCurveStartAngleByCenter = rad2deg(CurCurveStartAngle) + 90;
  458. // CurCurveEndAngleByCenter = rad2deg(CurCurveEndAngle) + 90;
  459. // }
  460. // CurCurveCenterPointX = CurCurveStartPointX - CurCurveRO * Math.cos(deg2rad(CurCurveStartAngleByCenter));
  461. // CurCurveCenterPointY = CurCurveStartPointY - CurCurveRO * Math.sin(deg2rad(CurCurveStartAngleByCenter));
  462. // CurCurveEndPointX = CurCurveCenterPointX + CurCurveRO * Math.cos(deg2rad(CurCurveEndAngleByCenter));
  463. // CurCurveEndPointY = CurCurveCenterPointY + CurCurveRO * Math.sin(deg2rad(CurCurveEndAngleByCenter));
  464. // this.newEntityData.push([CurCurveCenterPointX / parseFloat(this.ratio), CurCurveCenterPointY / parseFloat(this.ratio), 0, 0, CurCurveRO / parseFloat(this.ratio),
  465. // CurCurveStartAngleByCenter, CurCurveEndAngleByCenter, CurCurveZ, CurCurveType]);
  466. // var Rl = abs(deg2rad(CurCurveEndAngleByCenter - CurCurveStartAngleByCenter) * CurCurveRO);
  467. // this.centerO.push([CurCurveCenterPointX, CurCurveCenterPointY, Rl, (CurCurveEndAngleByCenter - CurCurveStartAngleByCenter)]);
  468. // this.csvR.push(CurCurveRO);
  469. // }
  470. // CurCurveStartPointX = CurCurveEndPointX;
  471. // CurCurveStartPointY = CurCurveEndPointY;
  472. // // this.primePointArr.push([CurCurveType, CurCurveStartPointX, CurCurveStartPointY, CurCurveEndZH, CurCurveEndAngle]);
  473. // }
  474. // // EAction.handleUserMessage("\n");
  475. // pLineNo++;
  476. // }
  477. // while (!ts.atEnd());
  478. // //处理辅助线点信息 liyz
  479. // for (var j = 0; j < TempFZData.length - 1; j++) {
  480. // if (1 == TempFZData[j][3] && 3 == TempFZData[j + 1][3]) {
  481. // this.newFZEntityData.push([TempFZData[j][0] / parseFloat(this.ratio), TempFZData[j][1] / parseFloat(this.ratio), TempFZData[j][3]]);
  482. // //计算辅助线交点值 liyz
  483. // var k_1 = Math.tan(TempFZData[j][2]);
  484. // var b_1 = TempFZData[j][1] - TempFZData[j][0] * k_1;
  485. // var k_2 = Math.tan(TempFZData[j + 1][2]);
  486. // var b_2 = TempFZData[j + 1][1] - TempFZData[j + 1][0] * k_2;
  487. // var TempJDX = (b_2 - b_1) / (k_1 - k_2);
  488. // var TempJDY = k_1 * TempJDX + b_1;
  489. // this.newFZEntityData.push([TempJDX / parseFloat(this.ratio), TempJDY / parseFloat(this.ratio), 2]);
  490. // this.csvCoor.push([TempJDX / parseFloat(this.ratio), TempJDY / parseFloat(this.ratio)]);
  491. // this.newFZEntityData.push([TempFZData[j + 1][0] / parseFloat(this.ratio), TempFZData[j + 1][1] / parseFloat(this.ratio), TempFZData[j + 1][3]]);
  492. // }
  493. // }
  494. // // EAction.handleUserMessage("newFZEntityData: " + this.newFZEntityData.toString());
  495. // this.applyOperation();
  496. // reader.close();
  497. // return true;
  498. // };
  499. // PMDialogInput.prototype.calDeg = function (A, B, C, jdIndx) {
  500. // var JD_x = B[0];
  501. // var JD_y = B[1];
  502. // var C_x = this.centerO[jdIndx - 1][0];
  503. // var C_y = this.centerO[jdIndx - 1][1];
  504. // // 计算向量AB与x轴的夹角
  505. // var angleRad = Math.atan2(JD_y - C_y, JD_x - C_x);
  506. // // 将弧度转换为角度
  507. // var angleDeg = rad2deg(angleRad);
  508. // // 保证角度在0到360度之间
  509. // if (angleDeg < 0) {
  510. // angleDeg += 360.0;
  511. // }
  512. // // 相对JD的向圆心的偏移量
  513. // var drift_x = Math.cos(deg2rad(angleDeg));
  514. // var drift_y = Math.sin(deg2rad(angleDeg));
  515. // // JD文本的旋转角度
  516. // var angle_vertical = 0;
  517. // if (0 <= angleDeg && angleDeg < 90) {
  518. // drift_x = - Math.abs(drift_x);
  519. // drift_y = - Math.abs(drift_y);
  520. // angle_vertical = - (90 - angleDeg % 90);
  521. // } else if (90 <= angleDeg && angleDeg < 180) {
  522. // drift_x = Math.abs(drift_x);
  523. // drift_y = - Math.abs(drift_y);
  524. // angle_vertical = angleDeg % 90;
  525. // } else if (180 <= angleDeg && angleDeg < 270) {
  526. // drift_x = Math.abs(drift_x);
  527. // drift_y = Math.abs(drift_y);
  528. // angle_vertical = - (90 - angleDeg % 90);
  529. // } else {
  530. // drift_x = - Math.abs(drift_x);
  531. // drift_y = Math.abs(drift_y);
  532. // angle_vertical = angleDeg % 90;
  533. // }
  534. // if (angleDeg > 180) {
  535. // // 标注文本方向始终是JD向内的方向
  536. // angle_vertical = angle_vertical + 180;
  537. // }
  538. // // 交点和圆心的的连线
  539. // // addLineToView([JD_x, JD_y], [C_x, C_y], 1);
  540. // // EAction.handleUserMessage("jdIndx: " + jdIndx.toString() + ", angleDeg:" + angleDeg.toString() + ",angleDeg % 90:" + (angleDeg % 90).toString()+ ",angle_vertical:" + angle_vertical.toString());
  541. // // JD标注
  542. // addSimpleTextToView("JD" + jdIndx.toString(), [JD_x - 20 * drift_x - 10, JD_y - 20 * drift_y], 15, angle_vertical, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  543. // // 圆心和JD连接与圆的交叉点
  544. // var cross_x = C_x - this.csvR[jdIndx - 1] * drift_x;
  545. // var cross_y = C_y - this.csvR[jdIndx - 1] * drift_y;
  546. // // 标注和交叉点的距离
  547. // var distance = 150;
  548. // var angle = this.centerO[jdIndx - 1][3];
  549. // var textArray = new Array();
  550. // textArray.push("JD" + jdIndx.toString());
  551. // // textArray.push("az-" + this.centerO[jdIndx - 1][3].toString());
  552. // var deg = Math.floor(angle);
  553. // var min = Math.floor((angle - deg) * 60);
  554. // var sec = Math.floor(((angle - deg) * 60 - min) * 60);
  555. // textArray.push("az-" + deg.toString() + "°" + min.toString() + "'" + sec.toString() + "''");
  556. // textArray.push("R-" + this.csvR[jdIndx - 1].toString());
  557. // textArray.push("l-" + this.csvls[jdIndx - 1].toString());
  558. // textArray.push("T-" + (round(this.CurHuanheTArr[jdIndx - 1] * 1000) / 1000).toString());
  559. // textArray.push("L-" + (round(this.centerO[jdIndx - 1][2] * 1000) / 1000).toString());
  560. // for (var i = 0; i < textArray.length; i++) {
  561. // var text_x = (distance + 25 * i) * drift_x + cross_x;
  562. // var text_y = (distance + 25 * i) * drift_y + cross_y;
  563. // addSimpleTextToView(textArray[i], [text_x, text_y], 15, angle_vertical, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  564. // }
  565. // return true;
  566. // };
  567. // PMDialogInput.prototype.drawPrimeTxt = function () {
  568. // var digree = rad2deg(this.primePointArr[i][4]) + 90;
  569. // if (1 == this.primePointArr[i][0]) {
  570. // addSimpleTextToView("ZH +" + this.primePointArr[i][3].toString(), [this.primePointArr[i][1] + 1, this.primePointArr[i][2]],
  571. // 15, digree, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  572. // } else if (21 == this.primePointArr[i][0]) {
  573. // addSimpleTextToView("HY +" + this.primePointArr[i][3].toString(), [this.primePointArr[i][1] + 1, this.primePointArr[i][2]],
  574. // 15, digree, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  575. // } else if (3 == this.primePointArr[i][0]) {
  576. // addSimpleTextToView("YH +" + this.primePointArr[i][3].toString(), [this.primePointArr[i][1] + 1, this.primePointArr[i][2]],
  577. // 15, digree, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  578. // } else {
  579. // addSimpleTextToView("HZ +" + this.primePointArr[i][3].toString(), [this.primePointArr[i][1] + 1, this.primePointArr[i][2]],
  580. // 15, digree, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  581. // }
  582. // };
  583. // PMDialogInput.prototype.compute_offset = function (origin, target) {
  584. // var origin_x = origin[0];
  585. // var origin_y = origin[1];
  586. // var target_x = target[0];
  587. // var target_y = target[1];
  588. // // 计算向量AB与x轴的夹角
  589. // var angleRad = Math.atan2(origin_y - target_y, origin_x - target_x);
  590. // // 将弧度转换为角度
  591. // var angleDeg = rad2deg(angleRad);
  592. // // 保证角度在0到360度之间
  593. // if (angleDeg < 0) {
  594. // angleDeg += 360.0;
  595. // }
  596. // // target向origin偏移量
  597. // var drift_x = Math.cos(deg2rad(angleDeg));
  598. // var drift_y = Math.sin(deg2rad(angleDeg));
  599. // // JD文本的旋转角度
  600. // var vertical_angle = 0;
  601. // var vertical_drift_x = 0;
  602. // var vertical_drift_y = 0;
  603. // if (0 <= angleDeg && angleDeg < 90) {
  604. // drift_x = -Math.abs(drift_x);
  605. // drift_y = -Math.abs(drift_y);
  606. // vertical_angle = -(90 - (angleDeg % 90));
  607. // vertical_drift_x = Math.abs(Math.cos(deg2rad(vertical_angle)));
  608. // vertical_drift_y = - Math.abs(Math.sin(deg2rad(vertical_angle)));
  609. // } else if (90 <= angleDeg && angleDeg < 180) {
  610. // drift_x = Math.abs(drift_x);
  611. // drift_y = -Math.abs(drift_y);
  612. // vertical_angle = angleDeg % 90;
  613. // vertical_drift_x = Math.abs(Math.cos(deg2rad(vertical_angle)));
  614. // vertical_drift_y = Math.abs(Math.sin(deg2rad(vertical_angle)));
  615. // } else if (180 <= angleDeg && angleDeg < 270) {
  616. // drift_x = Math.abs(drift_x);
  617. // drift_y = Math.abs(drift_y);
  618. // vertical_angle = -(90 - (angleDeg % 90));
  619. // vertical_drift_x = Math.abs(Math.cos(deg2rad(vertical_angle)));
  620. // vertical_drift_y = - Math.abs(Math.sin(deg2rad(vertical_angle)));
  621. // } else {
  622. // drift_x = -Math.abs(drift_x);
  623. // drift_y = Math.abs(drift_y);
  624. // vertical_angle = angleDeg % 90;
  625. // vertical_drift_x = Math.abs(Math.cos(deg2rad(vertical_angle)));
  626. // vertical_drift_y = Math.abs(Math.sin(deg2rad(vertical_angle)));
  627. // }
  628. // return new Array(drift_x, drift_y, angleDeg, vertical_drift_x, vertical_drift_y, vertical_angle);
  629. // }
  630. // PMDialogInput.prototype.mileage_line = function (CurCurveType, origin, target, ZXColor, isPrime) {
  631. // var origin_x = origin[0];
  632. // var origin_y = origin[1];
  633. // var target_x = target[0];
  634. // var target_y = target[1];
  635. // var distance = Math.sqrt(Math.pow(target_x - origin_x, 2) + Math.pow(target_y - origin_y, 2));
  636. // var distanceNext = 100 - (this.mileage % 100);
  637. // if (isPrime && 0 !== this.mileage) {
  638. // var angle_prime = this.compute_offset(origin, target)[5];
  639. // if (1 == CurCurveType) {
  640. // addSimpleTextToView("ZH +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [origin_x, origin_y], 15, angle_prime + 90, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  641. // } else if (21 == CurCurveType) {
  642. // addSimpleTextToView("HY +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [origin_x, origin_y], 15, angle_prime + 90, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  643. // } else if (3 == CurCurveType) {
  644. // addSimpleTextToView("YH +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [origin_x, origin_y], 15, angle_prime + 90, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  645. // } else {
  646. // addPolylinetoView(new Array([origin_x, origin_y], [origin_x + 150 * Math.cos(deg2rad(angle_prime)), origin_y + 150 * Math.sin(deg2rad(angle_prime))]), false, false, 1, ZXColor);
  647. // var origin_text_x = origin_x + 18 * Math.abs(Math.cos(deg2rad(angle_prime + 90))) + 15 * Math.cos(deg2rad(angle_prime));
  648. // var origin_text_y = origin_y + 18 * Math.abs(Math.sin(deg2rad(angle_prime + 90))) + 15 * Math.sin(deg2rad(angle_prime));
  649. // addSimpleTextToView("HZ +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [origin_text_x, origin_text_y], 15, angle_prime, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  650. // }
  651. // }
  652. // if (distance < distanceNext) {
  653. // // 不足下一个百米标的位置直接返回
  654. // this.mileage += distance;
  655. // return;
  656. // }
  657. // this.mileage += distanceNext;
  658. // var offset = this.compute_offset(origin, target);
  659. // var offset_x = offset[0];
  660. // var offset_y = offset[1];
  661. // var angle = offset[2];
  662. // var offset_vertical_x = offset[3];
  663. // var offset_vertical_y = offset[4];
  664. // var angle_vertical = offset[5];
  665. // // 下一个百米标的坐标
  666. // var x = origin_x + distanceNext * offset_x;
  667. // var y = origin_y + distanceNext * offset_y;
  668. // // addPolylinetoView(new Array([x, y], [x - 20 * offset_vertical_x, y - 20 * offset_vertical_y]), false, false, 0, ZXColor);
  669. // // addPolylinetoView(new Array([x, y], [x + 20 * offset_vertical_x, y + 20 * offset_vertical_y]), false, false, 0, ZXColor);
  670. // var text = this.mileage % 1000 == 0 ? "K " + this.mileage / 1000 : (this.mileage / 100) % 10;
  671. // // EAction.handleUserMessage("--mileage_line: " + this.mileage.toString() + ", angle: " + angle.toString() + ", angle_vertical: " + angle_vertical.toString());
  672. // // EAction.handleUserMessage("--mileage_line: offset_vertical_x: " + offset_vertical_x.toString() + ", offset_vertical_y: " + offset_vertical_y.toString());
  673. // addPolylinetoView(new Array([x, y], [x + 10 * offset_vertical_x, y + 10 * offset_vertical_y]), false, false, 1, ZXColor);
  674. // addSimpleTextToView(text.toString(), [x + 20 * offset_vertical_x, y + 20 * offset_vertical_y], 15, angle_vertical, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  675. // // var isReverse = angle > 90 && angle < 270;
  676. // // addPolylinetoView(new Array([x, y], [x + (isReverse?1:-1) * 10 * offset_vertical_x, y + (isReverse?1:-1) * 10 * offset_vertical_y]), false, false, 0, ZXColor);
  677. // // addSimpleTextToView(text.toString(), [x + (isReverse?1:-1) * 20 * offset_vertical_x, y + (isReverse?1:-1) * 20 * offset_vertical_y], 15, isReverse ? angle-90 : angle, "Standard" , RS.VAlignTop, RS.HAlignLeft, false, false, 0);
  678. // this.mileage_line(CurCurveType, new Array(x, y), target, ZXColor, false);
  679. // };
  680. // PMDialogInput.prototype.mileage_circle = function (CurCurveType, center, radius, startAngle, endAngle, reversed, ZXColor, isPrime) {
  681. // var center_x = center[0];
  682. // var center_y = center[1];
  683. // var angle_gap = startAngle - endAngle;
  684. // var distance = radius * deg2rad(Math.abs(angle_gap));
  685. // var distanceNext = 100 - (this.mileage % 100);
  686. // if (isPrime && 0 !== this.mileage) {
  687. // var prime_offset_x = Math.abs(Math.cos(deg2rad(startAngle)));
  688. // var prime_offset_y = Math.abs(Math.sin(deg2rad(startAngle)));
  689. // var tmp_startAngle = (startAngle + 360) % 360;
  690. // if (tmp_startAngle <= 90) {
  691. // prime_offset_x = prime_offset_x;
  692. // prime_offset_y = prime_offset_y;
  693. // } else if (tmp_startAngle > 90 && tmp_startAngle <= 180) {
  694. // prime_offset_x = - prime_offset_x;
  695. // prime_offset_y = prime_offset_y;
  696. // } else if (tmp_startAngle > 180 && tmp_startAngle <= 270) {
  697. // prime_offset_x = - prime_offset_x;
  698. // prime_offset_y = - prime_offset_y;
  699. // } else {
  700. // prime_offset_x = prime_offset_x;
  701. // prime_offset_y = - prime_offset_y;
  702. // }
  703. // var prime_x = center_x + radius * prime_offset_x;
  704. // var prime_y = center_y + radius * prime_offset_y;
  705. // var angle_prime = this.compute_offset(new Array(prime_x, prime_y), new Array(center_x, center_y))[5];
  706. // var reverse_prime = angle_prime > 0 && angle_prime < 90;
  707. // var angle_prime_text = reverse_prime ? angle_prime - 90 : angle_prime + 90;
  708. // // EAction.handleUserMessage("---mileage: " + this.mileage.toString()+",angle_prime_text:"+angle_prime_text.toString());
  709. // addPolylinetoView(new Array([prime_x, prime_y], [prime_x + 150 * Math.cos(deg2rad(angle_prime_text)), prime_y + 150 * Math.sin(deg2rad(angle_prime_text))]), false, false, 1, ZXColor);
  710. // var prime_text_x = prime_x + 18 * Math.abs(Math.cos(deg2rad(angle_prime_text + 90))) + 15 * Math.cos(deg2rad(angle_prime_text));
  711. // var prime_text_y = prime_y + 18 * Math.abs(Math.sin(deg2rad(angle_prime_text + 90))) + 15 * Math.sin(deg2rad(angle_prime_text));
  712. // if (1 == CurCurveType) {
  713. // addSimpleTextToView("ZH +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [prime_text_x, prime_text_y], 15, angle_prime_text, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  714. // } else if (21 == CurCurveType) {
  715. // addSimpleTextToView("HY +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [prime_text_x, prime_text_y], 15, angle_prime_text, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  716. // } else if (3 == CurCurveType) {
  717. // addSimpleTextToView("YH +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [prime_text_x, prime_text_y], 15, angle_prime_text, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  718. // } else {
  719. // addSimpleTextToView("HZ +" + (round(this.mileage % 1000 * 1000) / 1000).toString(), [prime_text_x, prime_text_y], 15, angle_prime_text, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  720. // }
  721. // }
  722. // if (distance < distanceNext) {
  723. // // 不足下一个百米标的位置直接返回
  724. // this.mileage += distance;
  725. // return;
  726. // }
  727. // this.mileage += distanceNext;
  728. // var newAngle = startAngle + (angle_gap > 0 ? -1 : 1) * rad2deg(distanceNext / radius);
  729. // var new_offset_x = Math.abs(Math.cos(deg2rad(newAngle)));
  730. // var new_offset_y = Math.abs(Math.sin(deg2rad(newAngle)));
  731. // // 计算坐标偏移方向
  732. // var tmp_angle = (newAngle + 360) % 360;
  733. // if (tmp_angle <= 90) {
  734. // new_offset_x = new_offset_x;
  735. // new_offset_y = new_offset_y;
  736. // } else if (tmp_angle > 90 && tmp_angle <= 180) {
  737. // new_offset_x = - new_offset_x;
  738. // new_offset_y = new_offset_y;
  739. // } else if (tmp_angle > 180 && tmp_angle <= 270) {
  740. // new_offset_x = - new_offset_x;
  741. // new_offset_y = - new_offset_y;
  742. // } else {
  743. // new_offset_x = new_offset_x;
  744. // new_offset_y = - new_offset_y;
  745. // }
  746. // var new_x = center_x + radius * new_offset_x;
  747. // var new_y = center_y + radius * new_offset_y;
  748. // // 开始画线
  749. // var offset = this.compute_offset(new Array(new_x, new_y), new Array(center_x, center_y));
  750. // var offset_x = offset[0];
  751. // var offset_y = offset[1];
  752. // var angle = offset[3];
  753. // var angle_vertical = offset[5];
  754. // // addPolylinetoView(new Array([new_x, new_y], [new_x - 20 * offset_x, new_y - 20 * offset_y]), false, false, 0, ZXColor);
  755. // // addPolylinetoView(new Array([new_x, new_y], [new_x + 20 * offset_x, new_y + 20 * offset_y]), false, false, 0, ZXColor);
  756. // var text = this.mileage % 1000 == 0 ? "K " + this.mileage / 1000 : (this.mileage / 100) % 10;
  757. // var isReverse = tmp_angle > 90 && tmp_angle < 270;
  758. // // EAction.handleUserMessage("--mileage_circle: " + this.mileage.toString() + ", tmp_angle: " + tmp_angle.toString() + ",angle: " + angle.toString() + ", angle_vertical: " + angle_vertical.toString());
  759. // // EAction.handleUserMessage("--mileage_circle: offset_x: " + offset_x.toString() + ", offset_y: " + offset_y.toString());
  760. // addPolylinetoView(new Array([new_x, new_y], [new_x + (isReverse ? 1 : -1) * 10 * offset_x, new_y + (isReverse ? 1 : -1) * 10 * offset_y]), false, false, 1, ZXColor);
  761. // addSimpleTextToView(text.toString(), [new_x + (isReverse ? 1 : -1) * 20 * offset_x, new_y + (isReverse ? 1 : -1) * 20 * offset_y], 15, isReverse ? tmp_angle - 180 : tmp_angle, "Standard", RS.VAlignTop, RS.HAlignLeft, false, false, 1);
  762. // // addPolylinetoView(new Array([new_x, new_y], [new_x + 10 * offset_x, new_y + 10 * offset_y]), false, false, 0, ZXColor);
  763. // // addSimpleTextToView(text.toString(), [new_x + 20 * offset_x, new_y + 20 * offset_y], 15, isReverse ? angle_vertical + 270 :angle_vertical-90, "Standard" , RS.VAlignTop, RS.HAlignLeft, false, false, 0);
  764. // this.mileage_circle(CurCurveType, center, radius, newAngle, endAngle, reversed, ZXColor, false);
  765. // };