Размещение марок с несколькими выносками
Добавляйте одну и ту же марку к нескольким элементам с помощью параметра «Добавить/удалить основу» при размещении марок или добавляйте дополнительные основы (выноски) к существующим маркам.
Можно также настроить внешний вид выносок марок, скорректировать их вместе или изменить видимость отдельных выносок марок.
Это подходит для марок по одной и нескольким категориям, марок материалов, марок ключевых пометок и марок ключевых пометок материалов.
Добавление нескольких выносок
- Выберите вкладку «Аннотации» панель «Марка» и щелкните значок
(«Марка по категории»). - На вкладке «Изменить» | «Марка» панель «Основа» щелкните значок
(«Добавить/удалить основу»). - Выберите один или несколько элементов, к которым необходимо добавить марку.
- Щелкните в пустом месте, чтобы завершить создание марки.
Прим.: После добавления первой выноски для всех элементов в Revit можно использовать рамку выбора. В случае с маркой по категории определяется используемая категория марки. Выполняется фильтрация набора объектов, чтобы в нем остались только элементы этой категории.
Команда «Добавить/удалить основу» используется для добавления выносок к дополнительным элементам или для удаления маркированных элементов из набора объектов.

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

- Выберите вкладку «Изменить» | «Марка» панель «Выноски» и щелкните значок («Объединить выноски»).
Можно настроить выноски марок при их размещении, а также для уже существующих марок.

Отображение и скрытие выносок
Можно добавить марки к нескольким элементам, однако при этом показывать только одну или несколько выносок марок, чтобы не загромождать чертежи.
- Выберите вкладку «Изменить» | «Марки по < категория элемента >» панель «Выноски» и щелкните значок
(«Выбор выносок для отображения»). - Выберите выноски, которые требуется отобразить, и снимите выбор с остальных.
- Щелкните значок
(«Готово»), чтобы сохранить изменения и выйти из режима редактирования.
Пример несущей колонны (отображение 2 из 6 выносок)

Совет: Для отображения количества элементов с марками необходимо отредактировать семейство марок, выбрать и отредактировать метку марки и добавить параметр «Количество основ» из раскрывающегося списка категории «Марки мультивыносок».
Revit
Я много видел как делают различные семейства на выноски пирога конструкции, но все они были не универсальными.
Единственное, что мне понравилось, так это выноска пирога с использованием ключевых пометок. Данное решение можно посмотреть на канале у Aleksandr Kanivets ( в и део по ссылке ) .
Так как у нас в компании свои типоразмеры стен, то ключевые пометки нужно еще сделать. Как только встал вопрос на эту тему, нужно было сделать срочно выноску в этот же день.
В Revit есть такое понятие как группа, которая меняется на всех видах, таким образом было решено делать пироги текстовой аннотацией в группе (каждая группа — это свой тип конструкции).
У текстовой аннотации есть возможность добавления выноски.

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

