Блоги
Популярные записи
-
Как из ARCHICAD сохранить BIM-модель в формате IFC, чтобы в nanoCAD Инженерный BIM пришли помещения?
От dows
Часто возникает вопрос со стороны пользователей: Почему из ARCHICAD не приходят помещения? И чаще всего архитекторы забывают отображать помещения в 3D модели при сохранении IFC. Ниже укрупненные шаги, как все-таки подготовить корректные IFC из ARCHICAD. Хотя в общем виде схема универсальна для любых других архитектурных BIM-систем. Итак... Со стороны ARCHICAD процесс достаточно простой: 1. Замоделировать модель с проработкой помещений (помещения = Зоны, какие параметры задаются- 0 комментариев
- 223 просмотра
Блоги нашего сообщества
-
- 22
записи - 3
комментария - 752
просмотра
Последние записи
- 22
-
- 8
записей - 7
комментариев - 496
просмотров
Последние записи
Последняя публикация
Отзеркаливание текста в параметрическом объекте (Модуль СПДС) (2)
В продолжение этого урока "Отзеркаливание текста в параметрическом объекте"
Работать будем с получившимся объектом в предыдущем уроке и будем его упрощать и дорабатывать.
На самом деле, действий не так много придётся совершить =) Благодаря случайности обратил внимание, что у всех объектов разница углов между vecDirection и осью oZ, и vecPlane и осью o Z будет всегда равна 90 градусов. Только у неотзеркаленых она положительная,А у отзеркаленых - отрицательная
Давайте проверим это и добавим два параметра в наш объект:
rAngleZ1, "Угол Z (Direction)", rAngleZ2, "Угол Z (Plane)",
Так же добавим их в функцию MirrorObject:
rAngleZ1 = angleTwoPi(vecDirection,oZ); rAngleZ2 = angleTwoPi(vecPlane,oZ);
и закомментируем наши rAngleX и rAngleY в функции MirrorObject, чтобы не производилось отзеркаливание объекта.
Достаём объект из базы, поворачиваем его всячески и зеркалим, убеждаясь в словах выше:
СпойлерВидим, что по-мимо углов в 90 и -90 градусов присутствует углы в -270 и 270 градусов соответственно, причина этому то, что когда величина угла достигает 360 градусов она сбрасывается на 0, и получается, что 10-280=-270,но при этом 370-280=90.
Не забываем отразить это в нашем коде.
Для удобства в функции MirrorObject добавим переменную a равную a=rAngleZ1-rAngleZ2
Пишем в функции MirrorObject:
rAngleZ1 = angleTwoPi(vecDirection,oZ); rAngleZ2 = angleTwoPi(vecPlane,oZ); a=rAngleZ1-rAngleZ2; if(a==-90 || a==270) { vecDirection=-vecDirection; }
Теперь наш объект зеркалится обратно, но остаётся проблема с поворотом текста
Для поворота текста будем работать с переменной rAngleY, "Угол Y", поэтому надо её расскомментировать.
Теперь обновляем наши объекты и определяем уже не точные значения, а промежуток, в котором нам надо развернуть текст на 180 градусов.
У меня он получился от 90<rAngleY<=270
Исходя из этого, обновляем нашу функцию следующим образом, тем самым приводя её к итоговому виду
rAngleY = angleTwoPi(oY,vecPlane); rAngleZ1 = angleTwoPi(vecDirection,oZ); rAngleZ2 = angleTwoPi(vecPlane,oZ); a=rAngleZ1-rAngleZ2; sTextAngle=0; if(a==-90 || a==270) { vecDirection=-vecDirection; } if(rAngleY>90 && rAngleY<=270) { sTextAngle=180; }
Обновляем наши объекты и наслаждаемся результатом =)
Как результат наших доработок можно отметить не только более изящный код, но и отсутствие привязок к определенному углу поворота объекта - теперь даже при повороте на условные 37.93 градуса и отзеркаливание, наш объект всё равно корректно отобразит имеющийся текст.
- Читать далее...
-
- 0 комментариев
- 8
-
- 20
записей - 3
комментария - 816
просмотров
Последние записи
Последняя публикация
nanoCAD. LISP. Типы данных
<Каталог>
<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 (единицы).
СпойлерНо, если мы инициируем переменную не числом 2 147 483 647, а выражением (setq xInt (- (expt 2 31) 1)), что, казалось бы, должно привести к аналогичному результату, результат получим совершенно другой.
СпойлерБолее того, оказывается, что в AutoCAD 2015 и в nanoCAD 20.1 "граница" между INT и REAL в случае выполнения вышеупомянутых арифметических операций и оценке типа переменной при помощи функции type выглядит несколько по разному.
AutoCAD:
СпойлерnanoCAD:
СпойлерПредполагается, что, в случае превышения результата арифметических операций над INT, результат автоматически приводится к REAL. Однако, практика показывает, что это не всегда верно. Рассмотрим две операции сложения и умножения вида:
1) 384 758 647 * 12 = 4 617 103 7642) 384 758 647 + 4 232 345 117 = 4 617 103 764
Предполагается, что операции будут эквивалентными, но в действительности получаем:
СпойлерРезюме. Для корректной работы с целыми числами необходимо быть полностью уверенным, что их значения не выйдут за границы целочисленных значений 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.
СпойлерПри выходе за эти границы, будет получено значение "Infinity" (бесконечность) или 0.0 (ноль).
Поскольку представленные десятичные числа имеют одинарную точность, то Машинный эпсилон (наименьшее положительное число) ε, при котором не распознаются два числа a и b:
1 < a/b < 1+ε,
ε ≈ 5,96 x 10-8.
Похоже, что Мантисса действительного числа состоит из 7 знаков, включая десятичную точку. И не просто состоит, но записывается в память именно с такой точностью.
СпойлерПоскольку в AutoLISP как AutoCAD, так и nanoCAD отсутствуют функции округления из Common LISP, типа round или trancate, прикладываю файл с функциями от Lee Mac.
http://www.lee-mac.com/round.html
Что нужно знать про арифметику с плавающей запятой
List
AutoCAD 2015. LISP. About Lists
AutoCAD 2015. LISP. About Point Lists
AutoCAD 2015. LISP. About Dotted Pairs
List - это базовый тип LISP, представляющий собой Списки атомарных элементов и других списков.
Функции, используемые для получения доступа к элементам списков:
СпойлерДля получения доступа к координатам 2D и 3D точек в точечных списках рекомендуется обращаться не через функцию nth, а через функции: car - для доступа к первой координате, cadr - для доступа ко второй координате и caddr - для доступа к третьей координате.
Функции car и cdr могут последовательно комбинироваться и обеспечивать доступ к атомарным элементам и вложенным спискам иерархического списочного дерева до 4-го уровня вложенности.
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- Читать далее...
-
- 0 комментариев
- 20
-
- 2
записи - 2
комментария - 219
просмотров
Последние записи
Последняя публикация
Конкурс «Лучший в машиностроении»
У вас уже есть готовый проект, выполненный в nanoCAD Механика? Или вы готовы спроектировать 3D-модель или написать отзыв/обзор на программу? Мы ждем ваших конкурсных работ, ведь призы действительно серьезные. В конкурсе нет ограничений: участвовать могут как опытные специалисты, так и студенты.
Что вы можете выиграть?
Apple Watch, Apple AirPods, Яндекс.Станция мини, фирменные толстовки и футболки nanoCAD.*
Занявшие 1-е место в каждой номинации получат локальную годовую лицензию nanoCAD Plus с модулями nanoCAD Механика и «3D-моделирование и зависимости». Если победитель выступает от лица компании, то такой компании будут предоставлены специальные условия на приобретение лицензии на платформу nanoCAD Plus и указанные модули.
Как принять участие?
*C полными условиями конкурса можно ознакомиться на сайте nanocad.ru.
Когда подведем итоги? КОНКУРС ПРОДЛЕН
Конкурсные работы принимаются до 1 февраля 2021.
Победители во всех номинациях будут объявлены после 1 марта 2021. - 2
-
- 5
записей - 7
комментариев - 318
просмотров
Последние записи
Последняя публикация
Утилиты nanoCAD СПДС. Экспорт в файл, работа с графикой СПДС
При подготовке задания на проектирование для смежных групп в проектной организации помимо словесной формулировки часто требуется приложить графическое изображение. Прикладывать файл с полным комплектом чертежей во многих случаях нецелесообразно. Разумно будет передать небольшой фрагмент графической информации.
Для подобных задач в nanoCAD Plus с модулем СПДС есть утилита Экспортировать в файл (SPEXPORTTOFILE). Она позволяет сохранить в файл выбранные объекты чертежа и оформить для них формат и основную надпись (штамп). Читайте дальше- Читать далее...
-
- 0 комментариев
- 5
-
- 2
записи - 4
комментария - 371
просмотр
Последние записи
Часто возникает вопрос со стороны пользователей: Почему из ARCHICAD не приходят помещения? И чаще всего архитекторы забывают отображать помещения в 3D модели при сохранении IFC. Ниже укрупненные шаги, как все-таки подготовить корректные IFC из ARCHICAD. Хотя в общем виде схема универсальна для любых других архитектурных BIM-систем. Итак...
Со стороны ARCHICAD процесс достаточно простой:
1. Замоделировать модель с проработкой помещений (помещения = Зоны, какие параметры задаются для помещений, такие и сохранятся потом в IFC).
2. Перейти в 3D пространство с отображением зон. Можно отображать поэтажно, можно всю модель - тут как удобнее вам. Если архитектор не знает как в 3D отобразить зоны, то это документация. Либо вот скриншот:
3. Сохранить как IFC из 3D окна. В простейшем случае сделать просто Файл\Сохранить как..., выбрать формат IFC и настроить два параметра - Сохранять то, что отображается в 3D + Сохранять через транслятор "Точный экспорт геометрии":
В более сложных случаях там можно десятки параметров настроить: полноту передачи информационных данных, формат IFC, папка сохранения. В идеале можно настроить так, что из ARCHICAD будет сохранять в один клик не только один IFC, а куча данных - DWG, Excel таблицы, PDF, IFC по этажам, BIMx модель и т.д. - функция называется Публикатор. Но тут точно надо читать документацию и думать, что хочешь получить - в рамках краткого ответа на форуме тут не описать все возможности.
- Читать далее...
-
- 0 комментариев
- 2