azaytsev Posted January 23, 2015 Report Share Posted January 23, 2015 (edited) http://habrahabr.ru/company/nanosoft/blog/246511/ К нам в техподдержку часто приходит вопрос: "Как посчитать суммы длин отрезков (участков трубопровода, элементов электрических схем и т.п.) в чертеже?". Существует масса способов решения этой задачи, в сегодняшней публикации мы рассмотрим реализацию приложения на MultiCAD.NET API, суммирующего длины, которое работает в nanoCAD, AutoCAD и ZWCAD. В качестве примера мы возьмем задачу определения суммарной длины труб в схеме водоснабжения и рассмотрим два варианта выбора элементов для подсчета: пользовательский и по созданному фильтру. Edited January 23, 2015 by azaytsev Quote Link to comment Share on other sites More sharing options...
Laziz Posted April 13, 2015 Report Share Posted April 13, 2015 (edited) VS 2013, Nanocad 5.1 Free Скажите пожалуйста, из за чего может не увидет линни находящегося на слое? т.е. слойи находит но не видет линии и полилинии в этих слоях. McObject currObj = currID.GetObject(); // Распознавание типа объекта if (currObj is DbLine) { //...... DbLine всегда дет false } Не знаю какие информаци дать что бы боле понятно обяснить, если что спросите. Спасибо Edited April 14, 2015 by Laziz Quote Link to comment Share on other sites More sharing options...
Laziz Posted April 14, 2015 Report Share Posted April 14, 2015 Свойство объектов Что не так? Quote Link to comment Share on other sites More sharing options...
macrodaemon Posted April 14, 2015 Report Share Posted April 14, 2015 Делайте просто DBLine line = currID.GetObject(); if(line != null) { } Там implicit конверсия и она приведет если тип подходит. или if(currObj.ClassID == DBline.TypeID) В 6 и 7 нанокаде ваша конструкция сработала бы. В 5 нанокаде еще не было приведения к конечному типу объекта и отдавалась реализация McObject, которая при implicit преобразованиях могла привестись в нужны класс. Все улучшается Quote Link to comment Share on other sites More sharing options...
Laziz Posted April 15, 2015 Report Share Posted April 15, 2015 В 6 и 7 нанокаде ваша конструкция сработала бы. В 5 нанокаде еще не было приведения к конечному типу объекта и отдавалась реализация McObject, которая при implicit преобразованиях могла привестись в нужны класс. Все улучшается Благодарю за ответ, теперь боле понятно стало. Желаю скорейшего улучшения! Quote Link to comment Share on other sites More sharing options...
veb786 Posted April 16, 2015 Report Share Posted April 16, 2015 Здравствуйте. Не могли бы вы выложить код данного проекта. Заранее спасибо! Quote Link to comment Share on other sites More sharing options...
Laziz Posted April 16, 2015 Report Share Posted April 16, 2015 Здравствуйте. Не могли бы вы выложить код данного проекта. Заранее спасибо! Код на Хабре есть, ссылка на первом посте! Quote Link to comment Share on other sites More sharing options...
veb786 Posted April 17, 2015 Report Share Posted April 17, 2015 Я все сделал вроде бы как надо, но компилятору не нравится эта строчка ObjectFilter filter = ObjectFilter.Create(true).AddType(typeof(DbLine)).AddType(typeof(DbPolyline)).AddLayer(layerName); , а именно typeof(DbLine). Я считаю что проблема в отсутствующей библиотеки или конфликт имен библиотек, но какой? Quote Link to comment Share on other sites More sharing options...
Laziz Posted April 17, 2015 Report Share Posted April 17, 2015 Я все сделал вроде бы как надо, но компилятору не нравится эта строчка 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); Попробуйте вот так, кажется я так победил эту строку Quote Link to comment Share on other sites More sharing options...
veb786 Posted April 17, 2015 Report Share Posted April 17, 2015 Laziz спасибо, это реально помогло! А еще в nanocad 5.1 не работает эта конструкция: lengthSum += (currObj as DbLine).Line.Length; Сделал костыль: DbLine gg = currObj; lengthSum += gg.Line.Length; Quote Link to comment Share on other sites More sharing options...
AndreySaf Posted July 4, 2018 Report Share Posted July 4, 2018 Сильно не бейте. Где я еще не знаю?: Куда копать-то? Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 5, 2018 Report Share Posted July 5, 2018 using Multicad.Runtime; Возьмите любой пример простой, запустите, чтобы без ошибок было, и его ковыряйте Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.