Перейти к содержанию

MultiCAD.NET: подсчет суммарной длины отрезков на чертеже


Рекомендуемые сообщения

http://habrahabr.ru/company/nanosoft/blog/246511/

6863797343d547c9832314d6d8c4b90f.jpg

 

К нам в техподдержку часто приходит вопрос: "Как посчитать суммы длин отрезков (участков трубопровода, элементов электрических схем и т.п.) в чертеже?". Существует масса способов решения этой задачи, в сегодняшней публикации мы рассмотрим реализацию приложения на MultiCAD.NET API, суммирующего длины, которое работает в nanoCAD, AutoCAD и ZWCAD. В качестве примера мы возьмем задачу определения суммарной длины труб в схеме водоснабжения и рассмотрим два варианта выбора элементов для подсчета: пользовательский и по созданному фильтру.

Изменено пользователем azaytsev
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

VS 2013, Nanocad 5.1 Free

Скажите пожалуйста, из за чего может не увидет линни находящегося на слое?

т.е. слойи находит но не видет линии и полилинии в этих слоях.

 

McObject currObj = currID.GetObject();
 // Распознавание типа объекта
 if (currObj is DbLine)
 {
   //...... DbLine всегда дет false
 }

 

Не знаю какие информаци дать что бы боле понятно обяснить, если что спросите.

Спасибо

Изменено пользователем Laziz
Ссылка на сообщение
Поделиться на другие сайты

Делайте просто

DBLine line = currID.GetObject();

if(line != null)

{

}

Там implicit конверсия и она приведет если тип подходит.

 

или

if(currObj.ClassID == DBline.TypeID)

 

 

В 6 и 7 нанокаде ваша конструкция сработала бы.

 

В 5 нанокаде еще не было приведения к конечному типу объекта и отдавалась реализация McObject, которая при implicit преобразованиях могла привестись в нужны класс.

 

Все улучшается :)

Ссылка на сообщение
Поделиться на другие сайты

 

В 6 и 7 нанокаде ваша конструкция сработала бы.

 

В 5 нанокаде еще не было приведения к конечному типу объекта и отдавалась реализация McObject, которая при implicit преобразованиях могла привестись в нужны класс.

 

Все улучшается :)

Благодарю за ответ, теперь боле понятно стало.

Желаю скорейшего улучшения!

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Не могли бы вы выложить код данного проекта. Заранее спасибо!

Код на Хабре есть, ссылка на первом посте!

Ссылка на сообщение
Поделиться на другие сайты

Я все сделал вроде бы как надо, но компилятору не нравится эта строчка

ObjectFilter filter = ObjectFilter.Create(true).AddType(typeof(DbLine)).AddType(typeof(DbPolyline)).AddLayer(layerName);

, а именно typeof(DbLine).

Я считаю что проблема в отсутствующей библиотеки или конфликт имен библиотек, но какой?

Ссылка на сообщение
Поделиться на другие сайты

Я все сделал вроде бы как надо, но компилятору не нравится эта строчка

ObjectFilter filter = ObjectFilter.Create(true).AddType(typeof(DbLine)).AddType(typeof(DbPolyline)).AddLayer(layerName);

, а именно typeof(DbLine).

Я считаю что проблема в отсутствующей библиотеки или конфликт имен библиотек, но какой?

ObjectFilter filter = ObjectFilter.Create(true).AddType(DbLine.TypeID).AddType(DbPolyline.TypeID).AddType(DbCircle.TypeID).AddType(DbCircArc.TypeID).AddLayer(layerName);

Попробуйте вот так, кажется я так победил эту строку :D

Ссылка на сообщение
Поделиться на другие сайты

Laziz спасибо, это реально помогло!

 

А еще в nanocad 5.1 не работает эта конструкция:

lengthSum += (currObj as DbLine).Line.Length;

 

Сделал костыль:

DbLine gg = currObj;

lengthSum += gg.Line.Length;

Ссылка на сообщение
Поделиться на другие сайты
  • 3 года спустя...

using Multicad.Runtime;

Возьмите любой пример простой, запустите, чтобы без ошибок было, и его ковыряйте :)

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!
  • Похожий контент

    • От Ivanco
      Данная dll выводит список вершин полилинии в таблицу , с помещением таблицы в пространство модели.
      dll позволяет работать с двумя типами линий:
      - полилиния
      -3d полиния(версия 6.0 наноСПДС не поддерживает создание 3d полилиний , но 3d полиния может присутствовать в .dwg созданном в другой САПР).
      Тестировалась на : nanoCADСПДС 6.0(сб.258)x32.
      Команда для запуска: "point_from_pline" , далее читаем командную строку.
      видео демонстрация по
       
      Пожелания, предложения - пишем ниже .
      point_from_pline.7z
    • От Ivanco
      dll написана мной на multicad.net дл задачи объединения таблиц в nanoCAD СПДС 5.4.
      может кому оно надо)
      Команды: summ_all_table -собирает все таблицы с пространства модели и объединяет в одну (помещая ее на чертеж), с возможностью экспорта в файл(.csv, .xls и т.д).Есть возможность обрезать шапку у таблиц при объединении в общую.
      summ_user_table - тоже что и команда выше, но не все таблицы а выбранные пользователем.
      Видео с описанием работы:
      1.на AutoCAD и ZWCAD не тестировалась.
      2.Из минусов:
      - больше 900 строк в таблице конечной - будет "тормозить".
      - нет проверок если вводить неправильные данные в ком.строку.
      WorkToSpdsTable.zip
      ______
      dll для nanoCAD7.0 и nanoCADСПДС 6.0
      WorkToSpdsTable _nc7.zip
      _______
      P.S. если у кого нибудь есть еще задачи с таблицами - пишите в комментариях.
      P.P.S. спасибо "клуб разработчиков" за помощь в написании.
    • От Laziz
      Ест ли возможность загрузит dwg или dxf файл в отдельном программе, без NanoCAD или AutoCAD с помощью MultiCAD.NET?
      Типо вот на этом статье тынц
      Мне нужно:
      1. dwg файл пересохранить на autocad R14.
      2. Показать выбранные линии в отдельном винформе.
       
      Если есть возможность покажите маленький пример пожалуйста, дальше сам попробую разбираться.
      Спасибо!
    • От Laziz
      Доброго времени суток.
      Возможно ли с помощю MultiCAD.NET осуществить сабж?
      Если да:
      1. Как осуществить выбор линии или несколько линии?
      2. Как получить размер выбронного линию или несколько выбранных линии?
      3. И самое главное, если выбран несколько линия как, определить градус поворота второго линя относительно первого?
       
      Спасибо
      Извините за некомпетентность, стараюсь исправиться.
×
×
  • Создать...