Jump to content

dromandon

Пользователи
  • Posts

    568
  • Joined

  • Last visited

  • Days Won

    29

Everything posted by dromandon

  1. Хочу написать гайд по отчётам таблиц, который будет понятен и нагляден. Делаю это в первую очередь для коллег с которыми работаю, но, надеюсь, пригодиться и кому-то ещё. 0. Оговорка Работаю в Нанокад СПДС 6.0 1. Задача Поставим очень простую, но часто встречающуюся задачу - сложить длину объектов - в нашем случае надо будет узнать общую длину всех отрезков в указанной области в определённом слое. 2. Начало работы. Для удобства прикладываю файл, с которым буду работать Отчёт по объектам.dwg Первым делом вызовем таблицу (команды TABLE, ТАБЛИЦА ) Теперь надо выбрать поле "Отчёт по выборке объектов" и нажать кнопку "Выбрать". Появляется меню быстрого выбора. Тут немного остановимся. Давайте разберёмся как им правильно пользоваться в текущей ситуации. Разбираемся в значках - Поиск объектов во всём документе (Модель и листы) - Поиск объектов в текущем листе (либо модели) - Поиск в прямоугольнике - Поиск в текущем наборе - Указать на чертеже (сейчас серым) - Загрузка шаблона - Очистить список условий. Первые два значка ( и ) в принципе вопросов не должны вызывать - при выборе параметров из меню ниже, поиск объектов будет производится во всём чертеже () либо в текущем листе/модели () Что такое "Поиск в прямоугольнике" ( )? При выборе этой опции, будет производится поиск элементов только в указанной области. Область можно задать только одну при этом. При нажатии на кнопку у нас появится возможность задать прямоугольный участок в котором будут выбраны все объекты. Вроде бы удобно, но для первоначального создания отчёта по выборке объектов не рекомендую. Поэтому для первоначального выбора объектов советую использовать - поиск в текущем наборе. Эта опция позволяет выбрать конкретные объекты на чертеже. Теперь, чтобы всё сработало корректно, выходим из создания отчёта (жмём esc), повторяем предыдущие шаги, только вместо выбора объекта с помощью , выбираем . Вас перекинет на чертёж с возможностью выбрать объекты. Выбираем отрезок, но не любой, а сразу тот, который находится в слое "Надо сложить" (жёлтый). И вот почему: Сейчас мы будем настраивать наш поиск. Мы сразу выбрали тип элемента который нам нужен, и поэтому сможем легко настроить наш поиск так, чтобы случайно не захватить другие элементы. Первое - мы выбираем только отрезок - уже есть. Второе - наш отрезок должен быть в определённом слое - добавляем условие - щёлкаем в столбце "Значение" напротив "Слой" и выбираем слой "Надо сложить": В столбце "Условие" выбрался автоматически знак "равно" - само за себя говорящие условие) В значение же выбора слоя из предложенных было всего одно - "Надо сложить" - это благодаря тому, что мы выбрали всего 1 объект. Если бы выбрали несколько объектов в разных слоях, то таких бы вариантов было бы несколько. Фильтр настроили. Теперь важный момент - после первоначальной настройки фильтра повторный выбор объектов с помощью и уже не будет менять фильтр. Так же активируется команда - Указать на чертеже. Попробуем её нажать. Нас возвращает к модели и появляется возможность выбрать объекты. Выберем все элементы на нашем чертеже. Подтвердим выбор. Получаем следующее окно: Что произошло? Мы выбрали все элементы на чертеже, но из-за настроек нашего фильтра в выборку попало лишь 5 отрезков - причём наш фильтр учтиво сообщает нам, то отрезков выбрали мы всего 7, но лишь 5 из них соответствуют нашему условию. Теперь ещё интересней. Нажмём на - Поиск в прямоугольнике. Выбираем так же все элементы на чертеже, только уже с помощью прямоугольника. Видим ту же самую картину: И теперь при нажатие на у нас появляется возможность повторно выбрать область на чертеже. Делаем вывод, что отвечает за повторный выбор элементов ранее указанным способом. Но в чём же отличие между и? С помощью - мы выбираем не объекты, а область чертежа, в котором будем искать объекты. С помощью - мы выбираем конкретные объекты, среди которых будем искать удовлетворяющие нашему фильтру объекты (простите за тавтологию :)) . Когда удобнее что из этого использовать, узнаем дальше. А теперь наконец-то жмём кнопку "ОК". Получаем следующую картину: Меню с галочками - это свойства объекта, которые будут доступны в отчёте. Вначале ставим галочку "Изменять свойства объектов из отчёт" Далее жмём "Ни одного", чтобы снять выбор со всех свойств и выставляем галочку на свойстве "Длина (Length)", так как мы собираемся узнавать длину =) Жмём "ОК" и вставляем полученную таблицу на чертёж. И сразу по двойному клику заходим в неё 3. Работа с отчётом. Наш отчёт: Строка "Шаблон отчёта" позволяет вводить формулы, которые будут применяться ко всем элементам отчёта. Сейчас там у нас строка "=Object.Length", которую можно прочесть так - мы выводим свойства объекта "Object", которое называется "Length" Т.е. для всех наших 5-ти отрезков мы получили по строчке от каждого, содержащего его длину. Если хотите узнать какому отрезку принадлежит то или иное значение, то отведите окно таблицы чуть в сторону, чтобы было видно наш чертёж и тыкните в интересующую вас ячейку: Видим, что зелёным подсветился отрезок, которому соответствует выбранная ячейка отчёта Если тыкнуть в зелёное поле шаблона отчёта, то подсветятся все элементы, которые участвуют в отчёте. Хорошо, у нас есть отчёт, что с ним делать? Нам надо узнать сумму всех отрезков. Самый простой способ - взять калькулятор и сложить то, что мы видим на экране. А если отрезков много? Жмём на надпись "Шаблон отчёта" ЛЕВОЙ кнопкой мыши и выбираем "Итог отчёта" Появляется соответствующая строка в конце нашего отчёта. Правой кнопкой мыши жмём по ней и выбираем "Сумма" Вуаля. Наши длины просуммировались. 4. Наглядная разница в выборах и Нажмём на кнопку - выбрать исходные объекты. Откроется нам уже знакомый фильтр объектов. Увидим вверху, что у нас сейчас выбран - Поиск в прямоугольнике Повторим наш выбор кнопкой и выберем область аккурат по замкнутой полилинии в слое 0 на чертеже: Жмём "ОК", закрываем таблицу Теперь давайте скопируем один из отрезкой внутри нашей выбранной области Теперь зайдём в нашу таблицу. В моей версии отчёт придётся обновить нажав на кнопку обновить вверху окошка, либо нажав на жёлтую лампочку Увидим, что у в отчёте появился дополнительных объект - это копия нашего отрезка Жмём и теперь выбираем все объекты на чертеже с помощью - Поиск в текущем наборе Закрываем таблицу, копируем отрезок ещё раз: При обновлении таблицы видим, что новых объектов не появилось Возвращаемся к тому, что говорилось ранее: С помощью - мы выбираем не объекты, а область чертежа, в котором будем искать объекты. С помощью - мы выбираем конкретные объекты, среди которых будем искать удовлетворяющие нашему фильтру объекты (опять же, извините за тавтологию :)) . Т.е. в первом случае мы выбрали область и работали с объектами в этой области - поэтому при копирование отрезка внутри указанной нами области он добавился в отчёт. Во втором случае мы работали с заранее выбранными объектами, поэтому при добавление нового отрезка на чертёж он никак не учитывался, потому что не входил в изначальный набор Плюсы и минусы обоих способов: 1. Плюс - при добавление объектов в указанную область отчёт обновляется Минус - при копирование таблицы с помощью команды COPY, область не перемещается за таблицей, а остаётся на том же месте (хотя в каких-то случаях это и плюс): BPqBHVrlji.mp4 2.Плюс - при копирование таблицы вместе с объектом отчёта, отчёт будет привязан к скопированному объекту: s1tCO2FDsd.mp4 Минус - при добавление новых объектов на чертёж они ни как не учитываются в нашем отчёте. 5. Работа с формулами. Уже не плохой результат, верно? Можно, казалось бы на этом и остановиться, но. Предположим ситуацию, что нам надо сложить длины отрезков разных слоёв по-отдельности. Для каждого типа делать новую таблицу? Как вариант. Но, предположим, что таких типов будет 30? Тут приходят на помощь формулы и группировка строк. Удалим фильтр наших объектов по слоям. Жмём и в строке "Слой" в значение выбираем "Сброс" Теперь в наш отчёт включены все отрезки, не важно в каком они слое. Добавим столбец (ПКМ по заглавию столбца А -> "Добавить столбец") Теперь в полученном столбце B жмём ПКМ в 1 строке (строка шаблона отчёта) и выбираем из предложенных вариантов Object.Layer(Слой) Получаем информацию для каждого нашего отрезка по-мимо его длины ещё и слой в котором он находится. Теперь заходим в "группировку и объединение" Добавляем правило "Группировать" и закидываем сюда из окошка справа столбец B Видим, что наш отчёт преобразился. Что произошло? Наш отчёт сгруппировался по значениям в столбце B - это значит, что сгруппированные ячейки теперь в себе несут сразу все элементы по тому критерию, по которому мы их сгруппировали. Проверим это, тыкнув на любую из ячеек, чтобы подсветить элементы на чертеже: AdP6b4I4gT.mp4 А теперь магия. Жмём ПКМ по строке шаблона отчёта в столбце А и выбираем "Выражение" Нас перебрасывает в специальное окно, предназначенное для написания формул. Что мы тут видим 1. Наше записанное выражение 2. Подсказки по существующим формулам и выражениям 3. Результат нашего выражения Результат записан несколькими значениями, потому что у наших элементов (отрезков) показатели длины разные. Теперь самое сложное. Вспомним, что мы сгруппировали строки по значениям в столбце B. Т.е. по факту напротив столбца B в столбце А у нас не одно значение, а множество значений элементов, свойства слоя которых соответствуют значению в столбце B. Простыми словами на нашем примере - напротив значение слоя "Надо сложить" в столбце А у нас не одна длина отрезка, которую мы видим, а несколько. Поэтому, если мы запишем нашу формулу не просто как: =Object.Length а как: =sum(Object.Length) В ячейка напротив слоя мы получим значение сумм всех отрезком в данном слое P9YdPrt6Xn.mp4 Как итог "итог отчёта" нам уже и не нужен. Теперь просто наведём красоту и переведём единицы измерения отрезков в метры - разделив на 1000 и округлим до 2-го знака после запятой. Для этого нашу формулу преобразуем в: =round(sum(Object.Length)/1000;2) httVcaAbMw.mp4 Для того, чтобы подробнее узнать как правильно писать ту или иную формулу и что они делают, открываем "Выражение" и смотрим подсказки: urvv7fKfWr.mp4 6. Важное дополнение С помощью отчётов и группировок в этих отчётов можно массово изменять свойства объектов В моей версии продукта это не работает с отрезками, но не исключаю, что в новой уже можно. Это, к сожалению, не работает с примитивами платформы (отрезки, полилинии и т.п.) и нативными свойствами объектов (слой, цвет и т.п.). Я в основном использую для изменения свойств параметрических объектов, а так же атрибутов блоков К примеру - изменения номеров штампов по положения в прострастве чертежа: rSrSnaFeAn.mp4 Так же знаю, что в новых версиях продукта были добавлены функции, которые позволяют автоматически изменять параметры объектов - одно из применений этих функций - это автоматическое обновления позиций объектов, при добавление новых элементов Советую так же, после того, как овладеете отчётами, познакомиться с командами SPTBLPREP - если ввести эту команду и выбрать таблицу, позволит повторно выбрать для этой таблицы объекты отчёта (не надо заходить в редактор таблицы) SPREFSHOW - при выборе таблицы, простроит линии связей между строками отчёта и элементами spDataExtraction - позволяет делать отчёт по элементам находящимся на другом чертеже. А функции SPTBLPLUSFRAME - привязать таблицу к формату SPTBLMINUSFRAME - отвязать таблицу от формата будут в принципе полезны при работе с таблицами. Угол привязки таблицы к формату указываются через свойство таблицы "Угол вставки". На этом всё. Надеюсь смог познакомить вас с отчётами в таблицах. Таблицы нананокад, а особенно эти самые отчёты, - очень мощный инструмент, и при правильном пользование могут сэкономить вам кучу времени. На данный момент, я работаю с нанокадам в течение уже 6-ти лет, и использую таблицы повсеместно - от подсчёта кладки на чертеже, до автоматического заполнения ТЭПов и спецификаций элементов.
  2. Не обнаружил тут функции DrawReference, в свое время обноружение этой функции полностью изменило мой подход к созданию параметрических объектов)
  3. Я и просто за идею не против написать, надо просто собраться и сделать это)
  4. Я сейчас на Revit перебрался) Хотя год назад был бы двумя руками за) Надо бы, пока не забыл как это делать, накатать небольшую статейку, как работает скрипт внутри исполнения параметрики, чтобы знания хоть как-то передать эти) Хотя, боюсь, так и не дойдут руки)
  5. Я, если честно, не пользуюсь частью функционала помещений как раз из-за кривызны реализации)
  6. Ну я как понимаю, он не учитывает проёмы) И сами плинтусы, когда я задаю помещение, мне приходится добавлять, т.е. у меня программа не автоматически их выдаёт с проёмами. Отсюда и косяк - по факту получается, что плинтусы сами вы говорите программе считать по периметру) Неудобно реализовано, конечно =/ Чтобы сделать правильно, придётся сделать манипуляции, как на этом видео
  7. Ну если судить по картинке, то конур помещения 142 я вижу, а контур 143 - нет)я Ну и хорошо бы приложить файл, а не картинку (не старше 2013 версии, пожалуйста)
  8. Хорошая идея, к слову, если постоянно надо иметь в поле зрения нужные объекты) Возьму на заметку!
  9. А кто-нибудь может разъяснить, как правильно пользовать messagebox? Желательно на примере, конечно) Хочу реализовать запрос, при коннекте к объекту, но у меня какой-то неадекват выходит. В справке нашёл следующее: У себя в скрипте написал так: function OnConnect { if(rPart == 0) { if(obj.strTheType == "Дверь" && obj.strTheName == "Дверь не базовая" { SetGeomConstraint(INSERT,CODIRECT,obj,WP1,obj.WP1,0,FALSE); SetParamConstraint(rLengthHole, obj, EXPR, "obj.rLength", FALSE); SetParamConstraint(rWideHole, obj, EXPR, "obj.rWidth", FALSE); NoVectorSelect = 1; sTypeLintelBlocks=2; if(IDNO == MessageBox("Несущая пермычка?", MB_YESNO, MB_ICONQUESTION)) { sTypeLintelBlocks=1; } LintelBlocksAutoSelection(); CenterAll(); Handled = OBJ_HANDLED; }; }; } На что при попытки достать перемычку из базы получаю следующее: D29fP0A2eK.mp4 В чём косяк? Как правильно работать с этой функцией?)
  10. Работаю с цветом фона модели 8 Проблема в том, что если в отчете таблицы нет элементов, цвет появляющегося текста такой же klqJYPhtPs.mp4 Есть ли возможность изменить цвет этого текста?
  11. Ну т.е. надо купить нанодкад плюс и только после этого купить бим) И в стоимость бима сам нанокад не включён) Т.е., если брать цены с сайта, это получается 46,6+134,1=180,7т. рублей постоянная лицензия на 1 место. Или в стоимость бима уже включена платформа? Или не включена? И если ты не дай бог используешь нанокад 20.1, а бим собираешься покупать новой версии, то на 20.1 он у тебя уже не встанет? Как-то очень дорого получается) Или это нормально?)
  12. @MD27, я в загрузки выкладывал несколько параметрических объектов, думаю интересен для вас должен быть объект обрезки прямоугольной, а именно скрипт поведения точек растягивания)
  13. Советую вам открыть справку в программе и по поиску найти нужный вам раздел, касающийся распознавания исполнения) там всё достаточно понятно расписано)
  14. Если я правильно понимаю вопрос, то через образмеренный примитив) если размер не будет ни к чему привязан, он выделится красным) а если к примитиву не будет привязан размер и тот будет неопределенной длины, по появится в бесконечность уходящий красный размер с привязкой от базовой точки до непривязанного конка приметива)
  15. Вопрос. Bim решения нанокада - как они распространяются? Как готовый продукт? Просто, если я правильно понял, это как СПДС - надо купить основную платформу и потом сверху докупить BIM?
  16. Плюсую насчёт задержки лассо Иногда тупит клик и программа думает, что я кнопку держу. Плюс иногда небольшие участки автоматом выделяю с зажатием кнопки (это проще и быстрее, чем дважды кликать). Поэтому возможность поставить задержку на лассо я бы очень хотел увидеть. Для себя бы выставил в секунды две, наверное)
  17. и нано 21 перестал тупить при запуске? с прописанным сервером лицензий и отсутствующей сетевой лицензией? Да) сейчас там везде в реестре прописано @LOCALHOST;C:\ProgramData\Nanosoft\RegWizard\Licenses\
  18. Помогло по сути это решение) Общался с тех поддержкой, сказали изменить следующие строки реестра: 'HKEY_CURRENT_USER\SOFTWARE\FLEXlm License Manager\NANOSOFT_LICENSE_FILE' - 'C:\ProgramData\Nanosoft\RegWizard\Licenses\' 'HKEY_LOCAL_MACHINE\SOFTWARE\FLEXlm License Manager\NANOSOFT_LICENSE_FILE' - 'C:\ProgramData\Nanosoft\RegWizard\Licenses\' 'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FLEXlm License Manager\NANOSOFT_LICENSE_FILE' - 'C:\ProgramData\Nanosoft\RegWizard\Licenses\' После запуска старой версии, пришлось просто повторно указать путь к серверу лицензий и всё норм заработало)
  19. Серзьёзно? Я думал про этот баг давно известно, поэтому не пишу про него, а он из версии в версию всё кочует?) жесть) Выпилили бы уже возможность создавать более одного отчёта, раз починить не могут) Хотя, конечно, лучше починить) @MCAD, к кому обращаться по этому поводу?)
  20. так получилось или задача итоговая не решилась, просто не совсем врубаюсь в неё( Надо пронумеровать скрытые строки? или надо итоговое количество скрытых строк получить?) Или уже ничего не надо?
  21. Если я с реестром не дружу, мне проще сейчас будет снести нанокад и заново установить ужу исправленную версию? Или там реестр надо будет чистить всё равно?
  22. Нашёл, спасибо) Т.е. по сути, без сноса сервера лицензий предыдущего продукта данный тормоз не лечится?
  23. Ребят, скачал себе пробную версию новой платформы уже недели три как, но столкнулся изначально с такой проблемой - очень долгий запуск программы, Жму на ярлык, появляется окно приветствия, а потом проходит порядка 5 минут и только после этого запускается программа. С чем это может быть связано никто не вкурсе? UPD сама программа работает после этого корректно)
×
×
  • Create New...