Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: MrBarry от 27.06.24, 07:16:27

Название: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 27.06.24, 07:16:27
Всем привет! Задача такая: есть чертёж и спецификация к нему вторым листом (см. прикреплённый скриншот). Нужно заполнить спецификацию на втором листе. Посмотрел в примерах от Аскона, и Step10 как раз про спецификацию. Однако, именно когда она отдельным документом, а не на одном из листов, как у меня. Соответственно, они не работают. Если быть конкретнее, то вот эта строка:
ksSpcDocument spcdoc = (ksSpcDocument)kompas.SpcActiveDocument();Она всегда выдаёт 0 по понятной причине - у меня открыта не спецификация, а чертёж, в котором есть спецификация. Но как тогда её редактировать? Я, наверное, могу просто подобрать координаты ячеек и в них обычным ksText заполнять, но это всё равно что на индукционной плите развести костёр и на нём мясо жарить :-)))  :-)))
Короче говоря, каким образом обращаться к такой спрятанной спецификации?
Название: Re: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 27.06.24, 08:58:59
Обновление: во-первых, я забыл прикрепить скриншот :-))) Это должен был быть первый прикреплённый в этом сообщении
Во-вторых, решение такое: вся спецификация в таком документе это технически одна большая основная надпись, и её можно редактировать через интерфейс ksStamp. Вот код, который я честно позаимствовал из другой темы на этом форуме и модифицировал:

(Язык C#)
// ksDocument2D doc определён раньше в коде

// Редактирование надписи
ksStamp stamp2 = (ksStamp)doc.GetStampEx(2);
stamp2.ksOpenStamp();

// Создание массивов для добавления текста
ksDynamicArray arrItemText = (ksDynamicArray)kompas.GetDynamicArray(ldefin2d.TEXT_ITEM_ARR);
arrItemText.ksClearArray();
ksDynamicArray arrLineText = (ksDynamicArray)kompas.GetDynamicArray(ldefin2d.TEXT_LINE_ARR);
arrLineText.ksClearArray();

// В цикле я записываю в каждую ячейку текст вида "testX", где Х - номер этой ячейки. Так можно определить номер каждой ячейки, чтоб потом знать к какой обращаться
for (int i=1; i < 2000; ++i) {
    addStr(kompas, "test" + i, arrItemText, arrLineText);
    stamp2.ksSetStampColumnText(i, arrLineText);
   
    arrItemText.ksClearArray(); arrLineText.ksClearArray();
}
stamp2.ksCloseStamp();

private static void addStr(KompasObject kompas, string str, ksDynamicArray itemText, ksDynamicArray lineText) {
    ksTextLineParam lineParam = (ksTextLineParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam);
    lineParam.Init();
    lineParam.style = 3;
    ksTextItemParam itemParam = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);
    itemParam.Init();

    itemParam.s = str;
    itemText.ksAddArrayItem(-1, itemParam);
    lineParam.SetTextItemArr(itemText);
    lineText.ksAddArrayItem(-1, lineParam);
    lineParam.Init();
}


Результат на втором прикреплённом скриншоте

p.s. и да, вот это извращение с ksTextLineParam и ksTextItemParam мне категорически не нравится, спасибо что кто-то уже это всё написал и нужно просто взять и адаптировать под свои нужды
Название: Re: Редактирование спецификации на 2 листе
Отправлено: KrissKross от 27.06.24, 10:42:37
Чем плохи велосипеды
Они плохо сопрягаются со сторонними инструментами

Если вдруг вам понадобится PDM
От куда и как - бедной ПДМ брать информацию

или кто-то другой из вашей организации захочет использовать информацию со Сборочного чертежа
без костылей и знания вашего велосипеда - все кирдык-приехали

С вашей доморощенной псевдо-спецификации - Полу-штамп
Уф и на крутили

Может вам использовать спецификацию на листе
а рамку и штампа спецификации - так и быть свои доморощенные
Тем самым - вы сохраняете информацию в привычном для Компаса формате
А над представлением - изгаляетесь сами - в рамках позволенного Компасом

Если у вас есть 3Д Сборка
Также можно использовать Отчеты и их Таблицы, которые тоже можно настроить на отслеживание связи с головной сборкой, а внешний вид можно еще больше настраивать

Спецификация на листе
Специя на листе.png
Название: Re: Редактирование спецификации на 2 листе
Отправлено: KrissKross от 27.06.24, 10:46:41
Реализация

для доступа к спецификации на листе
воспользоваться интерфейсом
ISpecificationDescriptions

цитата из справки
Цитировать1. Для документа-спецификации возможно только одно описание, и оно есть всегда (т.е. добавлять и удалять нельзя).

2. В текстовом документе описаний нет.

3. Для остальных документов (чертеж, фрагмент, деталь и сборка) описаний может быть сколько угодно, в том числе и ни одного.

