Skip to content

Commit

Permalink
[ICP CON import] Pull up description of existing device and set old n…
Browse files Browse the repository at this point in the history
…ame (#1525)

```ChangeLog
При импорте ICP CON проекта теперь подтягивается описание уже существующих устройств для привязки, и обновляется название старого устройства;
```
  • Loading branch information
KirillGutyrchik authored Jan 23, 2025
1 parent be2ae1f commit 7b7193c
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
4 changes: 3 additions & 1 deletion docs/user_manual/ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,9 @@ ProjectTestEnabled=True
по нему можно сверять корректность.

- При импортировании устройств проверяются названия уже добавленных устройств:
если устройство с таким названием уже есть, то на ФСА оно не будет добавлено.
если устройство с таким названием уже есть, то на ФСА оно не будет добавлено.
Для правильной привязки будет подтянуто новое описание из существующего устройства
и в существующем устройстве будет обновлено доп. поле[10] со старым названием в ICP CON.

- После импорта устройств и модулей, настраивается их привязка.

Expand Down
15 changes: 15 additions & 0 deletions src/ProjectImportICP/DevicesImporter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -349,9 +349,24 @@ public void GenerateDevicesPages()
return;

var deviceManager = DeviceManager.GetInstance();
var apiHelper = new ApiHelper();

foreach (var Object in ImportDevices.GroupBy(d => d.Object))
{
var devices = Object.Where(dev => deviceManager.GetDevice(dev.Object + dev.Type + dev.Number).Description == CommonConst.Cap).ToList();

// Для уже существующих устройств в проекте:
// Переносим описание для последующей привязки
// Устанавливаем доп.поле [10] со старым названием
var existWagoDevices = Object.Except(devices);
var existDevices = existWagoDevices.Select(dev => deviceManager.GetDevice(dev.Object + dev.Type + dev.Number));
foreach (var devicePair in existWagoDevices.Zip(existDevices, (w, d) => new { wagoDevice = w, device = d }))
{
devicePair.wagoDevice.Description = devicePair.device.Description;
devicePair.device.EplanObjectFunction.LockObject();
apiHelper.SetSupplementaryFieldValue(devicePair.device.EplanObjectFunction, 10,
$"{devicePair.wagoDevice.WagoType}{devicePair.wagoDevice.FullNumber}");
}

// Установка стандартных параметров для определенных типов устройств
foreach (var device in devices)
Expand Down

0 comments on commit 7b7193c

Please sign in to comment.