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

Блоги

Популярные записи

  • dows

    Как из ARCHICAD сохранить BIM-модель в формате IFC, чтобы в nanoCAD Инженерный BIM пришли помещения?

    От dows

    Часто возникает вопрос со стороны пользователей: Почему из ARCHICAD не приходят помещения? И чаще всего архитекторы забывают отображать помещения в 3D модели при сохранении IFC. Ниже укрупненные шаги, как все-таки подготовить корректные IFC из ARCHICAD. Хотя в общем виде схема универсальна для любых других архитектурных BIM-систем. Итак...   Со стороны ARCHICAD процесс достаточно простой: 1. Замоделировать модель с проработкой помещений (помещения = Зоны, какие параметры задаются
    • 0 комментариев
    • 804 просмотра

Блоги нашего сообщества

  1. Disclaimer сразу оговорюсь, способа узнать ID объекта в платформе пока не существует (по крайней мере мне неизвестно).
    Хотя разработчики могли бы добавить такую возможность, например в утилиту конфигурации. 
     
    Но подставить костылики можно.

    Простой способ открыть в мастере объектов и посмотреть ID не рассматриваем (СПДС, Механик и прочие вертикалки работодатель не купил, а пробник выдохся))))

    _________________________________________________________

     

    Для чего нужен этот ID?

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

    Вот такое выражение для кнопок, менюшек и инструментов:

    ^C^C_stdselected <ID>

     

    для lisp (кстати лисп выражения прекрасно работают в менюшках и инструментах)

    (defun C:ИмяКоманды ()
      (command "spStdSelected" "<ID>")
      (princ)
    ) 

    Что такое этот ID?

    Уникальный идентификатор объекта в базе данных (БД), именно по нему программа узнает какой объект вставить на чертеж.

    Что мы знаем о таблицах и их ID?

    У каждой таблицы в БД есть свой ID:

    1. Если перемещать таблицу внутри базы по "каталогам", ID не изменяется;
    2. Если переименовать таблицу , ID не изменяется;
    3. Если утилитой конфигурации экспортировать таблицу, у экспортированной ID будет такой же;
    4. Если импортировать таблицу в базу, у импортированной будет тот же ID, но
      если в базе таблица с таким ID уже есть она будет перезаписана импортируемой (независимо от имени);
    5. Если в в каталоге базы есть таблица с другим ID, но таким же именем, то при импорте таблица перезаписана не будет ( в этом каталоге будут две одноименные таблицы);
    6. После вставки на чертеж ID у таблицы на чертеже нет;
    7. Если после редактирования на чертеже сохранить в "каталог" базы одноименную таблицу,  ID таблицы которая была в базе не изменится.

    Что дает нам это знание?

    1. Можно сделать экспорт из БД интересующих объектов и попросить имеющих СПДС импортировать их к себе, посмотреть ID,
      вариант рабочий, но далеко не каждый имеет БД для тестов и поэтому вряд ли будет импортировать себе неизвестно, что с риском перезаписать свои объекты;
    2. Можно модифицировать и перезаписать стандартные таблицы из БД (их ID можно посмотреть в инструментах)
      как по мне так себе идея  модифицировать стандартные объекты, при обновлении базы могут перезаписаться опять стандартными;
    3. Можно импортировать в свою БД таблицы с заранее известными ID и в дальнейшем работать с ними

    Суть идеи...

    1. Загружаем в свою базу таблицы отсюда  
      в архиве *.mcd таблицы пустышки, имя таблицы, ее ID;
    2. Импортируем таблицы в свою БД в любое место;
    3. Запоминаем имена-ID таблиц либо сразу привязываем их на кнопки и в инструменты;
    4. В утилите конфигурации переименовываем таблицы, как требуется, там же в утилите можно переместить таблицы в нужные каталоги.
    5. Свои настроенные таблицы из БД вставляем на чертеж (либо настраиваем непосредственно на чертеже)
    6. Сохраняем таблицы с чертежа в БД 
      !!!Важно в тот же каталог и под тем же именем, где лежит таблица пустышка (с заранее известным ID)
      Настроенная таблица перезапишет ту, что в базе, но ID не измениться;
    7. Профит, пользуемся и :prey: разработчикам, что бы они добавили возможность посмотреть ID  в "голую" платформу

    ---------------

    PS Если вдруг кто не в курсе

    Спойлер

    image.png.5210dcae15fde4d1c66586939616e71b.png

     

    Спойлер

    image.thumb.png.29242fbe4d57a5a3d35aa6df63d384fa.png

    Спойлер

    image.png.f228d66e60294bade5e679745996febd.png

    Никак не связаны и не обязательно должны совпадать, 

    • 1
      запись
    • 5
      комментариев
    • 185
      просмотров

    Последние записи

    Понадобилось реанимировать свое старое приложение для работы с полилиниями в nanoCAD.
    Публикую может кому пригодиться.
    Написано на C#/MultiCAD.
    Исходники на GitHub, поставляется "как есть".
    Работоспособность проверена под NC2021.
    Готовая к использованию .dll ка PLL_APP_v05.dll


    Описание возможностей:

    1. По выбранной полилинии: создает таблицу с координатами вершин чертежа.
      Таблица в двух формах обычная и по "кадастровой форме". Плюс экспорт в CSV.
      Учитывается точность координат, есть возможность учитывать/не учитывать UCS и менять местами X/Y.

      pll_app_tables.thumb.gif.a452d9447cf62db616a9cae5500657bd.gif

       
    2. Нумерация вершин. Поддерживается изменение высоты текста и нумерация вершин не с первой позиции.
      Есть ньюанс: на замкнутых "совмещеннных" вершинах, умерация прозводится дважды(пояснение).pll_app_numerate.thumb.gif.f1afc0b8e6cc8d27565f490f1d1a67bb.gif
       
    3. Перенумерация вершин(только для замкнутых полилиний).
      По факту создание новой полилинии, с измененным порядком вершин.
       
    4. Расстановка геометрии по вершинам полилинии.
      Поддерживаются: примитивы, тексты, блоки.
      pll_app_obj_arrange.thumb.gif.e5435e46e8b1021d028b79aab868d8cb.gif
       
    5. Упрощение полилинии(без дуговых сегментов), с заданием максимальной длинны сегмента.
      По факту создается новая полилиния.
      Реверс(без дуговых сегментов).
      Удаление одинаковых вершин.
       

    Расстановка выносок по вершинам полилинии.
    Учитывается точность координат, есть возможность учитывать/не учитывать UCS и менять местами X/Y.pll_app_notes.thumb.gif.c2248570ab207e613b9697bc924512de.gif


     

    Если кто будет пользоватья - пожелания/комментарии здесь или в личку.

  2. Хочу написать гайд по отчётам таблиц, который будет понятен и нагляден.
    Делаю это в первую очередь для коллег с которыми работаю, но, надеюсь, пригодиться и кому-то ещё.

     

    0. Оговорка

    Работаю в Нанокад СПДС 6.0

     

    1. Задача

    Поставим очень простую, но часто встречающуюся задачу - сложить длину объектов - в нашем случае надо будет узнать общую длину всех отрезков  в указанной области в определённом слое.

     

    2. Начало работы.

    Для удобства прикладываю файл, с которым буду работать

    Отчёт по объектам.dwg

     

    Первым делом вызовем таблицу (команды TABLE, ТАБЛИЦА image.png.dd6e4d10af46ccff736e841a691b2880.png) 

    Теперь надо выбрать поле "Отчёт по выборке объектов"

    image.png.0b416829357853fa1b42820a74840677.png

    и нажать кнопку "Выбрать".

    Появляется меню быстрого выбора. Тут немного остановимся.

    image.png.9d3301404413f7ab2b0252eaaa695b6f.png

    Давайте разберёмся как им правильно пользоваться в текущей ситуации.
    Разбираемся в значках image.png.2b2ba5c0950f11a8ee478889e6e03731.png

    image.png.1630faedaf340ae27bd846c7b6e40924.png - Поиск объектов во всём документе (Модель и листы)

    image.png.962a144c4c1b801abeb3b0d37c84b5fc.png - Поиск объектов в текущем листе (либо модели)

    image.png.2f8174bbc6a75ee378d16149420f7e84.png - Поиск в прямоугольнике

    image.png.97fcdc10ab058b99589495f757366e52.png - Поиск в текущем наборе

    image.png.c50b1996b19bad88b2a30c5c1bff850f.png - Указать на чертеже (сейчас серым)

    image.png.03c846f7ea907f1795de1b49621027db.png - Загрузка шаблона

    image.png.6a17aa14baa1b05dc177ce70fa8d74ed.png - Очистить список условий.

    Первые два значка (image.png.1630faedaf340ae27bd846c7b6e40924.png и image.png.962a144c4c1b801abeb3b0d37c84b5fc.png ) в принципе вопросов не должны вызывать - при выборе параметров из меню ниже, поиск объектов будет производится во всём объектов (image.png.1630faedaf340ae27bd846c7b6e40924.png) либо в текущем листе/модели (image.png.962a144c4c1b801abeb3b0d37c84b5fc.png)


    Что такое "Поиск в прямоугольнике" (image.png.2f8174bbc6a75ee378d16149420f7e84.png )? 

    При выборе этой опции, будет производится поиск элементов только в указанной области. Область можно задать только одну при этом. При нажатии на кнопку у нас появится возможность задать прямоугольный участок в котором будут выбраны все объекты. Вроде бы удобно, но для первоначального создания отчёта по выборке объектов не рекомендую.
    А не рекомендую вот почему - выбираем нашу область с отрезками и полилиниями и получаем следующую картину:

    image.png.24c5053c650f7eed98da13b45e2f002f.png

    Выбрались все наши элементы. А нам нужны только отрезки. Но вроде не велика беда, можно выбрать не нужные нам элементы (в данном случае полилинии) и, нажав на "+" убрать их из выборки выбрав строку "(Нет объекта)"

    image.png.432e5431ef6d22da381dfe28e5d3261a.png

     А теперь предположим что мы работаем с реальным чертежом. Задача та же, только в этой же области присутствуют и блоки и размеры и много других элементов которые нам не нужны.
    Нам придётся выбрать каждый из них и удалить подобным образом. Не очень-то и удобно, согласитесь.

    Конечно, мы можем просто нажать image.png.6a17aa14baa1b05dc177ce70fa8d74ed.png  и тем самым удалить все объекты из выбора, а после руками выбрать нужный, но это несколько лишних кликов и затраченное время на поиск нужных параметров из списка.

    Поэтому для первоначального выбора объектов советую использовать image.png.97fcdc10ab058b99589495f757366e52.png - поиск в текущем наборе.

    Эта опция позволяет выбрать конкретные объекты на чертеже.

    Теперь, чтобы всё сработало корректно, выходим из создания отчёта (жмём esc), повторяем предыдущие шаги, только вместо выбора объекта с помощью image.png.2f8174bbc6a75ee378d16149420f7e84.png, выбираем image.png.97fcdc10ab058b99589495f757366e52.png .  Вас перекинет на чертёж с возможностью выбрать объекты.
    Выбираем отрезок, но не любой, а сразу тот, который находится в слое "Надо сложить" (жёлтый). И вот почему:

    image.png.0475d98735bf35d54e5db62b461c4839.png

    Сейчас мы будем настраивать наш поиск. Мы сразу выбрали тип элемента который нам нужен, и поэтому сможем легко настроить наш поиск так, чтобы случайно не захватить другие элементы.

    Первое - мы выбираем только отрезок - уже есть.

    Второе - наш отрезок должен быть в определённом слое - добавляем условие - щёлкаем в столбце "Значение" напротив "Слой" и выбираем слой "Надо сложить":

    image.png.12f52e42c59e416c1c4b54bd3e2234cd.png

    В столбце "Условие" выбрался автоматически знак "равно" - само за себя говорящие условие)

    В значение же выбора слоя из предложенных было всего одно - "Надо сложить" - это благодаря тому, что мы выбрали всего 1 объект. Если бы выбрали несколько объектов в разных слоях, то таких бы вариантов было бы несколько.

     

    Фильтр настроили.
    Теперь важный момент - после первоначальной настройки фильтра повторный выбор объектов с помощью  image.png.2f8174bbc6a75ee378d16149420f7e84.png иimage.png.97fcdc10ab058b99589495f757366e52.png уже не будет менять фильтр. 

    Так же активируется команда image.png.c50b1996b19bad88b2a30c5c1bff850f.png - Указать на чертеже. 

    Попробуем её нажать. 

    Нас возвращает к модели и появляется возможность выбрать объекты. Выберем все элементы на нашем чертеже. Подтвердим выбор.

    Получаем следующее окно:
    image.png.66b9e9bf1ad231591287be332c922d15.png

     

    Что произошло?

    Мы выбрали все элементы на чертеже, но из-за настроек нашего фильтра в выборку попало лишь 5 отрезков - причём наш фильтр учтиво сообщает нам, то отрезков выбрали мы всего 7, но лишь 5 из них соответствуют нашему условию.

     

    Теперь ещё интересней. Нажмём на image.png.2f8174bbc6a75ee378d16149420f7e84.png - Поиск в прямоугольнике. Выбираем так же все элементы на чертеже, только уже с помощью прямоугольника.

    Видим ту же самую картину:

    image.png.35f1328cd0c2927c8707b76085e76485.png

     

    И теперь  при нажатие на image.png.c50b1996b19bad88b2a30c5c1bff850f.png у нас появляется возможность повторно выбрать область на чертеже.

    Делаем вывод, что image.png.c50b1996b19bad88b2a30c5c1bff850f.png отвечает за повторный выбор элементов ранее указанным способом.

    Но в чём же отличие между  image.png.2f8174bbc6a75ee378d16149420f7e84.png иimage.png.97fcdc10ab058b99589495f757366e52.png?

    С помощью  image.png.2f8174bbc6a75ee378d16149420f7e84.png - мы выбираем не объекты, а область чертежа, в котором будем искать объекты.

    С помощью image.png.97fcdc10ab058b99589495f757366e52.png - мы выбираем конкретные объекты, среди которых будем искать удовлетворяющие нашему фильтру объекты (простите за тавтологию :)) .

    Когда удобнее что из этого использовать, узнаем дальше.

    А теперь наконец-то жмём кнопку "ОК".

    Получаем следующую картину:
    image.png.91d3a717619be31141ac63a70f73c2e0.png
    Меню с галочками - это свойства объекта, которые будут доступны в отчёте.

    Вначале ставим галочку "Изменять свойства объектов из отчёт"

    image.png.3cae82ba2abca8d5f2d60c5326cfbb9f.png

    Далее жмём "Ни одного", чтобы снять выбор со всех свойств и выставляем галочку на свойстве "Длина (Length)", так как мы собираемся узнавать длину =)
    Жмём "ОК" и вставляем полученную таблицу на чертёж. И сразу по двойному клику заходим в неё

     

    3. Работа с отчётом.

    Наш отчёт:
     nCad_x5AHHYk8qU.thumb.png.0cf5a1d67648a25ad3a1a5f3a9273a32.png

    Строка "Шаблон отчёта" позволяет вводить формулы, которые будут применяться ко всем элементам отчёта.

    Сейчас там у нас строка "=Object.Length", которую можно прочесть так - мы выводим свойства объекта "Object", которое называется "Length"

    Т.е. для всех наших 5-ти отрезков мы получили по строчке от каждого, содержащего его длину.

     

    Спойлер

    Возвращаясь назад к галочке напротив "Изменять свойства объектов из отчёт".

    Если бы мы ей не поставили, то получили в ячейках выражение следующего вида:

    =Iff(Exist(Object.Length);Object.Length;"")

    Кто знаком с формулами, сразу поймёт суть этого выражения. Это выражение читается как "Если в нашем объекте существует параметр Length, то вывести его, иначе пустая строка".

    Зачем нанокад создаёт такую сложную строку, вместо обычной =Object.Length? Как раз-таки чтобы мы не могли из таблицы изменить параметр "Length".

    Дело вот в чём - некоторые параметры объектов, если в шаблоне они просто выведены не в формуле, можно изменять прямо из таблицы. Я в конце статьи ещё об этом скажу подробнее.

     

    Если хотите узнать какому отрезку принадлежит то или иное значение, то отведите окно таблицы чуть в сторону, чтобы было видно наш чертёж и тыкните в интересующую вас ячейку:

    image.thumb.png.1710d5f5a06aa58acd64c1d313991f0e.png

    Видим, что зелёным подсветился отрезок, которому соответствует выбранная ячейка отчёта

    Если тыкнуть в зелёное поле шаблона отчёта, то подсветятся все элементы, которые участвуют в отчёте.

    Хорошо, у нас есть отчёт, что с ним делать?
    Нам надо узнать сумму всех отрезков. Самый простой способ - взять калькулятор и сложить то, что мы видим на экране.
    А если отрезков много?
    Жмём на надпись "Шаблон отчёта" ЛЕВОЙ кнопкой мыши и выбираем "Итог отчёта"
    image.png.c1224d63741c5814f48924b35f442d27.png

    Появляется соответствующая строка в конце нашего отчёта.

    Правой кнопкой мыши жмём по ней и выбираем "Сумма"

    image.png.ebc5b67d0c8656d6bf36521712699ab7.png

    Вуаля. Наши длины просуммировались.

     

    4. Наглядная разница в выборах image.png.2f8174bbc6a75ee378d16149420f7e84.png иimage.png.97fcdc10ab058b99589495f757366e52.png

    Нажмём на кнопку image.png.02a0b94891ea530872cbf3b05ab6742a.png - выбрать исходные объекты. Откроется нам уже знакомый фильтр объектов.

    Увидим вверху, что у нас сейчас выбран image.png.2f8174bbc6a75ee378d16149420f7e84.png  - Поиск в прямоугольнике

    Повторим наш выбор кнопкой image.png.c50b1996b19bad88b2a30c5c1bff850f.png  и выберем область аккурат по замкнутой полилинии в слое 0 на чертеже:

    image.png.ad289f85c649a4fa9b585b9d87bc2b00.png

     Жмём "ОК", закрываем таблицу

    Теперь давайте скопируем один из отрезкой внутри нашей выбранной области

    3eBFunDJm4.thumb.gif.98b9d95e4fa28e9c3bf76f88dd59d292.gif

     

    Теперь  зайдём в нашу таблицу. В моей версии отчёт придётся обновить нажав на кнопку обновить вверху окошка, либо нажав на жёлтую лампочкуimage.thumb.png.449a4665e3f9154142fa8dafce5bcf24.png

    Увидим, что у в отчёте появился дополнительных объект - это копия нашего отрезка

    Жмём image.png.02a0b94891ea530872cbf3b05ab6742a.png и теперь выбираем все объекты на чертеже с помощью image.png.97fcdc10ab058b99589495f757366e52.png - Поиск в текущем наборе

    tUjGFkrCxL.thumb.gif.3e0c6989b6dbc1a7e21b620a6b4edf4b.gif

     

    Закрываем таблицу, копируем отрезок ещё раз:

    yYEA0oehJH.thumb.gif.f0962279807ca96ceb125e8d8b280818.gif

     

    При обновлении таблицы видим, что новых объектов не появилось

    Возвращаемся к тому, что говорилось ранее:

    С помощью  image.png.2f8174bbc6a75ee378d16149420f7e84.png - мы выбираем не объекты, а область чертежа, в котором будем искать объекты.

    С помощью image.png.97fcdc10ab058b99589495f757366e52.png - мы выбираем конкретные объекты, среди которых будем искать удовлетворяющие нашему фильтру объекты (опять же, извините за тавтологию :)) .

     

    Т.е. в первом случае мы выбрали область и работали с объектами в этой области - поэтому при копирование отрезка внутри указанной нами области он добавился в отчёт.
    Во втором случае мы работали с заранее выбранными объектами, поэтому при добавление нового отрезка на чертёж он никак не учитывался, потому что не входил в изначальный набор
    Плюсы и минусы обоих способов:
    1.image.png.2f8174bbc6a75ee378d16149420f7e84.png Плюс - при добавление объектов в указанную область отчёт обновляется
    Минус - при копирование таблицы с помощью команды COPY, область не перемещается за таблицей, а остаётся на том же месте (хотя в каких-то случаях это и плюс):

    2.image.png.97fcdc10ab058b99589495f757366e52.pngПлюс - при копирование таблицы вместе с объектом отчёта, отчёт будет привязан к скопированному объекту:

    Минус - при добавление новых объектов на чертёж они ни как не учитываются в нашем отчёте.

     

    5. Работа с формулами.

    Уже не плохой результат, верно?
    Можно, казалось бы на этом и остановиться, но.
    Предположим ситуацию, что нам надо сложить длины отрезков разных слоёв по-отдельности. Для каждого типа делать новую таблицу? Как вариант. Но, предположим, что таких типов будет 30?
    Тут приходят на помощь формулы и группировка строк.

    Удалим фильтр наших объектов по слоям.

    Жмём image.png.02a0b94891ea530872cbf3b05ab6742a.png и в строке "Слой" в значение выбираем "Сброс"

    mlBnveaJeJ.thumb.gif.9a70ec14094097fd45824c0d6158aa1a.gif

     

    Теперь в наш отчёт включены все отрезки, не важно в каком они слое.
    Добавим столбец (ПКМ по заглавию столбца А -> "Добавить столбец")

    qUBTgt3QgL.thumb.gif.0f3144c02c81691249761ead1e618169.gif

     

    Теперь в полученном столбце B жмём ПКМ в 1 строке (строка шаблона отчёта) и выбираем из предложенных вариантов Object.Layer(Слой)

    XRyogxjCyu.thumb.gif.49c9e5fa3c28471fc579aaba2466feae.gif

     

    Получаем информацию для каждого нашего отрезка по-мимо его длины ещё и слой в котором он находится.
    Теперь заходим в "группировку и объединение" image.png.5edb2fd0756972d088091865d387c0bd.png   

    Добавляем правило "Группировать" и закидываем сюда из окошка справа столбец B

    YLA786e5Sy.thumb.gif.a1df4d6894500fa087646c34d7209e21.gif

     

    Видим, что наш отчёт преобразился.
    Что произошло?
    Наш отчёт сгруппировался по значениям в столбце B - это значит, что сгруппированные ячейки теперь в себе несут сразу все элементы по тому критерию, по которому мы их сгруппировали.
    Проверим это, тыкнув на любую из ячеек, чтобы подсветить элементы на чертеже:

    Спойлер

    Сейчас для тех, кто ни разу не пользовался группировкой и объединением советую поиграться с этим функционалом и попробовать самостоятельно (и при помощи справки на f1, конечно) разобраться, как им пользоваться

     

    А теперь магия.
    Жмём ПКМ по строке шаблона отчёта в столбце А и выбираем "Выражение"
    XYja18n3fP.thumb.gif.cc0b33a628a944bc7be114edbad7dc05.gif

     

    Нас перебрасывает в специальное окно, предназначенное для написания формул.
    Что мы тут видим
    1. Наше записанное выражение
    2. Подсказки по существующим формулам и выражениям
    3. Результат нашего выражения
    image.png.5ccb17127e20cb6e6f84f4ee27a57562.png

     

    Результат записан несколькими значениями, потому что у наших элементов (отрезков) показатели длины разные. 

    Теперь самое сложное.
    Вспомним, что мы сгруппировали строки по значениям в столбце B.
    Т.е. по факту напротив столбца B в столбце А у нас не одно значение, а множество значений элементов, свойства слоя которых соответствуют значению в столбце B.

     

    Спойлер

    Нанокад же нам показывает только одно значение в столбце А - это нормально, так устроена программа. В дальнейшем, при работе с объектами, чьи значения можно изменять через отчёт (атрибуты блоков, параметры маркеров и параметрических объектов и т.п.), при редактирование этого одного значения, заменяющего множество, мы тем самым редактируем данное значения для каждого объекта, скрытого в этой ячейке


    Простыми словами на нашем примере - напротив значение слоя "Надо сложить" в столбце А у нас не одна длина отрезка, которую мы видим, а несколько.

    image.png.0258cbb38f330845dad68720be292126.png

     

    Поэтому, если мы запишем нашу формулу не просто как:

    =Object.Length

    а как:

    =sum(Object.Length)

    В ячейка напротив слоя мы получим значение сумм всех отрезком в данном слое

     

    Как итог "итог отчёта" нам уже и не нужен.
    Теперь просто наведём красоту и переведём единицы измерения отрезков в метры - разделив на 1000 и округлим до 2-го знака после запятой.
    Для этого нашу формулу преобразуем в:

    =round(sum(Object.Length)/1000;2)

     

    Для того, чтобы подробнее узнать как правильно писать ту или иную формулу и что они делают, открываем "Выражение" и смотрим подсказки:

     

    6. Важное дополнение

    С помощью отчётов и группировок в этих отчётов можно массово изменять свойства объектов
    В моей версии продукта это не работает с отрезками, но не исключаю, что в новой уже можно.

    Это, к сожалению, не работает с примитивами платформы (отрезки, полилинии и т.п.) и нативными свойствами объектов (слой, цвет и т.п.).
    Я в основном использую для изменения свойств параметрических объектов, а так же атрибутов блоков
    К примеру - изменения номеров штампов по положения в прострастве чертежа:

    Так же  знаю, что в новых версиях продукта были добавлены функции, которые позволяют автоматически изменять параметры объектов - одно из применений этих функций - это автоматическое обновления позиций объектов, при добавление новых элементов

     

    Советую так же, после того, как овладеете отчётами, познакомиться с командами 

    SPTBLPREP - если ввести эту команду и выбрать таблицу, позволит повторно выбрать для этой таблицы объекты отчёта (не надо заходить в редактор таблицы)

    SPREFSHOW - при выборе таблицы, простроит линии связей между строками отчёта и элементами

    spDataExtraction  - позволяет делать отчёт по элементам находящимся на другом чертеже.

    А функции 

    SPTBLPLUSFRAME - привязать таблицу к формату 

    SPTBLMINUSFRAME - отвязать таблицу от формата

    будут в принципе полезны при работе с таблицами. Угол привязки таблицы к формату указываются через свойство таблицы "Угол вставки".

     

    На этом всё. Надеюсь смог познакомить вас с отчётами в таблицах. Таблицы нананокад, а особенно эти самые отчёты, -  очень мощный инструмент, и при правильном пользование могут сэкономить вам кучу времени. На данный момент, я работаю с нанокадам в течение уже 6-ти лет, и использую таблицы повсеместно - от подсчёта кладки на чертеже, до автоматического заполнения ТЭПов и спецификаций элементов.

     

     

     

     

     

  3. A.Kudrjashov
    Последняя публикация

    <Каталог>

    <nanoCAD. Программирование и автоматизация>
     

    (Перевод стаей о типах LISP из Справки к AutoCAD 2015 и дополнительная информация специфичная для nanoCAD)

     

    Integer

    AutoCAD 2015. LISP. About Integers

    Integer - это целые числа, которые не содержат десятичной точки. Для хранения целых чисел используется 32 бита. 31 бит используется для хранения числа а один бит для хранения знака числа. Диапазон целых чисел в целом находится в пределах +/- 2^31 или (от - 2 147 483 648 до 2 147 483 647). Как утверждается в Справке к AutoLISP AutoCAD 2015, в некоторых функциях значения Integer интерпретируются как 16-битные чиста в пределах от - 32 678 до 32 677.

     

    Однако, практика показывает, что на данный момент не всё так однозначно.

     

    Например, если в nanoCAD выполнить присвоение переменной числа 2 147 483 647, то вместо ожидаемого максимально возможного целого числа, получим действительное число (REAL). А, при последующем добавлении к нему единицы значение данного действительного числа будет увеличиваться в положительную сторону. При этом, если мы инициируем переменную значением 2 147 483 646, то получим правильную верхнюю границу INT в 2 147 483 647 и переход к отрицательным значениям при последующем прибавлении 1 (единицы).

    Спойлер

    image.png.d7d30f699180e6287f6d5fcfde1195f5.png

     

    Но, если мы инициируем переменную не числом 2 147 483 647, а выражением (setq xInt (- (expt 2 31) 1)), что, казалось бы, должно привести к аналогичному результату, результат получим совершенно другой.

    Спойлер

    image.png.24d723debb4be9f6dbd922f2522a2818.png

     

    Более того, оказывается, что в AutoCAD 2015 и в nanoCAD 20.1 "граница" между INT и REAL в случае выполнения вышеупомянутых арифметических операций и оценке типа переменной при помощи функции type выглядит несколько по разному.

    AutoCAD:

    Спойлер

    image.png.cd01163655f28a3c4710ff12b6c13663.png

     

    nanoCAD:

    Спойлер

    image.png.c4d3859424c04540cfa7d5d3db419ec1.png

     

    Предполагается, что, в случае превышения результата арифметических операций над INT, результат автоматически приводится к REAL. Однако, практика показывает, что это не всегда верно. Рассмотрим две операции сложения и умножения вида:
    1) 384 758 647 * 12 = 4 617 103 764

    2) 384 758 647 + 4 232 345 117 = 4 617 103 764

    Предполагается, что операции будут эквивалентными, но в действительности получаем:

    Спойлер

    image.png.eb02717afa79e0b70a83df521a012f84.png

     

    Резюме. Для корректной работы с целыми числами необходимо быть полностью уверенным, что их значения не выйдут за границы целочисленных значений LISP. Если есть сомнения, то лучше использовать действительные (REAL) числа, осознано преобразовывая их обратно к целочисленным значениям, в случае использования функций, работающих только с INT. Да, это трудоёмко и не всегда удобно, однако, позволит избежать непредсказуемых ошибок преобразования типов, как описанных выше, так и не описанных.

     

    Real

    AutoCAD 2015. LISP. About Reals

    REAL - это действительные числа с десятичной точкой. Числа в диапазоне от -1 до 1 могут содержать 0 (ноль) слева от десятичной точки.

    Значения REAL занимают 64 бита и соответствуют типу double в Си.

    Границы допустимых значений типа REAL примерно от 4.94 x 10-324 до 1.79 x 10308.

    Спойлер

    image.png.b5f6f274fa03663251d2f1914358383e.png

     

    При выходе за эти границы, будет получено значение "Infinity" (бесконечность) или 0.0 (ноль).

     

    Поскольку представленные десятичные числа имеют одинарную точность, то Машинный эпсилон (наименьшее положительное число) ε, при котором не распознаются два числа a и b:

    1 < a/b < 1+ε,  

    ε ≈ 5,96 x 10-8.

     

    Похоже, что Мантисса действительного числа состоит из 7 знаков, включая десятичную точку. И не просто состоит, но записывается в память именно с такой точностью.

    Спойлер

    image.png.0da6b5eece2dc24fee3dc7487dc71144.png

     

    Поскольку в AutoLISP как AutoCAD, так и nanoCAD отсутствуют функции округления из Common LISP, типа round или trancate, прикладываю файл с функциями от Lee Mac.

    http://www.lee-mac.com/round.html

    LM_round.lsp

     

    Что нужно знать про арифметику с плавающей запятой

     

    List

    AutoCAD 2015. LISP. About Lists

    AutoCAD 2015. LISP. About Point Lists

    AutoCAD 2015. LISP. About Dotted Pairs

     

    List - это базовый тип LISP, представляющий собой Списки атомарных элементов и других списков.

     

    Функции, используемые для получения доступа к элементам списков:

    Спойлер

    image.png.b423940c638345f061049ecf45a97bb9.png

     

    Для получения доступа к координатам 2D и 3D точек в точечных списках рекомендуется обращаться не через функцию nth, а через функции: car - для доступа к первой координате, cadr - для доступа ко второй координате и caddr - для доступа к третьей координате.

     

    Функции car и cdr могут последовательно комбинироваться и обеспечивать доступ к атомарным элементам и вложенным спискам иерархического списочного дерева до 4-го уровня вложенности.

    car, cdr .... cddddr

     

    About Entity Context and Coordinate Transform Data

     

     

     

    Обсуждение на форуме.

    2020-10-14 LISP в nanoCAD 20.1
    https://forum.nanocad.ru/index.php?/topic/11617-lisp-v-nanocad-201/&tab=comments#comment-74317

     

     

  4. У вас уже есть готовый проект, выполненный в nanoCAD Механика? Или вы готовы спроектировать 3D-модель или написать отзыв/обзор на программу? Мы ждем ваших конкурсных работ, ведь призы действительно серьезные. В конкурсе нет ограничений: участвовать могут как опытные специалисты, так и студенты.

     

    Что вы можете выиграть?

    Apple Watch, Apple AirPods, Яндекс.Станция мини, фирменные толстовки и футболки nanoCAD.*

     

    Занявшие 1-е место в каждой номинации получат локальную годовую лицензию nanoCAD Plus с модулями nanoCAD Механика и «3D-моделирование и зависимости». Если победитель выступает от лица компании, то такой компании будут предоставлены специальные условия на приобретение лицензии на платформу nanoCAD Plus и указанные модули.

     

    Как принять участие?

    *C полными условиями конкурса можно ознакомиться на сайте nanocad.ru.

     

    Когда подведем итоги? КОНКУРС ПРОДЛЕН
    Конкурсные работы принимаются до 1 февраля 2021.
    Победители во всех номинациях будут объявлены после 1 марта 2021.

     

    pngkit_gears-png_129737.png

     

     

  5. При подготовке задания на проектирование для смежных групп в проектной организации помимо словесной формулировки часто требуется приложить графическое изображение. Прикладывать файл с полным комплектом чертежей во многих случаях нецелесообразно. Разумно будет передать небольшой фрагмент графической информации.


    Для подобных задач в nanoCAD Plus с модулем СПДС есть утилита Экспортировать в файл (SPEXPORTTOFILE). Она позволяет сохранить в файл выбранные объекты чертежа и оформить для них формат и основную надпись (штамп). Читайте дальше

  6. Часто возникает вопрос со стороны пользователей: Почему из ARCHICAD не приходят помещения? И чаще всего архитекторы забывают отображать помещения в 3D модели при сохранении IFC. Ниже укрупненные шаги, как все-таки подготовить корректные IFC из ARCHICAD. Хотя в общем виде схема универсальна для любых других архитектурных BIM-систем. Итак...

     

    Со стороны ARCHICAD процесс достаточно простой:

    1. Замоделировать модель с проработкой помещений (помещения = Зоны, какие параметры задаются для помещений, такие и сохранятся потом в IFC).

    2. Перейти в 3D пространство с отображением зон. Можно отображать поэтажно, можно всю модель - тут как удобнее вам. Если архитектор не знает как в 3D отобразить зоны, то это документация. Либо вот скриншот:

    image.png

     

    3. Сохранить как IFC из 3D окна. В простейшем случае сделать просто Файл\Сохранить как..., выбрать формат IFC и настроить два параметра - Сохранять то, что отображается в 3D + Сохранять через транслятор "Точный экспорт геометрии":

    image.png

     

    В более сложных случаях там можно десятки параметров настроить: полноту передачи информационных данных, формат IFC, папка сохранения. В идеале можно настроить так, что из ARCHICAD будет сохранять в один клик не только один IFC, а куча данных - DWG, Excel таблицы, PDF, IFC по этажам, BIMx модель и т.д. - функция называется Публикатор. Но тут точно надо читать документацию и думать, что хочешь получить - в рамках краткого ответа на форуме тут не описать все возможности.

×
×
  • Создать...