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

Блоги

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

  • dows

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

    От dows

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

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

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

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

    doctorraz
    Последняя публикация

    По мотивам видео уважаемого  @MCAD

    Спойлер

     

    Собрал заполнялку форматок СПДС на основе таблиц...

    Коротенько что умеет и зачем...

    1. Заполняет реквизитную часть основных надписей

    Спойлер

    image.png.bb1eb081fccbcb24f20583517a64d91d.png

     

    Но в связи с тем, что в таблицах бага (несколько (много ) отчетов начинают глючить, а мне надо много)

    Эта таблица  заполняет данными другие таблицы..

    Собирает данные с форматов в чертеже (мне надо для статистики по разделам, листов и приведение к А1)

    Заполняет данными  блок с атрибутами (иначе как мне взять полем в текст или мтекст??)

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

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

    Маленькие таблицы:

    непосредственно заполняют основные надписи форматок

    нумеруют форматки (слева направо снизу вверх, можно перенастроить)

    В первом формате ставят количество форматов.

    В маленьких таблицах нужно только  задать область в которой расположен раздел и имя раздела (то что в обозначении после точки... СО, КЖ, Д, Р)

    Спойлер

    image.png.7e4d14d7f36dfeff725a55aa331dba47.png

    Кому интересно качайте шаблончик, включайте скрытые строки и разделы (их там есть), разбирайтесь как это работает и конечно адаптируйте под свои нужды (кто проектирует проект файл)

    Связи можно посмотреть-проверить по SPREFSHOW

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

    Критика только приветствуется))

    ЗЫ возможно чего вспомню еще допишу, но проще раз увидеть

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

    upd перезалил шаблон, чегойто два файла прицепилось)))

     

     

    Автозаполнялка.dwg

  1. Добрый день!:)

    В видео продемонстрированы примеры работы с данными внутри чертежей. В первом видео: поля, комплект документации(подшивки), альбомы СПДС.

    Во втором видео использование таблиц nanoCAD для управления данными внутри чертежа. 

    Спойлер
    Спойлер

     

    Ссылки на файлы из второго видео: Нумерация поля -Номер страницы-.dwg,Нумерация листов.dwg Эти файлы подготовил и предоставил пользователь форума MCAD.

     

    Если хотите поделиться собственными примерами, прикрепляйте их в комментариях к посту. Спасибо ^_^  

     

    Ниже идут ссылки на видео, где вы подробнее можете узнать про:

    Функционал полей в nanoCAD

    Раздел отчетов в таблицах nanoCAD

    Альбомы СПДС

    Добавление пользовательских свойств в комплекте документации

    Редактор форм на примере маркера СПДС

  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 модель и т.д. - функция называется Публикатор. Но тут точно надо читать документацию и думать, что хочешь получить - в рамках краткого ответа на форуме тут не описать все возможности.

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