4. При добавлении нового описания оно становится текущим.

5. Данный интерфейс может быть получен следующими способами:

– от интерфейса документа IKompasDocument с помощью свойства IKompasDocument::SpecificationDescriptions,

– от интерфейса чертежа IDrawingDocument с помощью свойства IDrawingDocument::ChangeListDescriptions.

Справка онлайн (https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/ispecificationdescriptions.html?q=ispecificationdescriptions)
Название: Re: Редактирование спецификации на 2 листе
Отправлено: KrissKross от 27.06.24, 10:54:09
Ручное управление
Спецификацией на листе

Специя на листе-1.png
Название: Re: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 27.06.24, 11:57:46
Цитата: KrissKross от 27.06.24, 10:42:37Чем плохи велосипеды
Цитата: KrissKross от 27.06.24, 10:42:37без костылей и знания вашего велосипеда - все кирдык-приехали
Цитата: KrissKross от 27.06.24, 10:42:37С вашей доморощенной псевдо-спецификации - Полу-штамп
Уф и на крутили
Я не инженер, не конструктор и вообще моя работа с Компасом не связана. Я - программист, и с Компасом познакомился только в рамках одного большого проекта, над которым работаю. Соответственно, я вообще ни в зуб ногой как там всё работает.
Не мне менять формат, в котором чертёж и спецификация будут представлены - это всё требование заказчика (тем более что там ещё будут листы с другими данными). Я работаю с тем, что имею.
Цитата: KrissKross от 27.06.24, 10:42:37Если вдруг вам понадобится PDM
Ну вообще нет, движение идёт как раз наоборот - вся информация уже есть в документе в нашей ERP системе, а чертёж и спецификация по нему чертятся на основе данных из неё. Соответственно, в обратную сторону данные читать смысла ноль)

Цитата: KrissKross от 27.06.24, 10:42:37Если у вас есть 3Д Сборка
Также можно использовать Отчеты и их Таблицы, которые тоже можно настроить на отслеживание связи с головной сборкой, а внешний вид можно еще больше настраивать
Впрочем за все советы спасибо, возможно в будущем когда будем разрабатывать новые 2D и 3D документы, я предложу сделать такой, более стандартизированный вариант.

Цитата: KrissKross от 27.06.24, 10:46:41Справка онлайн (https://www.google.com/search?q=%D0%B7%D0%B0%D1%87%D0%B5%D0%BC+%D0%BD%D0%B0%D0%B6%D0%B8%D0%BC%D0%B0%D1%82%D1%8C+%D0%BD%D0%B0+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8+%D0%BD%D0%B0+%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B0%D1%85&sca_esv=93393d72ee4371e2&sca_upv=1&sxsrf=ADLYWIIzCqMdIxDfSf2wK5pfD5Efz0G6Iw%3A1719478279855&ei=Byh9ZtfoM7TSwPAP1YepqAc&ved=0ahUKEwiXiMfgs_uGAxU0KRAIHdVDCnUQ4dUDCBA&uact=5&oq=%D0%B7%D0%B0%D1%87%D0%B5%D0%BC+%D0%BD%D0%B0%D0%B6%D0%B8%D0%BC%D0%B0%D1%82%D1%8C+%D0%BD%D0%B0+%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8+%D0%BD%D0%B0+%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B0%D1%85&gs_lp=Egxnd3Mtd2l6LXNlcnAiUtC30LDRh9C10Lwg0L3QsNC20LjQvNCw0YLRjCDQvdCwINGB0YLRgNCw0L3QvdGL0LUg0YHRgdGL0LvQutC4INC90LAg0YTQvtGA0YPQvNCw0YUyBRAhGKABSLlcUABY-1lwBHgBkAEAmAGZAaABxiSqAQUzMS4xN7gBA8gBAPgBAZgCNKACnCXCAgoQIxiABBgnGIoFwgIMECMYgAQYExgnGIoFwgILEC4YgAQY0QMYxwHCAggQLhiABBjUAsICBRAAGIAEwgIFEC4YgATCAgQQIxgnwgIIEC4YgAQYywHCAggQABiABBjLAcICBhAAGA0YHsICCBAAGA0YHhgPwgIGEAAYFhgewgIIEAAYFhgeGA_CAgkQABiABBgTGA3CAggQABgTGA0YHsICChAAGBMYCBgNGB7CAggQABiABBiiBMICBBAhGBXCAgcQIRigARgKwgIFECEYnwWYAwCSBwUzNS4xN6AH470C&sclient=gws-wiz-serp)
Предпочитаю оффлайн справку. Имхо - удобнее, и всегда на компе сохранена
Название: Re: Редактирование спецификации на 2 листе
Отправлено: Валерий Изранов от 27.06.24, 13:24:41
Цитата: MrBarry от 27.06.24, 07:16:27Нужно заполнить спецификацию на втором листе
А в чем прелесть Спецификации именно на втором листе?

Если сделать Спецификацию отдельно?
Все Спецификации собрал и в отдел снабжения.
Название: Re: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 27.06.24, 13:27:03
Честно, не знаю, вся конструкторская-проектировочная деятельность на стороне заказчика идёт, их надо за этим спрашивать
А меня это не интересует, моё дело не формат документа обсуждать, а заполнять его
Название: Re: Редактирование спецификации на 2 листе
Отправлено: Валерий Изранов от 27.06.24, 13:30:48
А кто просил то Спецификацию на второй лист загнать?
Почти в ссылку-тюрьму.
Название: Re: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 27.06.24, 13:35:33
Когда обсуждали формат документов с заказчиком, они сказали: вот так мы делаем, так же делайте

Ну вообще они чертёж с 1 листа печатают на А4. Если спецификация на том же листе, она случаем не печатается на том же листе? Если так, то там просто места не хватит, всё мелкое будет
А если не печатается на том же, то не знаю. Может, дело в том, что лист со спецификацией не последний, там ещё 1-3 листа другой специфичной информации. Наверное, им удобнее так, чтоб на каждом листе своя тема была
Название: Re: Редактирование спецификации на 2 листе
Отправлено: Валерий Изранов от 27.06.24, 13:39:43
Ну Бог судья вашим заказчикам.
А вообще то Спецификация печатается отдельно.
Название: Re: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 27.06.24, 13:50:28
Цитата: Валерий Изранов от 27.06.24, 13:39:43Ну Бог судья вашим заказчикам.
Вот-вот. Да и с получившимся документом тоже им работать, а не нам, так что пусть будет как хотят :D
Название: Re: Редактирование спецификации на 2 листе
Отправлено: СВ от 27.06.24, 16:19:43
Цитата: MrBarry от 27.06.24, 13:35:33Ну вообще они чертёж с 1 листа печатают на А4. Если спецификация на том же листе, она случаем не печатается на том же листе?
Есть такое в ЕСКД:
3.19 Допускается совмещение спецификации со сборочным чертежом при условии их
размещения на листе формата А4 (ГОСТ 2.301). При этом ее располагают над основной
надписью и заполняют в том же порядке и по той же форме, что и спецификацию, выполненную
на отдельных листах.


Цитата: MrBarry от 27.06.24, 13:35:33Когда обсуждали формат документов с заказчиком, они сказали: вот так мы делаем, так же делайте
НИКОГДА НЕ ВРЕДНО ПОДСКАЗАТЬ людям, особенно об ошибке. А уж как они дальше поступят, это, разумеется, ИХ дело. Если это не касается ни вас, ни безопасности, разумеется.
Название: Re: Редактирование спецификации на 2 листе
Отправлено: p3452 от 27.06.24, 18:50:57
MrBarry, настоятельно советую внимательнейшим образом перечитать пост №2 и №3 (особенно - пост №3)!
Название: Re: Редактирование спецификации на 2 листе
Отправлено: MrBarry от 28.06.24, 08:22:08
Цитата: СВ от 27.06.24, 16:19:43Есть такое в ЕСКД:
3.19 Допускается совмещение спецификации со сборочным чертежом при условии их
размещения на листе формата А4 (ГОСТ 2.301). При этом ее располагают над основной
надписью и заполняют в том же порядке и по той же форме, что и спецификацию, выполненную
на отдельных листах.
У нас там сам чертёж то мелковат на А4, если туда ещё и спецификацию добавить, то придётся не то что с лупой, с микроскопом всё читать :angel:
Потому лучше чтобы она была размещена на другом листе
Цитата: СВ от 27.06.24, 16:19:43НИКОГДА НЕ ВРЕДНО ПОДСКАЗАТЬ людям, особенно об ошибке.
Как человек "не в теме", я и не знал что в этом есть какая-то проблема
Собственно, и сейчас не вижу, этот документ предназначен не столько для хранения и переиспользования, а для печати и выдачи инженерам, которые это всё будут собирать на месте. Им будет фиолетово, как Компас будет получать информацию из спецификации
Цитата: p3452 от 27.06.24, 18:50:57MrBarry, настоятельно советую внимательнейшим образом перечитать пост №2 и №3 (особенно - пост №3)!
1) С такими намёками у нас снова будет пикировка на 10-20 постов, пока мы оба поймём о чём говорит собеседник
2) К тому же задача давно решена и ни я ни заказчик не заинтересованы в исправлении. Любые замечания нужно писать не мне, а им. Я - исполнитель, мне сказали как делать, я делаю. Решение как делать за ними, и они его уже приняли. И мы оба удовлетворены согласованным.