Работа метода clone

Автор Тема: Работа метода clone  (Прочитано 7741 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Работа метода clone
« : 31-03-2019, 22:59:49 »
Если я вызываю метод

Entity.clone();

А потом этот клон хочу добавить в другую базу данных. Должен ли я позаботиться, например, о создании слоя в котором находился примитив?
Или метод добавления в базу данных сделает все сам?
Я помню вроде есть метод SetDefaultDataBase

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа метода clone
« Ответ #1 : 31-03-2019, 23:15:55 »
Или метод добавления в базу данных сделает все сам?
Нет. Тебе нужно делать все самому.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Работа метода clone
« Ответ #2 : 01-04-2019, 00:40:35 »
Если я вызываю метод

Entity.clone();

А потом этот клон хочу добавить в другую базу данных.
Хм... А это сработает? Есть же специальный метод для переноса объектов в другую БД.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Работа метода clone
« Ответ #3 : 01-04-2019, 01:43:45 »
Хм... А это сработает?
Для простейших примитивов - возможно.
Есть же специальный метод для переноса объектов в другую БД.
Вот им и следует воспользоваться: Database.WblockCloneObjects

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Работа метода clone
« Ответ #4 : 01-04-2019, 07:14:23 »
Для простейших примитивов - возможно
А у меня как раз случай когда объекты простой геометрии вставок блоков нет.

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Работа метода clone
« Ответ #5 : 01-04-2019, 07:27:20 »
А у меня как раз случай когда объекты простой геометрии вставок блоков нет.
А почему Database.WblockCloneObjects не хочешь использовать? Ведь даже его бывает недостаточно, например при клонировании блоков.
Или ты хочешь чтобы объект не тащил в новую базу стили и т.д.?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Работа метода clone
« Ответ #6 : 01-04-2019, 10:31:17 »
Ведь даже его бывает недостаточно, например при клонировании блоков.
Почему недостаточно? Были какие-то случаи сбоев?

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Работа метода clone
« Ответ #7 : 01-04-2019, 12:01:19 »
Почему недостаточно? Были какие-то случаи сбоев?
нет, дело не в сбоях.
1. WblockCloneObjects не клонирует порядок прорисовки, по крайней мере в AutoCAD2010. В некоторых блоках это важно, т.к. штриховка(маскировка)  может перекрывать линии.
2. При WblockCloneObjects с параметром replace для динамического блока и блока с атрибутами, этого не достаточно. Т.к. вставки блоков не обновятся полностью.
3. И если ничего не путаю, тут на форуме обсуждали, что вложенные xrecord не клонируется WblockCloneObjects.

наверняка есть еще нюансы.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Работа метода clone
« Ответ #8 : 01-04-2019, 12:37:22 »
1. WblockCloneObjects не клонирует порядок прорисовки, по крайней мере в AutoCAD2010. В некоторых блоках это важно, т.к. штриховка(маскировка)  может перекрывать линии.
Да, точно, я с таким сталкивался при программном переносе блоков из другого чертежа. Есть хитрый манёвр при создании блоков чтобы не было таких проблем: надо создавать объекты в порядке, обратном прорисовке. То есть, например, если в блоке есть штриховка, то её надо создавать в первую очередь. А всё остальное - рисовать поверх неё. В таком случае получается эдакий "врождённый" порядок прорисовки, который не нарушается при переносе блока в другой чертёж. Т.к. я теперь всегда так делаю, то уже забыл, что есть эта особенность :)
С двумя другими проблемами не сталкивался.

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: Работа метода clone
« Ответ #9 : 01-04-2019, 13:00:24 »
Есть хитрый манёвр при создании блоков чтобы не было таких проблем: надо создавать объекты в порядке, обратном прорисовке.
Тоже вариант. Но мне было проще дополнительно скопировать порядок прорисовки в чертеж, т.к. блоки могут создавать разные люди в  разное время.
Благо на этом форуме почти все есть))))
http://adn-cis.org/soxranenie-poryadka-otrisovki-primitivov-pri-operaczii-klonirovaniya-blokov.html