Можно сделать нужную стрелку прямо в проекте, если ее нет в шаблоне.
У меня пришла идея сделать выноску пирога конструкции при помощи инструмента — текстовая аннотация с добавлением выноски.
Что из этого получилось, можете посмотреть по данной ссылке — Выноска пирога конструкции .
Revit 2017. Поделитесь семейством или опытом по созданию выноски для несущей арматуры?
Подскажите кто как обозначает арматуру на чертежах? В стандартных семействах как то немного убого выглядят выноски арматурных стержней. К примеру есть план армирования ленточного фундамента. Соответственно в плане мы видим только верхнее армирование (либо нижнее, если настроить секущий диапазон, но не суть), к примеру 3 стержня продольных, как бы их сразу три присоединить к выноске в которой будет отображаться позиция стержня, то есть как в СПДС графиксе (Позиционная выноска), я пока конечно не начал сугубо глубоко залазить в дебри создания семейства, но просто вдруг уже имеется решение, кто нибудь добрый человек поделится, или статейкой на эту тему?
Просмотров: 13116
Регистрация: 08.10.2006
Сообщений: 651
Одни из самых крутых наработок, которые мне доводилось встречать по Revit, описаны в блоге Александра Зуева . Там же даны шаблоны и семейства (большая часть семейств сидит прямо в шаблоне).
Регистрация: 22.05.2011
Сообщений: 806
Сообщение от Nels
Одни из самых крутых наработок, которые мне доводилось встречать по Revit, описаны в блоге Александра Зуева . Там же даны шаблоны и семейства (большая часть семейств сидит прямо в шаблоне).
Что то да, забыл о его чудо семействах.
Регистрация: 07.06.2010
Сообщений: 1,142
Да какие еще чудо-семейства? Накладываете одну марку на другую — вот и получаете марку «с несколькими выносками»
Или вы про «Аннотация для арматурных стержней»?
__________________
Шаблон Revit для разделов КМ/КЖ
| extraneous |
| Посмотреть профиль |
| Посетить домашнюю страницу extraneous |
| Найти ещё сообщения от extraneous |
Регистрация: 22.05.2011
Сообщений: 806
Сообщение от extraneous
Да какие еще чудо-семейства? Накладываете одну марку на другую — вот и получаете марку «с несколькими выносками»
Или вы про «Аннотация для арматурных стержней»?
Я именно о марке несущей арматуры, которая криво встает, точнее выноска втыкается в центр текстовой строки, а оказывается все гораздо проще, надо было два ряда текста сделать на основе выноски элемента (семейство где то нашел такое, с удлинением полки, но только ручным способом).
Пользуясь случаем, хотел бы у вас еще узнать такой момент про спецификацию арматуры. Вот к примеру у меня есть армированный ленточный фундамент и сваи, в них установлены продольные стержни, выполненные отдельными стержнями, а также хомуты, выполненные массивом (то есть в самом семействе, есть метод раскладки — количество и шаг), ну так вот, я начинаю создавать спецификацию, группирую по длине стержня (так как у меня одинаковые диаметры почти), и вижу следующую картину, в столбце «Число» (системный какой то параметр, который даже в формуле не применишь) стержни-хомуты пишутся количество диапазонов раскладки, а не само количество стержней — общее. И не создать никак формулу с параметром «Число», а то так можно было бы умножить его на параметр «Количество в наборе арматуры» или просто «Количество». Подскажите как быть в таком случае?
Регистрация: 07.06.2010
Сообщений: 1,142
erikbond, лучше сразу прикладывайте картинку, телепаты в отпуске.
Чтобы выноска марки приклеивалась по центру — проще всего добавить в семейство невидимые линии вверх и вниз от центра семейства на равном расстоянии. «Полку» я стараюсь делать через «Подчеркивание» — тогда не нужно отдельно настраивать длину полки.
Насчет спецификации — вам надо не параметр «Число» использовать, а «Количество», и включить для него на вкладке «Форматирование» галочку «Вычислять итоги». Вы смотрели какие-нибудь уроки по работе в Revit?
| Маркировка вложенных семейств.rvt (1.35 Мб, 210 просмотров) |
Выноска в Ревите — Мультивыноска в Автокаде
При выгрузке из Ревита в Автокад все выноски становятся Текстом.
Как сделать чтобы они стали мультивыносками Автокада?
Просмотров: 6801
Регистрация: 25.12.2005
Сообщений: 13,627
Заново создать мультивыноску в AutoCAD’е.
Программа преобразования до трех однострочных текстов в одну выноску:
(defun C:TXT-MLD ( / echo ceclr lay obj1 obj2 obj3 строка1 строка2 строка3) (vl-cmdf "_UNDO" "_BE") (setq echo (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq lay (getvar "CLAYER")) (setq ceclr (getvar "CECOLOR")) (setvar "CECOLOR" "ByLayer") (setq obj1 (car (entsel "\nВыберите текст 1: "))) (if obj1 (progn (setq строка1 (vlax-get-property (vlax-ename->vla-object obj1) 'TextString)) (setq obj2 (car (entsel "\nВыберите текст 2 (Enter-конец): "))) (setq obj3 (car (entsel "\nВыберите текст 3 (Enter-конец): "))) (if obj2 (setq строка2 (vlax-get-property (vlax-ename->vla-object obj2) 'TextString)) ) ; if (if obj3 (setq строка3 (vlax-get-property (vlax-ename->vla-object obj3) 'TextString)) ) ; if (cond ((and obj1 (= obj2 nil) (= obj3 nil)) (princ "\n Построение мультивыноски: укажите 1-ю и 2-ю точки.") (vl-cmdf "_mleader" pause pause строка1) (vl-cmdf "_ERASE" obj1 "") ) ; cond1 ((and obj1 obj2 (= obj3 nil)) (princ "\n Построение мультивыноски: укажите 1-ю и 2-ю точки.") (vl-cmdf "_mleader" pause pause (strcat строка1 "\n" строка2)) (vl-cmdf "_ERASE" obj1 obj2 "") ) ; cond2 ((and obj1 obj3 (= obj2 nil)) (princ "\n Построение мультивыноски: укажите 1-ю и 2-ю точки.") (vl-cmdf "_mleader" pause pause (strcat строка1 "\n" строка3)) (vl-cmdf "_ERASE" obj1 obj3 "") ) ; cond3 ((and obj1 obj3 obj2) (princ "\n Построение мультивыноски: укажите 1-ю и 2-ю точки.") (vl-cmdf "_mleader" pause pause (strcat строка1 "\n" строка2 "\n" строка3)) (vl-cmdf "_ERASE" obj1 obj2 obj3 "") ) ; cond4 ) ; cond ) ; progn (princ "\nНе выбрана строка 1.") ) ; if (vl-cmdf "_UNDO" "_E") (setvar "CMDECHO" 0) (setvar "CECOLOR" ceclr) (setvar "CLAYER" lay) (princ) )
Но!
Заранее должны быть созданы стиль текста и стиль мультивыноски.
Регистрация: 15.09.2003
Сообщений: 53
А возможно создать Мультивыноску по набору из текстовых строк и линий?
Регистрация: 25.12.2005
Сообщений: 13,627
Это зависит от стиля мультивыноски.
Регистрация: 15.09.2003
Сообщений: 53
Сообщение от Profan
Это зависит от стиля мультивыноски.
можете прояснить как это зависит? . если можно поподробнее.
Требуется создать какой то определенный стиль?
Регистрация: 25.12.2005
Сообщений: 13,627
Поподробнее можно прочитать в Справке или в учебниках. А линии накой впихивать в с мультвыноску, в то время, как мультивыноска сама создает выносные и другие линии? Жалко отрезки, нелепо полученные при сохранении RVT в DWG?
Регистрация: 20.03.2008
Сообщений: 2,648
Сообщение от Profan
Жалко отрезки, нелепо полученные при сохранении RVT в DWG?
Думаю, что не жалко, а как раз наоборот: их же еще потом надо поудалять
Да и точки надо каждый раз задавать, а отрезки-то уже есть. Их бы и было приятно впихнуть сразу в дело.
Я ошибаюсь, или был где-то код, который брал эти отрезки в оборот? Почему-то не покидает чувство, что где-то такое попадалось, но никак не вспомню, где.
идущий по граблям
Регистрация: 26.05.2005
Сообщений: 5,044
Сообщение от Profan
А линии накой впихивать в с мультвыноску, в то время, как мультивыноска сама создает выносные и другие линии
Видимо, автор желает видеть код, который будет в некотором смысле читать чертеж по сути и среди кучи разрозненных примитивов определит, какие из TEXT и LINE образуют выноски и автоматически заменит эти группы примитивов (с точки зрения Акада, никак не связанные) на «настоящие» мультивыноски. Вроде того кода, который восстанавливал таблицы (TABLE), разбитые до текста и линий (или изначально так начерченные)
Последний раз редактировалось kp+, 19.04.2017 в 15:49 .
Регистрация: 15.09.2003
Сообщений: 53
Кр+, ну в принципе Вы правы. хотелось бы выбрать 1-2 текста. линии, которые вместе с этими текстами. и получить готовую Мультивыноску.
идущий по граблям
Регистрация: 26.05.2005
Сообщений: 5,044
Сообщение от AGEL
.хотелось бы выбрать 1-2 текста. линии, которые вместе с этими текстами. и получить готовую Мультивыноску.
это сильно упрощает задачу, и половина решения уже есть в #2
Регистрация: 25.12.2005
Сообщений: 13,627
Ну, раз линии все равно придется выбирать. так и стереть их нафиг.
Я-то программу делал не для случая сохранения из Revit в AutoCAD, просто у нас оказались продвинутые пользователи, которые в AutoCAD’е чертили выноски в виде палочек и обычных текстов. И кроме таких липовых выносок там всяких палочек (отрезков) были горы, так что показалось мне, что это преступление — навязывать программе выполнять дикий перебор палочек и текстов.
Для меня гораздо серьезной оказалась проблема сохранения объектов MEP из Revit в AutoCAD MEP и ничего, кроме 3D-тел не получается. А ведь, казалось бы — одна контора (Autodesk), однако никакой совместимости объектов MEP (да и других объектов типа выносок) нет.
Регистрация: 15.09.2003
Сообщений: 53
Ну почему Вы хотите удалять уже готовые линии от Мультивыноски в объекту?
Как вариант. все эти линии и текст находятся в одном слое, скажем Выноски, и думаю, что
не составит труда определить линию между двумя текстами(ближайшую линию снизу от текста) и вторую линию, у которой совпадает начало и конец предыдущей линии.
И тогда я запускаю прогу в текущем слое Выноски и получаю готовый результат.
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,576
Сообщение от AGEL
И тогда я запускаю прогу в текущем слое Выноски и получаю готовый результат.
А кодом с окружающими не поделитесь?
Регистрация: 25.12.2005
Сообщений: 13,627
Вот такой вариант:
;;; Текст и отрезки в мультивыноску ;;; Стили текста и мультивыноски должны быть созданы заранее (defun C:TXT-L-MLD ( / echo ceclr lay obl ptlo ptle lss obj1 obj2 obj3 строка1 строка2 строка3) (vl-cmdf "_UNDO" "_BE") (setq echo (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq lay (getvar "CLAYER")) (setq ceclr (getvar "CECOLOR")) (setvar "CECOLOR" "ByLayer") (setq obl (car (entsel "\nВыберите отрезок типа выносной линии: "))) (redraw obl 3) (if (and obl (= (cdr (assoc 0 (entget obl))) "LINE")) (progn (setq ptlo (cdr (assoc 10 (entget obl)))) (setq ptle (cdr (assoc 11 (entget obl)))) (setq lss (ssget "_C" (list (- (nth 0 ptle) 10) (- (nth 1 ptle) 10)) (list (+ (nth 0 ptle) 10) (+ (nth 1 ptle) 10)))) (setq obj1 (car (entsel "\nВыберите текст 1: "))) (if obj1 (progn (redraw obj1 3) (setq строка1 (vlax-get-property (vlax-ename->vla-object obj1) 'TextString)) (setq obj2 (car (entsel "\nВыберите текст 2 (Enter-конец): "))) (if obj2 (redraw obj2 3)) (setq obj3 (car (entsel "\nВыберите текст 3 (Enter-конец): "))) (if obj3 (redraw obj3 3)) (if obj2 (setq строка2 (vlax-get-property (vlax-ename->vla-object obj2) 'TextString)) ) ; if (if obj3 (setq строка3 (vlax-get-property (vlax-ename->vla-object obj3) 'TextString)) ) ; if (cond ((and obj1 (= obj2 nil) (= obj3 nil)) (vl-cmdf "_mleader" ptlo ptle строка1) (vl-cmdf "_ERASE" obj1 "") ) ; cond1 ((and obj1 obj2 (= obj3 nil)) (vl-cmdf "_mleader" ptlo ptle (strcat строка1 "\n" строка2)) (vl-cmdf "_ERASE" obj1 obj2 "") ) ; cond2 ((and obj1 obj3 (= obj2 nil)) (vl-cmdf "_mleader" ptlo ptle (strcat строка1 "\n" строка3)) (vl-cmdf "_ERASE" obj1 obj3 "") ) ; cond3 ((and obj1 obj3 obj2) (vl-cmdf "_mleader" ptlo ptle (strcat строка1 "\n" строка2 "\n" строка3)) (vl-cmdf "_ERASE" obj1 obj2 obj3 "") ) ; cond4 ) ; cond (vl-cmdf "_ERASE" lss "") ) ; progn (princ "\nНе выбрана строка 1.") ) ; if ) ; progn (princ "\nЭто не отрезок.") ) ; if (vl-cmdf "_UNDO" "_E") (setvar "CMDECHO" 0) (setvar "CECOLOR" ceclr) (setvar "CLAYER" lay) (princ) )
Сначала надо указать отрезок, который соответствует выносной линии выноски, потом тексты сверху вниз. Если есть отрезок, соответствующий полке, то он стирается вместе с отрезком, соответствующим выносной линии и из которого берутся только координаты начала и конца.
Повторяю: стили текста и мультивыноски должны быть созданы заранее и сделаны текущими.
Это простейший вариант, при желании (которого нет) можно и улучшить.
Последний раз редактировалось Profan, 20.04.2017 в 14:56 .
Инженер проектировщик (раздел ТМ — фриланс)
Регистрация: 06.12.2003
Сообщений: 1,794
Есть такой макрос. Когда то заказывал под свои реалии. Т.е. тип текста — Мтекст, слой на котором они должны находиться, и так же должен быть настроен текущий стиль мультилидера.
Можно выбрать сразу много объектов.
Думаю примерно то, что вы ищите.
Есть ещё код, который делает выноску из двух текстов (над и под выноской), но там несколько иные исходные примитивы для преображения.
К сожалению, автор этого кода более не доступен. Но думаю, он был бы не против такого распространения.
;****************************************************** ;PSW - 2016 E-mail [email protected] ; Отрисовка Мультивыноски ;****************************************************** (defun C:P2 (/ A1 A2 B CENTR J KL L1 L2 LINIA M1 M2 M3 M4 MOB MTEXT NL NNN NZ OBJ OLD PT_LIST PZ_LIST SL SL2 SLOY SS SSSS ST T01 T02 T03 T04 TE1 TE2 VL1 VL2 VLINIA Z01 _MAXP _MINP _T1 _T2) ;****************************************************** (vl-load-com) (setq Old (getvar "OsMode")) (Setvar "OsMode" 0) (Setvar "CMDECHO" 0) (setvar "CLAYER" "Обозначение (ISO)") (prompt "\nВыберите рамкой объекты: ") (setq SSSS (ssget)) (if (= SSSS Nil) (progn (alert "Нет примитивов на слое для обработки выносок!") (exit))) ; если объектов нет завершаем работу (setq NNN (sslength SSSS)) ;************************************************* (setvar "CLAYER" "Обозначение (ISO)") ; слой должен существовать (setq j 0) (setq KL 0) (repeat NNN ; Цикл по всем выбранным дугам (setq A1 (ssname SSSS j)) (setq j (+ 1 j)) (setq A2 (entget A1)) (setq MTEXT (cdr (assoc 0 A2))) ; TEXT (setq Sloy (cdr (assoc 8 A2))) ; Слой (setq TE1 (cdr (assoc 1 A2))) ; Текст выноски (if (and (= MTEXT "MTEXT") (= Sloy "Обозначение (ISO)") ) ; Ищеи Мтекст (progn (setq Centr (cdr (assoc 10 A2))) ; центр вставки текста ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; Ищем горизонтальную линию под текстом (setq T01 (dekart Centr 0.0 -2.5 0.0)) (setq T02 (dekart Centr 0.0 -5.0 0.0)) (setq pt_list (list T01 T02 )) (setq SS (ssget "_F" pt_list )) (setq linia (ssname SS 0)) (setq L1 (cdr (assoc 10 (entget Linia)))) ; точки горизонтальной линии (setq L2 (cdr (assoc 11 (entget Linia)))) ; Строим точки по для определение пересечения с линией выноски (setq T01 (dekart (List (min (car L1) (car L2)) (cadr L1) 0.0 ) -0.005 -0.005 0.0)) (setq T02 (dekart (List (min (car L1) (car L2)) (cadr L1) 0.0 ) -0.005 0.005 0.0)) (setq T03 (dekart (List (max (car L1) (car L2)) (cadr L1) 0.0 ) 0.005 0.005 0.0)) (setq T04 (dekart (List (max (car L1) (car L2)) (cadr L1) 0.0 ) 0.005 -0.005 0.0)) (setq Z01 (dekart (seredina L1 L2) 0.0 -0.1 0.0)) ;(command "_PLINE" T01 T02 T03 T04 "") (setq pt_list (list T01 T02 T03 T04 T01)) (setq SL (ssget "_F" pt_list )) (setq NL (sslength SL)) (setq T01 (dekart T01 0.0 -2.0 0.0)) (setq T04 (dekart T04 0.0 -2.0 0.0)) (setq pZ_list (list T01 Z01 T04 )) (setq NZ (ssget "_F" pZ_list )) ;(command "_PLINE" T01 Z01 T04 "") ;######################################################################## ; если только одна линия в наборе (if (and (>= NL 1) (= NZ nil)) (progn (setq Vlinia (ssname SL 0)) (setq VL1 (cdr (assoc 10 (entget VLinia)))) (setq VL2 (cdr (assoc 11 (entget VLinia)))) (if (= (cadr VL1) (cadr L1)) (setq M1 VL2) (setq M1 VL1)) (if (> (distance L1 M1) (distance L2 M1)) (setq M2 L2) (setq M2 L1)) ;(command "_MLEADER" M1 M2 (strcat TE1 "\n" TE2) ) (if (/= (car VL1) (car VL2)) (progn (command "_MLEADER" M1 M2 TE1 ) (setq Mob (entlast)) (setq b (vlax-ename->vla-object (entlast))) (vlax-put-property b 'TextJustify 2) (if (< (car M2) (car M1)) (command "_MOVE" Mob "" (List 0.0 0.0 0.0 ) (list 0.72 0.0 0.0))) (entdel Vlinia) (entdel linia) (entdel A1) )) )) ;######################################################################## ; если только две линии в наборе и одна из них вертикальна (if (and (>= NL 1) (/= NZ nil)) (progn (setq pt_list (list T01 T02 T03 T04 )) (setq SL2 (ssget "_F" pt_list )) (setq NL (sslength SL2)) (setq Vlinia (ssname SL2 0)) (setq VL1 (cdr (assoc 10 (entget VLinia)))) (setq VL2 (cdr (assoc 11 (entget VLinia)))) (if (= (cadr VL1) (cadr L1)) (setq M1 VL2) (setq M1 VL1)) (if (> (distance L1 M1) (distance L2 M1)) (setq M2 L2) (setq M2 L1)) ; находим второй Mtext под выноской (setq T01 (dekart (List (min (car L1) (car L2)) (cadr L1) 0.0 ) -1.0 -1.0 0.0)) (setq T02 (dekart (List (max (car L1) (car L2)) (cadr L1) 0.0 ) 1.0 -8.0 0.0)) (setq pt_list (list T01 T02 )) (setq ST (ssget "_W" T01 T02 )) (setq Te2 (cdr (assoc 1 (entget (ssname ST 0))))) (command "_MLEADER" M1 M2 (strcat TE1 "\n" TE2)) (setq Mob (entlast)) (setq b (vlax-ename->vla-object (entlast))) (vlax-put-property b 'TextJustify 2) (setq obj (vlax-ename->vla-object (entlast))) (vla-GetBoundingBox obj '_minp '_maxp) (setq _T1 (vlax-safearray->List _minp)) (setq _T2 (vlax-safearray->List _maxp)) (if (< (car M2) (car M1)) (setq M4 (car _t1)) (setq M4 (car _t2))) (setq M3 (dekart M2 0.0 -5.0 0.0)) (setq M4 (list M4 (cadr M3 ) 0.0 )) (entdel Vlinia) (entdel linia) (entdel A1) (setq T01 (dekart T01 0.0 2.0 0.0)) (setq T02 (dekart T02 0.0 -2.0 0.0)) (setq ST (ssget "_W" T01 T02)) (command "_ERASE" ST "") (command "_PLINE" M2 "_w" 0.0 0.0 M3 M4 "") (if (< (car M2) (car M1)) (command "_MOVE" Mob "" (List 0.0 0.0 0.0 ) (list 0.72 0.0 0.0))) )) ;######################################################################## ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ )) ; IF MTEXT ); REPEAT NNN (Setvar "OsMode" Old) (SetVar "FILEDIA" 1) (princ) ) ; END DEFUN ;************************************************************************ ; Функция возвращает: Точку середины отрезка Т1 Т2 ; Параметр - точки Т1 Т2 ;************************************************************************ (defun SEREDINA (TE1 TE2 / _AA _DX _DY _DZ) (setq _DX (/ (+ (car TE1) (car TE2)) 2.0)) (setq _DY (/ (+ (cadr TE1) (cadr TE2)) 2.0)) (setq _DZ 0.0) (if (and (/= (caddr TE1) NIL) (/= (caddr TE2) NIL)) (progn (setq _DZ (/ (+ (caddr TE1) (caddr TE2)) 2.0)) ) ) (setq _AA (list _DX _DY _DZ)) ) ;END DEFUN ;************************************************************************ ;************************************************************************ ; Функция возвращает точку со смещением от заданной точки на DX, DY, DZ ; Параметр - точка, смещение по Х, смещение по Y, смещение по Z. ;************************************************************************ (defun DEKART (TE1 DEX DEY DEZ / AA ZZ) (setq ZZ (caddr TE1)) (if (= ZZ NIL) (setq ZZ 0.0) ) (setq AA (list (+ (car TE1) DEX) (+ (cadr TE1) DEY) (+ ZZ DEZ))) ) ;END DEFUN ;************************************************************************