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

ADN Club => AutoCAD .NET API => Тема начата: Brayan от 10-07-2020, 12:23:56

Название: Определение единиц измерения в dwg файле
Отправлено: Brayan от 10-07-2020, 12:23:56
Как программно (С#) определить, какие в документе приняты единицы измерения, например американские единицы (футы/дюймы)? В меню Автокад это вроде в главном меню задаётся Утилиты>Единицы>Масштаб вставки (_UNITS).
Название: Re: Определение единиц измерения в dwg файле
Отправлено: avc от 10-07-2020, 12:27:21
через системную переменную insunits
Код - C# [Выбрать]
  1. int unit = (Int16)AcadApp.GetSystemVariable("INSUNITS")
Название: Re: Определение единиц измерения в dwg файле
Отправлено: avc от 10-07-2020, 12:29:10
Но пользователи часто не задают единицы вставки. Приходится гадать на основе других системных переменных. Например так:
Код - C# [Выбрать]
  1.  /// <summary>
  2.     /// текущий чертеж дюймовый
  3.     /// </summary>
  4.     internal static bool Inch
  5.     {
  6.       get
  7.       {
  8.         try
  9.         {
  10.           int unit = (Int16)AcadApp.GetSystemVariable("INSUNITS");
  11.           if (unit != 0) return unit == 1;
  12.           if (Convert.ToInt16(AcadApp.GetSystemVariable("LUNITS")) > 2) return true;
  13.           return ((Int16)AcadApp.GetSystemVariable("INSUNITSDEFTARGET") == 1);
  14.         }
  15.         catch
  16.         { return false; }
  17.       }
  18.     }
Название: Re: Определение единиц измерения в dwg файле
Отправлено: Привалов Дмитрий от 10-07-2020, 14:24:39
Но пользователи часто не задают единицы вставки
Сейчас, как правило, они не знают что это такое единицы, переменные, и где посмотреть информацию. Никто не вкладывается в обучение.

Приходится гадать на основе других системных переменных.
стоит анализировать также MEASUREMENT.
Название: Re: Определение единиц измерения в dwg файле
Отправлено: Brayan от 11-07-2020, 13:54:24
через системную переменную insunits
Осталось понять что такое AcadApp)
dynamic acadApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
так не прокатывает
Название: Re: Определение единиц измерения в dwg файле
Отправлено: pavka_97 от 11-07-2020, 14:06:06
А это:
using Autodesk.AutoCAD.ApplicationServices;
есть?
Название: Re: Определение единиц измерения в dwg файле
Отправлено: Brayan от 11-07-2020, 14:16:19
Выдаёт исключение. У меня раньше была такая проблема, когда dll в ссылках была не от той версии ACAD. Но сейчас вроде всё ок. Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ""System.__ComObject" не содержит определения для "GetSystemVariable""
А это:
using Autodesk.AutoCAD.ApplicationServices;
есть?
есть
Название: Re: Определение единиц измерения в dwg файле
Отправлено: Александр Ривилис от 11-07-2020, 21:04:42
Brayan,
1. Обращаешься к AutoCAD из стороннего exe-приложения или из плагина, который грузится внутрь AutoCAD?
2. У avc  AcadApp - это Autodesk.AutoCAD.ApplicationServices.Application, что вроде бы очевидно.
Название: Re: Определение единиц измерения в dwg файле
Отправлено: avc от 11-07-2020, 22:32:59
Осталось понять что такое AcadApp)
Извините, Я подумал, что это очевидно:
Код - C++ [Выбрать]
  1. using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;