-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.cs
More file actions
78 lines (66 loc) · 2.75 KB
/
Main.cs
File metadata and controls
78 lines (66 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using HostMgd.ApplicationServices;
using Multicad.Runtime;
using Multicad.DatabaseServices;
using DocumentFormat.OpenXml.Spreadsheet;
using NCadCustom.Code;
namespace NCadCustom
{
public class Commands : IExtensionApplication
{
public void Initialize()
{
}
public void Terminate()
{
}
static readonly string[] excelExtentions = { ".xlsx", ".xls", ".xlsb", ".xlsm" };
/// <summary>
/// Создание СПДС объектов на чертеже по таблице из эксель
/// Параметры и ID объектов находятся в эксель
/// </summary>
[CommandMethod("SpdsObjByExcelParams", CommandFlags.NoCheck | CommandFlags.NoPrefix)]
public static void MainCreateObjBySpreadSheet()
{
InputJig jig = new InputJig();
HostMgd.EditorInput.Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
string paramsFilePath = jig.GetText("Укажите полный путь до файла параметров(Excel)", false);
paramsFilePath = paramsFilePath.Trim('"').ToLower();
if (!File.Exists(paramsFilePath))
{
ed.WriteMessage("Выбран не существующий путь! Программа завершена.");
return;
}
if (!excelExtentions.Contains(Path.GetExtension(paramsFilePath)))
{
ed.WriteMessage("Выбран не Excel файл! Программа завершена.");
return;
}
try
{
ShWorker shWorker = new ShWorker(paramsFilePath);
List<Row> dataRows = shWorker.dataRows;
List<string> headers = shWorker.GetHeaders(shWorker.sst, dataRows.ElementAt(0));
List<ObjectForInsert> objs = new List<ObjectForInsert>();
// за исключением шапки - остальное строки с данными о деталях.
Row rw = new Row();
for (int iRow = 1; iRow < dataRows.Count; iRow++)
{
rw = dataRows[iRow];
ObjectForInsert oneObject = new ObjectForInsert(shWorker.sst, headers, rw);
objs.Add(oneObject);
}
foreach (ObjectForInsert obj in objs)
{
obj.PlaceToModelSpace();
}
ed.WriteMessage("Обработано!");
}
catch (Exception e)
{
ed.WriteMessage($"Ошибка : {e}");
}
}
}
}