Откуда берутся системные переменные для новой базы данных?

Автор Тема: Откуда берутся системные переменные для новой базы данных?  (Прочитано 7246 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Создаю новый DXF-файл:
Код - C# [Выбрать]
  1. using Database newdb = new(true, true);
  2. ...
  3. далее копирую в newdb объекты через WblockCloneObjects из старого чертежа.
  4. ...
  5. newdb.DxfOut(fileName, 16, dxfStyle.Ver);
Открываю полученный файл и вижу что там откуда-то настроены все системные переменные как в метрическом миллиметровом чертеже. Возникает вопрос - а откуда это взялось? Почему не имперские стандарты, например? Пробовал настраивать INSUNITSDEFTARGET, но это ничего не дает - в новой базе данных всегда INSUNITS = 4 (миллиметры).
Собственно вопрос возник у пользователя, который хочет чтоб в новом чертеже были стандарты как в старом. Могу скопировать системные переменные через свойства Database. Но не знаю сколько и какие переменные относятся к стандартам. Да и хотелось бы вообще понять логику AutoCAD при создании пустой базы чертежа.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Создаю новый DXF-файл:
Код - C# [Выбрать]
  1. using Database newdb = new(true, true);
  2. ...
  3. далее копирую в newdb объекты через WblockCloneObjects из старого чертежа.
  4. ...
  5. newdb.DxfOut(fileName, 16, dxfStyle.Ver);
Открываю полученный файл и вижу что там откуда-то настроены все системные переменные как в метрическом миллиметровом чертеже. Возникает вопрос - а откуда это взялось? Почему не имперские стандарты, например? Пробовал настраивать INSUNITSDEFTARGET, но это ничего не дает - в новой базе данных всегда INSUNITS = 4 (миллиметры).
Собственно вопрос возник у пользователя, который хочет чтоб в новом чертеже были стандарты как в старом. Могу скопировать системные переменные через свойства Database. Но не знаю сколько и какие переменные относятся к стандартам. Да и хотелось бы вообще понять логику AutoCAD при создании пустой базы чертежа.
Боюсь, что ничего лучше чем создание полной копии базы, а затем удаления всех его элементов не получится. Пустая база создаётся без никакой привязки к шаблонам чертежей.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение avc 06-11-2021, 10:40:05

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
А вообще попробуй такой трюк:
Код - C# [Выбрать]
  1. [CommandMethod("CreateDB")]
  2. public void CreateDB()
  3. {
  4.   Document doc = Application.DocumentManager.MdiActiveDocument;
  5.   if (doc == null) return;
  6.   Editor ed = doc.Editor;
  7.   Database db = doc.Database;
  8.   ObjectIdCollection ids = new ObjectIdCollection();
  9.   using (Database newdb = db.Wblock(ids, Point3d.Origin))
  10.   {
  11.     newdb.DxfOut("C:\\Temp\\test.dxf", 16, DwgVersion.Current);
  12.   }
  13. }

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

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

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Это работает! По крайней мере копируются Measurement, Insunits, Lunits, Luprec, Aunits, Unitmode.
Спасибо!