Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: avc от 05-11-2021, 23:32:38

Название: Откуда берутся системные переменные для новой базы данных?
Отправлено: avc от 05-11-2021, 23:32:38
Создаю новый 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 при создании пустой базы чертежа.
Название: Re: Откуда берутся системные переменные для новой базы данных?
Отправлено: Александр Ривилис от 06-11-2021, 00:32:21
Создаю новый 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 при создании пустой базы чертежа.
Боюсь, что ничего лучше чем создание полной копии базы, а затем удаления всех его элементов не получится. Пустая база создаётся без никакой привязки к шаблонам чертежей.
Название: Re: Откуда берутся системные переменные для новой базы данных?
Отправлено: Александр Ривилис от 06-11-2021, 00:44:17
А вообще попробуй такой трюк:
Код - 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. }

Не у верен что все, но многие системные переменные копируются в выходную базу данных.
Название: Re: Откуда берутся системные переменные для новой базы данных?
Отправлено: avc от 06-11-2021, 10:41:33
Это работает! По крайней мере копируются Measurement, Insunits, Lunits, Luprec, Aunits, Unitmode.
Спасибо!