Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 31-03-2019, 22:59:49
-
Если я вызываю метод
Entity.clone();
А потом этот клон хочу добавить в другую базу данных. Должен ли я позаботиться, например, о создании слоя в котором находился примитив?
Или метод добавления в базу данных сделает все сам?
Я помню вроде есть метод SetDefaultDataBase
-
Или метод добавления в базу данных сделает все сам?
Нет. Тебе нужно делать все самому.
-
Если я вызываю метод
Entity.clone();
А потом этот клон хочу добавить в другую базу данных.
Хм... А это сработает? Есть же специальный метод для переноса объектов в другую БД.
-
Хм... А это сработает?
Для простейших примитивов - возможно.
Есть же специальный метод для переноса объектов в другую БД.
Вот им и следует воспользоваться: Database.WblockCloneObjects
-
Для простейших примитивов - возможно
А у меня как раз случай когда объекты простой геометрии вставок блоков нет.
-
А у меня как раз случай когда объекты простой геометрии вставок блоков нет.
А почему Database.WblockCloneObjects не хочешь использовать? Ведь даже его бывает недостаточно, например при клонировании блоков.
Или ты хочешь чтобы объект не тащил в новую базу стили и т.д.?
-
Ведь даже его бывает недостаточно, например при клонировании блоков.
Почему недостаточно? Были какие-то случаи сбоев?
-
Почему недостаточно? Были какие-то случаи сбоев?
нет, дело не в сбоях.
1. WblockCloneObjects не клонирует порядок прорисовки, по крайней мере в AutoCAD2010. В некоторых блоках это важно, т.к. штриховка(маскировка) может перекрывать линии.
2. При WblockCloneObjects с параметром replace для динамического блока и блока с атрибутами, этого не достаточно. Т.к. вставки блоков не обновятся полностью.
3. И если ничего не путаю, тут на форуме обсуждали, что вложенные xrecord не клонируется WblockCloneObjects.
наверняка есть еще нюансы.
-
1. WblockCloneObjects не клонирует порядок прорисовки, по крайней мере в AutoCAD2010. В некоторых блоках это важно, т.к. штриховка(маскировка) может перекрывать линии.
Да, точно, я с таким сталкивался при программном переносе блоков из другого чертежа. Есть хитрый манёвр при создании блоков чтобы не было таких проблем: надо создавать объекты в порядке, обратном прорисовке. То есть, например, если в блоке есть штриховка, то её надо создавать в первую очередь. А всё остальное - рисовать поверх неё. В таком случае получается эдакий "врождённый" порядок прорисовки, который не нарушается при переносе блока в другой чертёж. Т.к. я теперь всегда так делаю, то уже забыл, что есть эта особенность :)
С двумя другими проблемами не сталкивался.
-
Есть хитрый манёвр при создании блоков чтобы не было таких проблем: надо создавать объекты в порядке, обратном прорисовке.
Тоже вариант. Но мне было проще дополнительно скопировать порядок прорисовки в чертеж, т.к. блоки могут создавать разные люди в разное время.
Благо на этом форуме почти все есть))))
http://adn-cis.org/soxranenie-poryadka-otrisovki-primitivov-pri-operaczii-klonirovaniya-blokov.html