Создание и заполнение сквозного ТП

Автор martyns881, 06.09.21, 11:32:31

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

martyns881

Здравствуйте!

Необходимо в Лоцмане создать сквозной ТП со ссылочными операциями используя C#. Комплекс 18 версии.

Единственный пример на форуме, связанный с похожей задачей, относится к ВЕРТИКАЛЬ 2011 SP2:
https://forum.ascon.ru/index.php?topic=23942.msg181661#msg181661

На начальном этапе не могу даже LicenseManager победить:

Ascon.Vertical.LicenseManager.Login();

Ошибка   CS0012   Тип "ProtectStatus" определен в сборке, на которую нет ссылки. Следует добавить ссылку на сборку "Ascon.Native, Version=3.1.0.1, Culture=neutral, PublicKeyToken=810e8d71c7a3e510".


Ascon.Native.dll - среди библиотек Лоцмана, Вертикали не нашёл.

Может, кто сталкивался с такой или подобной задачей на свежем комплексе...

Сергей Фадеев

Здравствуйте!

Как вариант, C:/Windows/Microsoft.Net/assembly/GAC_32/Ascon.Native/v4.0_3.1.0.1__810e8d71c7a3e510/Ascon.Native.dll

Вы хотите прочитать файл ВЕРТИКАЛЬ и по нему создать в ЛОЦМАН структуру сквозного ТП?
Как создаете структуру, свое приложение, плагин, прокси?
Какая точная версия ЛОЦМАН, ВЕРТИКАЛЬ в "О программе"?
Пришлите на почту пример файла ТП, посмотрю.

martyns881

Файл в плагине нужно создать с нуля или по примеру, но он пустой, т.к. ссылочные операции будут создаваться на основе интерфейса.
Из интерфейса получается список участков, по которому в ТП должны создаться ссылочные операции с подключенными к ним участками из Полинома.
Значит, нужно авторизоваться и в Вертикали и в Полиноме.
ЛОЦМАН версия 18.2.2.475
ВЕРТИКАЛЬ версия 8.2 SP2 сборка 9

У меня с помощью АПИ получилось создать структуру ТП и заполнить атрибуты в ЛОЦМАН, но без файла структура бесполезна.
Должен получиться механизм получения информации не из файла ВЕРТИКАЛИ в ЛОЦМАН, а наоборот.
Либо просто создание файла с определёнными операциями (в плагине), при сохранении которого или получении информации в ЛОЦМАН, создаётся структура (штатно).

Сергей Фадеев

Добрый день!
using Ascon.Integration; // Библиотека располагается по пути "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Ascon.Integration\v4.0_1.2.0.1__810e8d71c7a3e510"
using Ascon.Vertical.Polynom;
using Ascon.Vertical.Technology;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace VClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AuthenticationManager.Authenticate("Администраторы", "Администратор", "Администратор"); // Авторизация с использованием имени и пароля пользователя
            //AuthenticationManager.Authenticate(); // Авторизация с использованием диалога
            //AuthenticationManager.Authenticate("Администраторы","DOMAIN\Username",""); // Авторизация с использованием учетных записей Windows
            var doc = TechDocument.Create(); // Создать объект документ техпроцесса
            var cls = doc.Model.Classes["detail"]; // Создать объекта класса Деталь
            if (cls != null && doc.Objects.Root.Children.CanAdd(cls))// Проверить на возможность добавления класса Деталь к объекту модели техпроцесса
            {
                // Добавить объект к корневому узлу объекта техпроцесса
                var obj = doc.Objects.Root.Children.Add(cls);
                obj.Attributes["namedse"].Value = "Вал"; // Заполнить атрибут Наименование
                obj.Attributes["obozndse"].Value = "АБВГ.123456.001"; // Заполнить атрибут Обозначение

                var clsOper = doc.Model.Classes["mex_oper"]; // Создать класс операции мехобработки
                var oper = obj.Children.Add(clsOper); // Добавить объект мехобработки к дереву техпроцесса
                //oper.Attributes["nameoper"].Value = "Отрезная"; // Заполнить вручную атрибут Наименование операции. С другими атрибутами аналогично

                // Подготовка к заполнению объектов техпроцесса из ПОЛИНОМ
                var location = "BOSimple***OPER_LIST:0f7ac6c4-44a8-ce14-249e-fea9a015e624"; // Идентификатор операции "Горизонтально-протяжная", составлен из "BOSimple***" и значения свойства "Уникальный идентификатор"
                var guide = new ReferenceBooks(); // Создать объект справочника ПОЛИНОМ
                var pobj = guide.GetObject(location); // Получить ссылку на объект справочника ПОЛИНОМ по уникальному идентификатору
                pobj.FillTechObject(oper); // Заполнить объект модели ВЕРТИКАЛЬ из объекта ПОЛИНОМ
                doc.Save(@"C:\temp\test.vtp");  // Сохранить файл
            }
            doc = null;
            cls = null;
        }
    }
}

Sasha_teh

странно, создал как в примере, но получил ошибку

Сергей Фадеев

24.11.22, 23:36:43 #5 Последнее редактирование: 25.11.22, 00:29:40 от Сергей Фадеев
Нужно изменить код, с учетом версии 22.1
var polynomObject = Ascon.Vertical.Polynom.PolynomObject.TryLoad(location);
if (polynomObject != null)
{
  Ascon.Vertical.Polynom.PolynomObjectProcessor.FillTechObject(polynomObject, oper);
}
+ Благодарностей: 1

Sasha_teh