Определение единиц измерения в dwg файле

Автор Тема: Определение единиц измерения в dwg файле  (Прочитано 3590 раз)

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

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

  • ADN OPEN
  • Сообщений: 24
  • Карма: 1
Как программно (С#) определить, какие в документе приняты единицы измерения, например американские единицы (футы/дюймы)? В меню Автокад это вроде в главном меню задаётся Утилиты>Единицы>Масштаб вставки (_UNITS).

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
через системную переменную insunits
Код - C# [Выбрать]
  1. int unit = (Int16)AcadApp.GetSystemVariable("INSUNITS")

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Но пользователи часто не задают единицы вставки. Приходится гадать на основе других системных переменных. Например так:
Код - 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.     }

Онлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 533
  • Карма: 117
Но пользователи часто не задают единицы вставки
Сейчас, как правило, они не знают что это такое единицы, переменные, и где посмотреть информацию. Никто не вкладывается в обучение.

Приходится гадать на основе других системных переменных.
стоит анализировать также MEASUREMENT.

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

  • ADN OPEN
  • Сообщений: 24
  • Карма: 1
через системную переменную insunits
Осталось понять что такое AcadApp)
dynamic acadApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
так не прокатывает

Оффлайн pavka_97

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
А это:
using Autodesk.AutoCAD.ApplicationServices;
есть?

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

  • ADN OPEN
  • Сообщений: 24
  • Карма: 1
Выдаёт исключение. У меня раньше была такая проблема, когда dll в ссылках была не от той версии ACAD. Но сейчас вроде всё ок. Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ""System.__ComObject" не содержит определения для "GetSystemVariable""
А это:
using Autodesk.AutoCAD.ApplicationServices;
есть?
есть

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Brayan,
1. Обращаешься к AutoCAD из стороннего exe-приложения или из плагина, который грузится внутрь AutoCAD?
2. У avc  AcadApp - это Autodesk.AutoCAD.ApplicationServices.Application, что вроде бы очевидно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 805
  • Карма: 166
    • Мои плагины к Автокаду
Осталось понять что такое AcadApp)
Извините, Я подумал, что это очевидно:
Код - C++ [Выбрать]
  1. using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;