Так что же берется за основу при создании чертежа по этому способу?Ничего. Создается пустая база с настройка по-умолчанию для базы (никак не связанная ни с какими шаблонами).
В идеале, хотелось бы создать копию существующего чертежа, но без примитивов. А потом перенести в нее только нужные примитивы. Но цивилизованного способа для такого я не придумал,А в чем проблема? Database.Wblock в новую базу и удаляешь все примитивы из неё. Тоже вариант.
А в чем проблема? Database.Wblock в новую базу и удаляешь все примитивы из неё.Мне кажется, что это нецивилизованный способ. Если чертеж большой, то много лишней работы нужно будет проделать. К тому же, это чертеж, выполненный в вертикальном решении, перетащится еще куча вспомогательных ненужных данных, вычищать придется долго и кропотливо. А вариант с шаблоном мне все больше и больше нравится - в него можно вносить нужные изменения не затрагивая кода.
В идеале, хотелось бы создать копию существующего чертежа, но без примитивов.А не проще тогда в чистую базу данных (new Db.Database(false, true);) банально импортировать все нужные тебе стили, слои и определения блоков?
Вариант с шаблоном мне все больше и больше нравится - в него можно вносить нужные изменения не затрагивая кода.Если это устоявшийся шаблон - то ты прав. А если сценарий такой: дают чертеж и на основе его нужно сделать шаблон без примитивов - только установленные системные переменные, таблицы слоев, блоков, типов линий и т.д., то вполне себе нормальное решение.
то вполне себе нормальное решение.чем лучше обозначенного в #8?
чем лучше обозначенного в #8?В твоём варианте нужно:
Кода будет явно больше, нужно будет учесть все возможные варианты, и не думаю, что он будет быстрее.А вы предлагаете выполнить общую итерацию, в которой удаляются все Entity?
А вы предлагаете выполнить общую итерацию, в которой удаляются все Entity?Тут тоже возможны варианты. Возможно не нужны примитивы только в ModelSpace, а блоки и примитивы на листах (например рамки и штампы) как раз нужны. Так что всё зависит от постановки задачи.
то могут ли возникнуть такие ситуации, что удалить один объект мы не сможем, пока не будут предварительно удалены некоторые др. объекты, зависящие от него? Т.е. важен ли порядок удаления?Тут проблем быть не должно. Но! Таким образом ты удалишь все примитивы внутри блоков. Т.е блоки окажутся пустыми.
А еще можешь попробовать 4-ый метод:Все, проверил, прекрасно работает! Хочу заметить, что в методе Database.ReadDwgFile нужно указывать полный путь к шаблону, файл в путях поддержки сам не ищется. Хотя, возможно, что это нормально для NET.
Тут проблем быть не должно. Но! Таким образом ты удалишь все примитивы внутри блоков. Т.е блоки окажутся пустыми.А, ну да... :) Нужно выполнять итерацию по модели и листам.
Все, проверил, прекрасно работает!Отлично!
Хочу заметить, что в методе Database.ReadDwgFile нужно указывать полный путь к шаблону, файл в путях поддержки сам не ищется. Хотя, возможно, что это нормально для NET.Это вообще нормально. :)
файл в путях поддержки сам не ищетсяКак вариант (https://sites.google.com/site/bushmansnetlaboratory/moi-zametki/rabota-s-katalogami-poiska).
Ничего. Создается пустая база с настройка по-умолчанию для базы (никак не связанная ни с какими шаблонами).Похоже, что метод Database.Wblock точно так же новый чертеж создает. Вытаскиваю объекты из чертежа этим методом. В результате, в новом чертеже совершенно другие единицы. В исходном метры, в получаемом - футы. Можно как-то эти настройки по умолчанию переопределять?
А, я там новую базу данных так же создаю: new Database(true, false). Понятно, почему "все по умолчанию".Разобрался? Теперь всё нормально?
Подумав, решил создавать полную копию чертежа и вычищать примитивы. Мало ли что потом еще вылезет...:D А ведь я советовал именно это сделать сразу!