Bind и возврат назад.

Автор Тема: Bind и возврат назад.  (Прочитано 4856 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Bind и возврат назад.
« : 01-08-2017, 17:03:11 »
Здравствуйте!

В очередной раз обращаюсь за помощью. Хочу пинка в правильном направлении. Опишу задачу: есть файл, с которым работает проектировщик. В определенный момент происходит команда выпуска его чертежа, где делается следующее: файл копируется в некую промежуточную папку и потом когда-нибудь (при окончательном согласовании) он попадает в папку выпуска документации.
В файле есть большое количество XREF и есть желание, чтобы в итоговом файле (который в папке выпуска документации), там были не xref, а блоки, которые получаются при помощи bind.
То есть рабочий файл проектировщика должен остаться у него, но некий файл с bind хрефами должен уйти в выпуск.

2 идеи возникли:
1)Сделать копию файла, положить рядом с основным, там сделать bind и его отправить. Немного запутался тут как работать с БД + необходимо еще взрывать прокси, которые тянутся от Civil 3d.Это делается кодом Александра Ривилиса.
2)Делать bind  в рабочем файле, отправлять и возвращать обратно xref. Тоже прокси надо взрывать

Заранее спасибо за подсказки.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #1 : 01-08-2017, 17:26:23 »
1. Рекомендую исходный файл не трогать. Можно его просто скопировать с новым именем (если он не открыт в редакторе) или сохранить с новым именем (если открыт) , а затем открыть через Database.ReadDwgFile.
2. http://adndevblog.typepad.com/autocad/2012/12/binding-external-references.html - посмотри этот пример использования Database.BindXrefs. Только второй параметр лучше заменить на false, иначе может быть проблема с именами блоков: http://adn-cis.org/razreshenie-konflikta-imyon-pri-svyazyivanii-vneshnej-ssyilki.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Bind и возврат назад.
« Ответ #2 : 01-08-2017, 17:42:15 »
Спасибо за ответ!
А просто через File.Copy() нельзя копировать файл, который открыт в редакторе?
Надо через
Код - C# [Выбрать]
  1. acDoc.Database.SaveAs(strDWGName, true, DwgVersion.Current,acDoc.Database.SecurityParameters);
?
Я просто как раз этот пример и пользую сейчас. В таком случае при подпихивании коду по ссылке http://adndevblog.typepad.com/autocad/2012/12/binding-external-references.html у меня ничего в файле не меняется.
Как мне в данном случае подцепиться к файлу-копии?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #3 : 01-08-2017, 22:55:09 »
А просто через File.Copy() нельзя копировать файл, который открыт в редакторе?
Нет. Во всяком случае до того момента как ты его не сохранишь. Ведь в файле и в редакторе AutoCAD разные состояния если пользователь что-то делал с чертежом.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Denis 04-08-2017, 10:23:16

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #4 : 01-08-2017, 22:59:26 »
В таком случае при подпихивании коду по ссылке http://adndevblog.typepad.com/autocad/2012/12/binding-external-references.html у меня ничего в файле не меняется.
Как мне в данном случае подцепиться к файлу-копии?
Что значит подцепится? Создаёшь Database, в неё сразу читаешь этот файл при помощи Database.ReadDwgFile. Возможно нужно еще Database.ResolveXrefs и Database.CloseInput. Ну и дальше по схеме примера.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Bind и возврат назад.
« Ответ #5 : 04-08-2017, 10:26:16 »
Спасибо за решение.
Необходимо было поставить Database.ResolveXrefs и все заработало.

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Bind и возврат назад.
« Ответ #6 : 09-08-2017, 10:33:55 »
Здравствуйте.
Как прямое продолжение темы.
Подскажите, пожалуйста, можно ли сделать bind еще и на вложенные (nested) xref?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #7 : 09-08-2017, 11:57:36 »
Здравствуйте.
Как прямое продолжение темы.
Подскажите, пожалуйста, можно ли сделать bind еще и на вложенные (nested) xref?
А этот пример не работает: http://adndevblog.typepad.com/autocad/2012/12/binding-external-references.html ?
Если нет, то тебе придётся сделать копии всех файлов, пройтись по всем вложенным внешним ссылкам, заbindдить их, а затем уже заbindдить в основной чертеж.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #8 : 09-08-2017, 12:07:31 »
Так находятся все внешние ссылки: http://adn-cis.org/kak-najti-vse-vneshnie-ssyilki-v-tekushhej-baze-s-pomoshhyu-c.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Bind и возврат назад.
« Ответ #9 : 09-08-2017, 12:18:47 »
Пример работает на Xref, у которых статус Resolve.
Если есть Xref в Xref, один из которых unloaded или unreferenced, то ничего делаться не будет, даже detachXref.

Есть более крамольная мысль: если есть unloaded Хрефы, то взять и загрузить их. Если все чертежи загружены, то все работает прекрасно.
После этого забиндить и выключить слои, которые были принесены из загруженных ненужных хрефов.

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Bind и возврат назад.
« Ответ #10 : 09-08-2017, 12:47:13 »
Ну или удалить блоки, которые принадлежали к ненужным хрефам

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #11 : 09-08-2017, 14:14:39 »
Ну тут зависит от постановки задачи. Но если Xref unreferenced, то (IMHO) его и трогать не нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Bind и возврат назад.
« Ответ #12 : 09-08-2017, 16:44:31 »
В данном случае нужно было, чтобы вообще упоминаний о хрефах не было.
В принципе мне помог пример, который Вы привели по ссылке, но с костылем.
Сначала я прошелся и сделал Detach тех хрефов, статус которых был Unload, Unreferenced и FileNotFound.
Потом сохранил результат и вторым проходом уже биндил те, где статус Resolved.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Bind и возврат назад.
« Ответ #13 : 09-08-2017, 17:45:36 »
В принципе мне помог пример, который Вы привели по ссылке, но с костылем.
Сначала я прошелся и сделал Detach тех хрефов, статус которых был Unload, Unreferenced и FileNotFound.
Потом сохранил результат и вторым проходом уже биндил те, где статус Resolved.
Вполне себе нормальный костыль.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение