Сообщество программистов Autodesk в СНГ

ADN Club => Адаптация AutoCAD и вертикальных приложений => Тема начата: I_stiv от 15-07-2019, 17:32:28

Название: утилита для переопределения блоков
Отправлено: I_stiv от 15-07-2019, 17:32:28
Добрый день.

может кто нибудь скомпилировать это под AutoCAD 2015 x64?
https://sites.google.com/site/bushmansnetlaboratory/sendbox/stati/multipleattsync

Задача в целом такая: AutoCAD 2015. есть дин.блоки которые часто используются (в т.ч. форматки) в них многострочные атрибуты полями.
которые по неведомым причинам (перечетал и перепробовал кучу способов) иногда переодически слетают. Т.е. атрибуты меняют свое место положение относительно блока.
Сейчас правим руками , используя Design Center, переопределяя блок . Однако, это конечно долго и не продуктивно.
Прочитал описание, однако не факт что эта разработка поможет в этом случае.
может кто поделиться опытом как бороться с проблемой выше (кроме , обновить AutoCAD...) или поможет перекомпилить утилиту. Спасибо за любой совет по теме.

Название: Re: утилита для переопределения блоков
Отправлено: Александр Ривилис от 15-07-2019, 17:38:45
Рекомендую обратиться к автору: Андрей Бушман (http://adn-cis.org/forum/index.php?action=profile;u=78)
Делать что-то с его программой без него самого я считаю не этичным.
Название: Re: утилита для переопределения блоков
Отправлено: Андрей Бушман от 15-07-2019, 18:40:46
Доброго времени суток.

К сожалению, я ничем не смогу вам помочь, т.к. уже несколько лет не пишу код ни под AutoCAD, ни под Revit (они у меня даже не установлены). На обозначенной странице присутствует ссылка на файлы исходного кода. Если этот код сможет быть кому-то полезен - я буду этому только рад. Вы можете совершенно спокойно скачивать эти исходники и редактировать их по своему усмотрению.

С уважением, Андрей.
Название: Re: утилита для переопределения блоков
Отправлено: Привалов Дмитрий от 18-07-2019, 23:12:51
Сейчас правим руками , используя Design Center, переопределяя блок . Однако, это конечно долго и не продуктивно.
Прочитал описание, однако не факт что эта разработка поможет в этом случае.
Утилита должна помочь, но нужно иметь AutoCAD2015 чтобы ее собрать и проверить.

Если блоков не много и случаи с атрибутами редки, можешь попробовать варианты без данной утилиты:
Помимо Design Center блоки можно разместить в инструментальной палитре и по правой клавише нажать переопределить. Получится немного быстрее и удобнее, чем через Design Center, но по прежнему по одному блоку.
Есть еще команда _attsync которая иногда помогает.
Еще можно вызвать диспетчер атрибутов блока _battman и попробовать кнопку "Обновить"

Название: Re: утилита для переопределения блоков
Отправлено: I_stiv от 19-07-2019, 18:33:19
AutoCAD 2015 у меня есть. вот skills все это пересобрать нет. там какие то COM библиотеки, плюс Stimulsoft либы для интерфейса(они же вроде платные)... Вообщем автор , не против (см.выше), так что просьба в силе.

по поводу проблемы, думаю еще над таким варинтом.
Скрипт пакетно:
- берем удаляем все блоки "штамп" (по факту в нем проблема)
- запоминаем базовую точку
- чистим
- вставляем блок из файла используя точки из шага один.
м.б. такой вариант более работоспособен, и менее проблемен с точки зрения кода.
Название: Re: утилита для переопределения блоков
Отправлено: Александр Ривилис от 19-07-2019, 20:42:28
Вообщем автор , не против (см.выше), так что просьба в силе.
Я пересобрал, но абсолютно не тестировал. Если не запустится - ничем помочь не смогу...
Название: Re: утилита для переопределения блоков
Отправлено: I_stiv от 22-07-2019, 05:22:11
Я пересобрал, но абсолютно не тестировал. Если не запустится - ничем помочь не смогу...
спасибо большое. утилита грузится , интерфейс работоспособен, но не работает основная функция. Ошибка "eFileSharingViolation" - при выполнении основной функции.
Вероятно какие то изменения в API. Некие сведения об этой ошибке гуглятся https://forums.autodesk.com/t5/net/database-save-quot-efilesharingviolation-quot/td-p/3386171 (https://forums.autodesk.com/t5/net/database-save-quot-efilesharingviolation-quot/td-p/3386171).
Не могли бы Вы выложить проект пересобранный?  я попробую починить используя отладку. 
Название: Re: утилита для переопределения блоков
Отправлено: Александр Ривилис от 22-07-2019, 10:07:17
Понадобится ObjectARX SDK 2015: http://download.autodesk.com/esd/objectarx/2015/Autodesk_ObjectARX_2015_Win_64_and_32_Bit.exe
Название: Re: утилита для переопределения блоков
Отправлено: I_stiv от 29-08-2019, 11:08:19
данное приложение решило мою проблему рассинхронизации атрибутов (т.е. изменения положения многострочных атрибутов в ACAD 2015).

Однако пришлось немного "допилить".
https://adndevblog.typepad.com/autocad/2012/04/batch-process-in-memory-1.html (https://adndevblog.typepad.com/autocad/2012/04/batch-process-in-memory-1.html)- суть проблемы.
сделал так как в ссылке (т.е. SaveAs в Tmp , а затем копирование с заменой) - и скрипт заработал :)

Код - C# [Выбрать]
  1. string tempFileName = Path.GetTempFileName();// временное имя
  2. targetDb.SaveAs(tempFileName, DwgVersion.Current);// это строка в конец  транзакции записи
  3. // заменяем файлы после закрытия транзакции
  4. File.Copy(tempFileName, item.FullName, true);
  5. File.Delete(tempFileName);
  6.  

Спасибо автору  Андрей Бушман приложения и Александр Ривилис за пересборку.
Вопрос закрыт.
Название: Re: утилита для переопределения блоков
Отправлено: Alexsandr_13 от 20-09-2019, 00:15:56
Здравствуйте. А эту программу можно скомпилировать под AutoCAD 2018 x64. Пробовал запускать из архива BlockSync.zip. Запускается, но после выбора параметров и запуска на исполнение выдает ошибку...

(https://i.ibb.co/QrvbgBq/1.png) (https://imgbb.com/)
Название: Re: утилита для переопределения блоков
Отправлено: Александр Ривилис от 20-09-2019, 10:37:19
Alexsandr_13,
Попробуй этот вариант. Я его не тестировал. Только внёс правки, которые подсказал I_stiv и перекомпилировал для AutoCAD 2018 x64.
Название: Re: утилита для переопределения блоков
Отправлено: Alexsandr_13 от 20-09-2019, 10:53:35
Александр Ривилис спасибо большое. Работает замечательно.