Вставка блока из другого чертежа

Автор Тема: Вставка блока из другого чертежа  (Прочитано 30729 раз)

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

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Вставка блока из другого чертежа
« Ответ #30 : 19-01-2015, 14:49:37 »
Попробую решить свою проблему, поставив VirtualBox.
Отделять мух от котлет - вообще правильное решение (имхо).

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Вставка блока из другого чертежа
« Ответ #31 : 19-01-2015, 15:27:52 »
Попробую решить свою проблему, поставив VirtualBox.
Если на существующие проблемы не наложатся проблемы совместимости с AutoCAD и Visual Studio.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Вставка блока из другого чертежа
« Ответ #32 : 19-01-2015, 16:06:09 »
Можно еще студию 2012 поставить, но нужно работать в облаке, поэтому и выбрали версию 2013 года.
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

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

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Вставка блока из другого чертежа
« Ответ #33 : 21-01-2015, 15:33:46 »
На виртуальной машине все работает, я рад :)
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Максим Маркевич

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Вставка блока из другого чертежа
« Ответ #34 : 06-10-2016, 18:58:08 »
Более доверительный источник.
Это не совсем оно. При помощи этого кода копируются описания блоков из другого чертежа, в текущий. Можно конечно попробовать так и с ModelSpace, но IMHO это не лучший вариант.
Александр Ривилис, а почему не лучший? Можно поподробнее?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Вставка блока из другого чертежа
« Ответ #35 : 06-10-2016, 19:12:35 »
Александр Ривилис, а почему не лучший? Можно поподробнее?
Нужно поэкспериментировать что получится. По логике в пространство модели базы-приёмника докопируются примитивы пространства модели базы-источника. Это вроде не то, что хотел получить автор.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Re: Вставка блока из другого чертежа
« Ответ #36 : 29-05-2019, 06:45:50 »
в чертеже 1 блок = чертеж
А если в чертеже куча блоков, как вставку выполнить? Одна из перегрузки метода Database.Insert() первым параметром просит blockName. Когда я вставляю имя вставки блока (например, "Светильник потолочный светодиодный"), то происходит исключение eSelfReference

Наверное, мне сюда.
Более доверительный источник.
Если нет, то help.
« Последнее редактирование: 29-05-2019, 08:35:09 от dmitrymaslakov »

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Вставка блока из другого чертежа
« Ответ #37 : 29-05-2019, 08:42:19 »
А если в чертеже куча блоков, как вставку выполнить?
Смотря что ты имеешь ввиду под вставкой кучи блоков.

используй WblockCloneObjects для подгрузки блоков(BlockTableRecord) в чертеж
 на этом форуме много примеров

Для вхождения блоков (BlockReference) возможны варианты.
Можешь склонировать один или все из исходного чертежа с помощью WblockCloneObjects, а потом модифицировать
Создавать для каждого нужного BlockTableRecord  BlockReference и вставлять.

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Re: Вставка блока из другого чертежа
« Ответ #38 : 29-05-2019, 09:20:28 »
В моём файле (source) есть несколько BlockReference одного динамического блока(BlockTableRecord). Эти вхождения я хотел бы копировать и вставлять без открытия файла source. Поиграю с WblockCloneObjects

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Вставка блока из другого чертежа
« Ответ #39 : 29-05-2019, 09:40:42 »
В моём файле (source) есть несколько BlockReference одного динамического блока(BlockTableRecord). Эти вхождения я хотел бы копировать и вставлять без открытия файла source. Поиграю с WblockCloneObjects
У тебя возникнет множество нюансов, но на форуме все есть для решения.
Тут важен сценарий вставки:
1. Где лежат блоки, предполагаю что в ModelSpace
1. Если вставляешь по одному BlockTableRecord, то придется определить какой BlockTableRecord  тебе нужен в данный момент из ModelSpace.  Определить его видимость, атрибуты или динамические свойства. Но можешь использовать имена анонимных блоков типа *U31 для поиска нужного.
2. Склонировать BlockTableRecord с помощью WblockCloneObjects в нужное пространство. Скорее всего в текущее пространство.
3. Изменить координаты, если надо.

С помощью TransformBy() без пользователя

через указание точки вставки пользователем PromptPointResult

или более сложно, через Jig
https://through-the-interface.typepad.com/through_the_interface/2009/03/jigging-an-autocad-block-with-attributes-using-net.html

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Re: Вставка блока из другого чертежа
« Ответ #40 : 29-05-2019, 09:46:18 »
Спасибо, Дмитрий. Буду изучать.