Вопрос по модификации входного транслятора Лоцман-Компас

Автор Matvey Kushakov, 30.09.19, 16:45:16

« предыдущая - следующая »

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

Matvey Kushakov

30.09.19, 16:45:16 Последнее редактирование: 30.09.19, 17:30:10 от Matvey Kushakov
Здравствуйте!

Исторически так сложилось, что в нашей базе есть существенное количество объектов типа "Деталь", но фактически являющихся стандартными изд., прочими изд. и материалами (за их отличие от фактических деталей отвечает атрибут "Раздел спецификации"). При этом нам нужно генерить спецификацию из дерева Лоцмана. Если ничего не предпринимать, то эти объекты прилетают в спецификацию как детали и их ключевой атрибут (Обозначение) приезжает в столбец "Обозначение" соответственно.

С помощью входного транслятора мы хотим в передаваемой модели исправлять раздел спецификации (это мы реализовали), а также перебивать обозначение в столбец "Наименование", что, собственно, и не получается у нас никак. Все модификации производились в области со 163 по 181-ю строку и добавлена константа C_KG_SPC_SECTION_NAME_MATERIAL. За основу был взят транслятор по умолчанию. Имена в таблице соответствия конфигуратора соответствуют строковым константам в скрипте. Сам скрипт прилагаю.

Собственно вопрос: как в наименование вбить обозначение и потом очистить обозначение?

Используем Лоцман: PLM 2014 в связке с Компас V17.1.

Danila

Перепакуйте файл, что-то не открывается.

Но на нашем предприятии мы пошли по обратному пути.
Конструктор формирует Спецификацию, так как это ему более знакомый инструмент.
А уже из спецификации с помощью bom_out мы выгружаем данные о составе.

Все-таки конструктору проще работать именно в Компасе и формировать в ней спецификации.
К тому же в спецификации часто вносятся различные дополнительные примечания, специальные объекты и т.д., что не всегда удобно указывать в составе изделия в дереве Лоцмана (нужно заполнять кучу атрибутов связи, указывать количество и т.д.).

Но bom_out нам пришлось также существенно переработать.

Если правильно вижу, то установка свойств выполняется с помощью функций: SetPropValue

например, установить значение обозначения будет так: setPropValue cmObject, "DESIGNATION", stDesignation

А получать данные будет так:
stDesignation = Trim(GetPropValueOrEmpty(cmObject, "DESIGNATION"))

Соответственно, занулите обозначение (DESIGNATION), заполнив поле наименования (NAME).
Const       C_KG_DESIGNATION = "DESIGNATION"
Const       C_KG_NAME                     = "NAME"

Matvey Kushakov

30.09.19, 18:12:58 #2 Последнее редактирование: 30.09.19, 18:33:17 от Matvey Kushakov
Цитата: Danila от 30.09.19, 17:26:23
Перепакуйте файл, что-то не открывается.


Перезагрузил в первом сообщении в виде zip-архива вместо rar.

У нас принята такая схема разработки: сначала прорабатываем в компасе сборочную единицу, потом получаем информацию со сборки (в дерево лоцмана приезжают все составные части изделия), затем дополняем дерево лоцмана документацией (ТУ, ЭД, инструкции и всё в этом духе) и уже в конце генерим спецификацию с полного дерева. Предвещая Ваш вопрос скажу, что добавлять в сборку детали-пустышки, которые будут представлять документацию, мы не хотим.

Собственно, функция SetPropValue у меня и не срабатывает (либо срабатывает, но не верно).

Danila

По-моему, вы же все сделали:

stName = GetPropValueOrEmpty(cmObject, C_KG_NAME)
            SetPropValue cmObject, C_TYPE, C_KG_MATERIAL_KD
         SetPropValue cmObject, C_KG_NAME, stDesignation

надо же только очистить обозначение:
         SetPropValue cmObject, C_KG_DESIGNATION, ""

наименование же вы заполнили.
Или я что-то не понимаю.

----
Про методику.

1. Прорабатываем сборочную единицу. Делаем  3D.
2. Из 3d делаем 2d-сборку и спецификацию.
3. Дополняем спецификацию необходимыми документами, примечаниями, составом и т.д.
4. Выгружаем Спецификацию.

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

Я не понял про детали пустышки, если честно.
В СП добавлять только то, что надо. И оттуда будет все выгружаться.
Может, пример СП и скрин состава можно опубликовать? Может, мы не понимаем друг друга?

Matvey Kushakov

01.10.19, 10:38:06 #4 Последнее редактирование: 01.10.19, 11:29:51 от Matvey Kushakov
Цитата: Danila от 30.09.19, 18:49:43
Я не понял про детали пустышки, если честно.
В СП добавлять только то, что надо. И оттуда будет все выгружаться.
Может, пример СП и скрин состава можно опубликовать? Может, мы не понимаем друг друга?

Пардон, с пустышками меня занесло (недавно просто у нас велись разговоры на тему того, чтобы всю информацию о сборке затолкать в электронную модель сборочной единицы, но это совсем другая история, как говорится).

Цитата: Danila от 30.09.19, 18:49:43
По-моему, вы же все сделали:

stName = GetPropValueOrEmpty(cmObject, C_KG_NAME)
            SetPropValue cmObject, C_TYPE, C_KG_MATERIAL_KD
         SetPropValue cmObject, C_KG_NAME, stDesignation


Так беда в том, что команда SetPropValue cmObject, C_KG_NAME, stDesignation у меня и не срабатывает...

Цитата: Danila от 30.09.19, 18:49:43
Соответственно надо сопровождать только один транслятор, а не два.
Я бы не рекомендовал делать как у вас, с двойной выгрузкой/загрузкой - двойная работа, которая приведет к ряду ошибок из-за рассинхронизации.

Да, делать однонаправленную связь вполне разумно, но начальство требует, чтобы работал описанный мной выше алгоритм, так что...

Danila

тогда надо вести отладку, возможно, где-то после данные еще раз заполняются.

msgBox в данном случае поможет.

Увы, детально нет возможности разбираться.