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

Профессиональные вопросы => Программирование приложений => Биржа прикладных разработок => Тема начата: KrissKross от 25.07.22, 11:56:23

Название: Замена Внешних Ссылок
Отправлено: KrissKross от 25.07.22, 11:56:23
Программа
Замена Внешних Ссылок в Компас-3D

Предназначение
Изменение пути к файлам внешних ссылок, содержащихся в документах Компаса

Область использования:
на любых файлах Компаса:
   3D - Сборки и детали                  (- Тестировал)
   2D - Чертежи и Спецификации  (- Должно в принципе - не тестировал)

Ссылки могут указывать на:
   Файлы-источники для переменных
   Гиперссылка
   Файл данных
   Файл-источник копии внешней геометрии
   Файлы деталей заготовок
   Файлы компоновочной геометрии
   Файл-источник метаданных
   Файл контекста внешней ссылки
   ...

Системные требования
.Net 6
Компас-3D v.20

Условия использования
Программа распространяется бесплатно, по принципу "как есть".
В результате за проблемы, возникающие в процессе эксплуатации или установки программы, разработчик  ответственности не несёт.

ChangeExternalLink.png

Скачать
YDisk (https://disk.yandex.ru/d/O6CC6v_fdZRzJw)
ChangeExternalLink.rar
Название: Re: Замена Внешних Ссылок
Отправлено: Doom от 25.07.22, 22:43:55
Здравствуйте, не много не по теме.. какую команду в cmd использовали в сборке этого приложения ? не знаком с .Net Core есть ли возможность представить написанные приложения C# в виде C++ кода по которому и проводится компиляция ?
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 26.07.22, 07:46:08
старым добрым кнопконажимательством в Visual Studio - команда publish
первая ссылка в поисковике https://habr.com/ru/post/550286/
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 26.07.22, 07:50:57
Доработка программы
В Список Внешних ссылок - добавлено поле - Тип ссылки

ChangeExternalLink1.png

Скачать
YDisk (https://disk.yandex.ru/d/O6CC6v_fdZRzJw)
ChangeExternalLink.rar
Название: Re: Замена Внешних Ссылок
Отправлено: Doom от 26.07.22, 08:42:34
Цитата: KrissKross от 26.07.22, 07:46:08старым добрым кнопконажимательством в Visual Studio - команда publish

у меня приложение с 2 строками кода (VS2022 .Net Core 6) собирает в приложение аж в 185 КБ и библиотеку какую то прикрутил на 50 КБ

по отключал почти все опции - тоже самое..

За ссылку спасибо.

и почему то графика там работает с жуткими фризами -
https://drive.google.com/file/d/1iFe3kBkHBWMhqfCIny4NXcJSg3gFsP3u/view
Название: Re: Замена Внешних Ссылок
Отправлено: ZRustam от 26.07.22, 15:54:34
Правильно понимаю что это полуавтоматизированный процесс ручной замены источника моделей?
есть ли возможность пакетной замены, например часть файлов заменить, у которых имя осталось старым, но местоположение изменилось.
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 26.07.22, 17:38:37
Цитата: ZRustam от 26.07.22, 15:54:34Правильно понимаю что это полуавтоматизированный процесс ручной замены источника моделей?

Скорее да

Дело в том что эти данные
Оставлю путь для истории - Файл - Информация о компоненте - Внешние ссылки
Мы видим, но менять их можем только окольными путями - для каждого типа свой метод изменения

Общая проблема:
При копировании проекта, ссылки остаются на устаревшие пути

Пару примеров:
1. Файл-Источник для переменных -  меняем в ручную для каждой переменной
В этом случаи Да - полуавтоматический режим, меняем в одном месте и нет нужды протыкивать каждую переменную

2. Файл контекста внешней ссылки -
Геометрия - шпильки перпендикулярно вставленные в отверстия плиты, проецируем оси шпилек в плиту и наслаждаемся взаимосвязью положения шип-паз
мы видим ссылку на старую сборку - и как менять - только в ручную - снимать ограничения и заново присваивать соосность для каждого отверстия
В этом случаи - просто замечательно удобная штука

Предпосылки появления
Недоработки программы Ремарка, обратил внимание пользователь (пример 2)
Отсутствие в Компасе, причем эта возможность появилось в АПИ Компаса  с ~  19 версии
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 26.07.22, 17:41:40
Цитата: ZRustam от 26.07.22, 15:54:34есть ли возможность пакетной замены, например часть файлов заменить, у которых имя осталось старым, но местоположение изменилось.

О программе РеМарка - судя по доброжелательному отзыву - знаете
Там эта возможность есть, начиная с версии 4.1 - Перестройка

Тоже уже подумываю об этом
Как сделать процесс копирования
Простым
Наглядным
Всеобъемлющим - с охватом многих нюансов Компаса

Предполагаемые названия
Ремарка-Lite
Центр Управления Проектом
Центр Управления Копированием
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 26.07.22, 17:54:49
Цитата: ZRustam от 26.07.22, 15:54:34есть ли возможность пакетной замены, например часть файлов заменить, у которых имя осталось старым, но местоположение изменилось.
Предлагаю создать новую тему - Копирование проекта - предложения
для сбора потребностей от желающих получить желаемое
И там описывать задачи и необходимый результат

Может и разработчики Аскона - подключаться и выпустят Комплектовщик v2.0 - "Прям прелесть - Вот так бы всегда"
Или некий Лоцман-КБ-Lite

Схема описания задачи
Когда - Хочу - Вариант

Когда
В момент проектирования - проработки разных вариантов
Изделие претерпевает значительные изменения

Хочу
Инструмент для простого приведения файловой структуры к структуре проекта

Вариант реализации
3 окна - типа 2-ух оконного режима, наподобие всеми любимого ТоталКомандера

1 окно - структура проекта в Компасе
2 окно - файловая структура - существующая
3 окно - файловая структура - измененная
Название: Re: Замена Внешних Ссылок
Отправлено: СВ от 26.07.22, 21:47:51
(С другими КАДами (и даже частями КАДов, Лоцман, к примеру) не знаком, поэтому идеи могут и повторяться, и выглядеть устаревшими, и ... пр., пр., пр.)
- - - - - - - - - - -
Мне всегда хотелось иметь систему под названием Проект (которую, говорят, осуществили в Лоцмане): все файлы - Модели, СП, Чертежи автоматически связаны в момент создания, имена файлов соответствуют Обозначению/Наименованию*, Обозначение/Наименование автоматически меняются в процессе проектирования. СП создаётся автоматически без участия пользователя. Либо из СП можно ВСЁ создавать. А скорее всего Сборка и СП работают в одной связке: из любого места создаём Детали и подсборки, перемещаем, переименовываем, удаляем, и т.д. и т.п.
Естественно, Копирование проекта и пакетное переименование в этой системе делается на раз-два.
- - - - - - -
* - думаю, название может иметь две части: первая - что-то типа неизменного "уникального кода", который и учитывается системой, вторая - собственно Обозначение/Наименование, меняется в процессе работы. ЛИБО ЖЕ имя файла переменное, пока идёт работа в проекте и "фиксируется" после окончания работы.
Название: Re: Замена Внешних Ссылок
Отправлено: fedorLytkin от 27.07.22, 08:04:50
Цитата: ZRustam от 26.07.22, 15:54:34есть ли возможность пакетной замены, например часть файлов заменить, у которых имя осталось старым, но местоположение изменилось.
Название: Re: Замена Внешних Ссылок
Отправлено: ZRustam от 27.07.22, 10:15:02
Цитата: fedorLytkin от 27.07.22, 08:04:50видео
У вас на видео чуть более развитый комплектовщик. По переменным не увидел информации. По поводу замены части файлов тоже.
Цитата: KrissKross от 26.07.22, 17:41:40О программе РеМарка - судя по доброжелательному отзыву - знаете
Там эта возможность есть, начиная с версии 4.1 - Перестройка
К сожалению в наличии компас 18, насколько понимаю для новых версий вашей программы нужна более актуальная.
если есть - круто.
Цитата: KrissKross от 26.07.22, 17:38:37В этом случаи Да - полуавтоматический режим, меняем в одном месте и нет нужды протыкивать каждую переменную
очень круто
Цитата: KrissKross от 26.07.22, 17:38:37Общая проблема:
При копировании проекта, ссылки остаются на устаревшие пути
Вот тут есть вопрос. Моделировал ситуацию (без вашей программы). Есть сборка А в папке №1. Готовый проект. Копируем сборку в папку №2, меняем названия на Б. Если открыть сборку Б, файлы подтянутся из папки №1, т.к. нужных имен в папке №2 нет. Но если изменить название папки №1, то при открытии Сборки Б компас предложить указать замену потерянным файлам, и указав их по одному (вот именно тут интересен функционал частичной замены, чтобы не тыкать каждый файл) можно обновить ссылки. вроде бы решенный вопрос. НО. Я пошел дальше. Скопировал сборку Б из папки №2 в папку №3, произвел аналогичные действия по переименованию в сборку В. И теперь, если изменить название папки №2 (чтобы вызвать интерфейс замены потерянных файлов) то он не вызовется. А будут подтянуты файлы из папки №1! Вот это у меня вызвало шок при выявлении. Насколько далеко тянутся "хвосты"?

Поэтому вопрос. Чистятся ли старые пути в вашей программе? или остаются где то "в нутрях"?
Цитата: KrissKross от 26.07.22, 17:54:49Схема описания задачи
Когда - Хочу - Вариант
Когда - первичное проектирование изделия/копирование готового с изменениями
Хочу - Задать основной индекс ( первые цифры/буквы изделия) и правило задания вспомогательных (в ремарке есть), возможность "перетасовать" сборки по уровням, с изменением связей,ссылок,сопряжений (самое сложное, как переместить деталь А из одной сборки в другую с сохранением сопряжений? с одной стороны геометрия не меняется, поэтому индексы поверхностей должны оставаться теми же, но меняется структура. Не знаю как внутри компаса это реализовано и возможно ли в принципе). На выходе получить готовый проект с названием файлов Обозначение Наименование, переписанными внутренними ссылками/переменными
Вариант реализации - Интерфейс первых частей ремарки был не прям плох, но сильно контрастировал с основным окном компаса. В идеале по моему мнению, это было бы два древа сборок, первое исходное, второе желаемое, во втором "тасуем" сразу видим изменения по обозначениям, сверху/сбоку/отдельной вкладкой правила для изменения обозначений и какие то общие настройки. стилистически как в последних компасах (возможно в виде интегрированного приложения/библиотеки, тогда вообще все визуальные настройки будут совпадать).

Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 28.07.22, 09:04:28
Цитата: СВ от 26.07.22, 21:47:51Мне всегда хотелось иметь систему под названием Проект
Тоже обдумываю над системой - локальный Проект, помогающий конструктору на всей его (проекта) протяженности

Цитата: СВ от 26.07.22, 21:47:51осуществили в Лоцмане): все файлы - Модели, СП, Чертежи автоматически связаны в момент создания, имена файлов соответствуют Обозначению/Наименованию*, Обозначение/Наименование автоматически меняются в процессе проектирования. СП создаётся автоматически без участия пользователя. Либо из СП можно ВСЁ создавать. А скорее всего Сборка и СП работают в одной связке: из любого места создаём Детали и подсборки, перемещаем, переименовываем, удаляем, и т.д. и т.п.
Естественно, Копирование проекта и пакетное переименование в этой системе делается на раз-два.
Все это и есть функции ПДМ системы

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

И конструктор или админ - вынуждены многие действия выполнять в ручную, а на выходе получить малозаметные плюшки для самого конструктора
Конечно в рамках предприятия получаем централизованную защиту и хранение данных и прочее ...
Но для конструктора выливается в геморрой и мышко-вредительство ФигЗнаетЗачемСтолькоТупыхДействий
Название: Re: Замена Внешних Ссылок
Отправлено: СВ от 28.07.22, 09:38:15
 Хочу предупредить: В.Изранов разработал "Способ ..." и патентует его, а потому ни в коем случае не используйте его методы, это будет незаконно.
Но отсюда вытекает и другой вариант - вы с ним можете скооперироваться! (И это его здорово утешит.)
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 29.07.22, 07:46:53
Цитата: ZRustam от 27.07.22, 10:15:02Чистятся ли старые пути в вашей программе? или остаются где то "в нутрях"?
Похоже запрятано где-то глубоко,так что в АПИ вроде нет возможности получить эту информацию
и можно предположить, что
внутри Компаса заложен механизм для предотвращения потери ссылок и он хранит свою первую большую любовь,
т.е. первое вхождение без доступа для изменения/удаления

Цитата: ZRustam от 27.07.22, 10:15:02Когда - первичное проектирование изделия/копирование готового с изменениями
Хочу - Задать основной индекс ( первые цифры/буквы изделия) и правило задания вспомогательных (в ремарке есть), возможность "перетасовать" сборки по уровням, с изменением связей, ссылок, сопряжений (самое сложное, как переместить деталь А из одной сборки в другую с сохранением сопряжений? с одной стороны геометрия не меняется, поэтому индексы поверхностей должны оставаться теми же, но меняется структура. Не знаю как внутри компаса это реализовано и возможно ли в принципе). На выходе получить готовый проект с названием файлов Обозначение Наименование, переписанными внутренними ссылками/переменными
Вариант реализации - Интерфейс первых частей ремарки был не прям плох, но сильно контрастировал с основным окном компаса. В идеале по моему мнению, это было бы два древа сборок, первое исходное, второе желаемое, во втором "тасуем" сразу видим изменения по обозначениям, сверху/сбоку/отдельной вкладкой правила для изменения обозначений и какие то общие настройки. стилистически как в последних компасах (возможно в виде интегрированного приложения/библиотеки, тогда вообще все визуальные настройки будут совпадать).
Можно выделить несколько различных действий/пожеланий
   1. Изменение структуры проекта - перетаскивание компонентов по возможности с сохранением сопряжений
   2. Присвоение обозначений
   3. Копирование проекта c
      a. Упорядочиванием и чисткой Файловой структуры
      b. Изменением имен папок и файлов
Название: Re: Замена Внешних Ссылок
Отправлено: Toptotal от 29.07.22, 16:16:24
Цитата: СВ от 28.07.22, 09:38:15В.Изранов разработал "Способ ..." и патентует его, а потому ни в коем случае не используйте его методы, это будет незаконно.
Когда будет патен тогда будет не законно а в процессе , а это долгий процесс все можно!
Название: Re: Замена Внешних Ссылок
Отправлено: Toptotal от 30.07.22, 03:57:56
Цитата: KrissKross от 26.07.22, 17:54:49Вариант реализации
3 окна - типа 2-ух оконного режима, наподобие всеми любимого ТоталКомандера

1 окно - структура проекта в Компасе
2 окно - файловая структура - существующая
3 окно - файловая структура - измененная
Ну если ТС то он и щас может делать почти все это.
1. структура проека просто делать изначально что где лежит.
Есть к TC плагин "Виртуальная панель"  по сути туда скидыватся как ссылки на файлы, и структуру копировать или виртуально переносить как удобно.
прям там можно работать с файлами.
а изменять можно регулярными выражениями всех файлов или файла пакетно или выборочно.
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 04.08.22, 09:15:54
Доработка программы
Добавлено:
   1. Фильтрация данных в Списке Внешних Ссылок
   2. Поле - Тип файла: Обычный, Локальный, Отсутствует на диске
   3. Удаление выделенных ссылок

Удаление ссылок - полезно для отчистки файла от устаревших ссылок - указывающих на отсутствующие файлы на диске

Заметки:
Иногда в некоторых случаях - для окончательного удаления ссылок
- необходимо перезапустить Компас

Предупреждение:
Рекомендуется сделать копию файла, перед удалением ссылок
Будьте предельно внимательны при удалении - необдуманное применение может привести к повреждению файла

ChangeExternalLink.png

Скачать:
YDisk (https://disk.yandex.ru/d/O6CC6v_fdZRzJw)
ChangeExternalLink.rar
Название: Re: Замена Внешних Ссылок
Отправлено: wellvan от 08.08.24, 10:37:14
Добрый день!
Подскажите, есть ли возможность перекомпилировать ChangeExternalLink под Компас-3D v22?
Буду очень Вам благодарен.
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 18.08.24, 21:51:51
Замена внешних ссылок

Новинки
•   Обновил внешний вид
•   Добавил Описание
•   Перекомпилировал под .Net 8 и Компас-22

Предпосылки
Файлы, созданные программой Компас-3D, кишат наполнены ссылками
И иногда, почти всегда, хотелось бы:
•   Наглядного управления ссылками
•   Изменения ссылок – «в труднодоступных местах»
•   Очистка документа от не нужных или не правильных ссылок

Преимущества – положительные побочные эффекты
•   Нет нужды отдельно менять ссылки в окне переменных.
При замене файла, если он участвует в переменных – будут заменены ссылки и в переменных
•   Для чертежей – если есть стандартные виды и изометрия
при замене файла 3Д модели – произойдет замена во всех видах
•   Для чертежей, имеющих таблицу исполнений
при замене файла 3Д модели – произойдет замена и в таблице исполнений
Стандартными средствами Компаса – этого не достичь, необходимо будет – заново создавать таблицу

Системные требования
.Net 8
Компас-3D v22

Условия использования
Программа распространяется бесплатно, по принципу "как есть".
В результате за проблемы, возникающие в процессе эксплуатации или установки программы,
разработчик ответственности не несёт.

ChangeExternal.png

Скачать программу (https://disk.yandex.ru/d/O6CC6v_fdZRzJw)

Всем мира, добра и созидания!
Название: Re: Замена Внешних Ссылок
Отправлено: sishon от 21.02.25, 02:06:42
Здравствуйте. Программа сможет удалить связи в детали, которые тянутся после копирования из других сборок? И есть ли пример пользования по этой функции? Пробовал наугад, вышло не то что хотелось.
Название: Re: Замена Внешних Ссылок
Отправлено: KrissKross от 21.02.25, 09:39:23
Добрый день!

Функция удаления работает в 21 и ниже версии Компаса
с 22 и выше - не работает

Для удаления мусорных ссылок - пустых и тянущихся как никому не нужное наследие

Можно попробовать обходной путь
1. Создать пустой файл Компаса
2. В программе - Замена внешних ссылок - заменить мусорную ссылка на вновь созданную пустышку
2.1.  88)) после замены - в Компасе - 2 раза перестроить, сохранить и перезапустить исходный файл
3. Удалить пустышку - средствами Компаса

4. при любом исходе - Сообщить о полученных результатах