Логотип сайта поддержки пользователей САПРО сайте поддержки пользователей САПР Translate to:
Hosting Ukraine

Тема 1 Работа с электроаппаратурой на плане

5. Программа 1 (kol_el) – автоматический полный подсчет коли-чества электроаппаратуры и материалов на плане проектируе-мого объекта

Оглавление

Итак начнем с первой задачи, которая состоит в определении количества электроаппаратуры, находящейся на поле чертежа.

1. Описание технологии процесса ручного подсчета электроаппаратуры.

Задача проектировщика состоит в подсчете количества электроаппаратуры, которая находится в поле чертеже и количества сопутствующей аппаратуры и материалов, которые не находятся на поле чертежа, но требуются для установки основной электроаппаратуры. Также подсчитывается 3,4,5-жильная проводка по удельным показателям на единицу электроаппаратуры для больших обьектов. Ручной процесс подсчета довольно трудоемкий и сложность его увеличивается по мере насыщения чертежа электроаппаратурой. При достижении объемов в сотни штук и выше задача становится сложной и неприятной, поскольку заставляет тратить много времени и проектировщик постоянно находится в напряжении, стараясь не ошибиться. При этом задача является обычной механической операцией, не требующей интеллектуального труда.

2. Разбор решения задачи для создания программы.

Задача требует использования блоков, которые представляют из себя условные обозначение электроаппаратуры и за счет уникального имени блока, позволяет с помощью программы, автоматически пересчитать их количество. При этом задача просматривает все примитивы чертежа-рисунка и находя соответствующие блоки сортирует их по именам. Каждому блоку-электроаппарату соответствует свой счетчик, который накапливает данные на единицу при нахождении соответствую щего блока. После окончания просмотра рисунка данные подсчета выводятся на экран. Можно сделать соответствующие дополнения в программу и получить вывод данных в текстовый файл или в таблицу данных на чертеже. По полученным общим результатам подсчета количества электроаппаратуры можно рассчитать и получить общий объем кабельных проводок по удельным показателям. В данном описании рассматривается всего лишь несколько конкретных электроаппаратов, в то время, как общее их количество в предлагаемой программе превышает 50 единиц.

3. Создание структуры программы.

Структура программы приведена на чертеже. Наглядно видно существование общего цикла, который работает, как "колесо обозрения". Оно крутится и крутит кабинки-примитивы. Опускаясь к низу, колесо ,как бы задерживается и позволяет просмотреть содержимое кабинок и выбрать то, что нам необходимо. В данном случае нам необходимо найти блоки электроаппаратов. При этом выполнить три условия:

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

4. Написание программы с текстовыми пояснениями, чтобы изучающему человеку не заглядывать в справочник Autolispa.

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

(defun kol_el ()
Программная объединяющая функция счета числа электроприборов по плану этажа. Функция defun под именем /kol_el/ объединяет все выражения и функции программы. В сеансе Автокада она вызывается с помощью команды: (load"имя_файла")- загрузка файла, после чего в скобках указывается (имя_файла) для исполнения. Для нашего случая (load "kol_el") - загрузка файла,это выражение достаточно набрать в командной строке Автокада, после чего набрать - (kol_el) для исполнения программы, полную запись необходимо указать в командной строке Автокада или в пункте меню. Открывающая скобка функции defun должна закрыться закрывающей скобкой в конце программы. Выглядит это так (defun …………)
(setq a  (entnext))
Функция setq - присвоение переменной /а/ имени первого примитива в рисунке в длинной очереди выстроенных друг за другом примитивов чертежа. Команда entnext без аргумента дает имя первого неудаленного примитива в рисунке, тем самым мы находим начало данных примитивов Автокада. Примитивы Автокада это линии, текст, полилинии, круг, блоки и т.д.
(setq b t)
Функция присвоения переменной /b/ соответственно значение /t/,что означает ее существование без вложенных данных
(while (and a b)
Начало цикла, открывающая скобка цикла - вход в цикл, который работает только при взаимном существовании переменных /a/ и /b/ при помощи функции (and...) - логическое И, объединяющей проверку существования /a/ и /b/. В цикле происходит повторение задуманных действий до тех пор, пока существуют обе переменные /a/ и /b/. При этом происходит последовательный внутренний просмотр примитивов рисунка одного за другим, согласно внутренней иерархии. Вызов нового элемента рисунка происходит в конце цикла с помощью команды (entnext a): При этом с помощью команды (setq a .....) происходит переприсвоение в переменную /а/ имени нового примитива взамен старого, уже просмотренного программой
(setq b (cdr(assoc '0 (entget a))))
Выражение для получения из информационной структуры примитива рисунка - типа примитива INSERT, т.е. вставки блока, выражение можно записать и другим способом - последовательным написанием каждой функции: (setq b (entget a)) – список информационной структуры примитива (СИСП), (setq b (assoc '0 b)) - нахождение в (СИСП) по ключу (паролю) '0 ключевой пары типа примитива (0 . тип_примитива) (setq b (cdr b)) - получение значения второго члена ключевой пары, т.е. типа примитива. Наша задача - отбор всех примитивов с типом INSERT т.е. блоков ,а затем из всего числа блоков, выбор блоков с именем 1_LMS1_18_54 Правильное написание выражений смотреть в аналоге программы в конце главы
(if b
Начало первого условия, открывающая скобка условия. Проверка существования /b/ - типа примитива, т.е. если переменная /b/ существует, то вход в условие разрешен. В противном случае доступ к выражениям, находящимся внутри первого условия будет запрещен
(progn
Функция progn позволяет объединить разные выражения находящиеся внутри первого условия в одно выражение. Если этого не сделать, то произойдет сбой или ошибка выполнения программы
(if (equal b "INSERT")
Начало второго условия, открывающая скобка условия. Выполнение 2 условия, что в переменной /b/ содержится вставка блока, т.е. при работе цикла и последовательном просмотре примитивов, содержащихся в рисунке, второе условие позволяет отобрать и пропустить внутрь себя только тогда, когда в переменной /b/ содержится вставка блока - INSERT или иначе говоря при нахождении блока, содержащегося внутри рисунка
(progn
Функция progn позволяет объединить разные выражения, находящиеся внутри второго условия в одно выражение. Если этого не сделать, то произойдет сбой или ошибка выполнения
(setq c (cdr(assoc '2 (entget a))))
Получение имени блока из (СИСП), аналогично /b/ - см. рассмотренное выше выражение для получение типа примитива
(princ "с = ")(princ c) (terpri)
Вывод сообщения об имени блока в текстовом режиме Автокада, после отладки это выражение удаляется. Функция (terpri) служит для удобства – переносит следующее сообщение в текстовом режиме Автокада на новую строку
(if (equal c "1_LMS1_18_54")
Третье условие подсчета, начало условия, открывающая скобка - условия количества од-нолюминисцентных светильников мощностью 18 вт с защитой 1Р54. Если переменная /с/ со-ответствует имени блока 1_LMS1_18_54, то мы попадаем в третье условие
(progn
Функция progn позволяет объединить разные выражения находящиеся внутри третьего условия в одно выражение. Если этого не сделать, то произойдет сбой или ошибка выполнения программы
(if (not nl1)(setq nl1 0.0))
Это выражение проверяет существует ли счет-чик л/м светильника, если его /nl1/ нет, что подтверждается выражением (not nl1), ко-торое дает значение /t/ – подтверждение для входа в условие, если переменная /nl1/ не имеет значения. В этом случае внутри условия переменной счетчика присваивается значение 0.0, после чего он может использоваться для прибавления значения, условие используется только один раз вначале появления счетчика
(setq nl1 (+ nl1 1.0)) Работа счетчика люминисцентного светильника - увеличение на единицу, если выполнение программы доходит до этого места, т.е. когда программа находит блок люминисцентного светильника в чертеже. Само выражение читается так - к значению переменной /nl1/ прибавляется единица и общее значение снова записывается в переменную /nl1/
(if (not pr3) (setq pr3 0.0))
Это выражение проверяет существует ли переменная длины 3-жильного кабеля /pr3/,если ее /pr3/ нет, что подтверждается выражением (not pr3), которое дает значение /t/ – признак для входа в условие, если переменная /pr3/ не имеет значения. В этом случае внутри условия переменной счетчика присваивается значение 0.0, после чего он может использоваться для прибавления значения, условие используется только один раз. Если переменной /pr3/ не присвоить вначале нулевого значения, то при прибавлении появившейся длины 3-жильного кабеля к пустоте произойдет ошибка.
(setq pr3 (+ pr3 1.3))
КАБЕЛЬ 3-жильный для горизонтального участка, закрываемого светильником, читается следующим образом – в расчете на каждый светильник добавляется 1,3 метра длины кабеля. Значение складывается из длины закрываемой светильником и монтажной длины, подключаемой к светильнику
(if (not pr3v)(setq pr3v 0.0))
Это выражение проверяет существует ли переменная длины 3-жильного кабеля для верти-кального участка /pr3v/,если ее /pr3v/ нет, что подтверждается выражением (not pr3v) , которое дает значение /t/ – подтверждение для входа в условие. Если переменная /pr3v/ не имеет значения, в этом случае внутри ус-ловия переменной счетчика присваивается значение 0.0, после чего он может использо-ваться для прибавления значения, условие используется только один раз. Если перемен-ной /pr3v/ не присвоить вначале нулевого значения, то при прибавлении появившейся длины 3-жильного кабеля к пустоте произойдет ошибка
(setq pr3v (+ pr3v 0.2))
КАБЕЛЬ 3-жильный для вертикального участка, в расчете на 1 светильник, читается следующим образом – в расчете на каждый светильник добавляется 0,2 метра длины кабеля
))
Первая скобка закрывает выражение PROGN, а вторая скобка закрывает третье условие по выбору люминисцентного светильника и мате-риалов к нему
(if (equal c "1_RP3")
Следующее третье условие подсчета количест-ва условных люстр, поскольку сами люстры не учитываются, а только будут учтены материа-лы для них
(progn 
Функция progn позволяет объединить разные выражения находящиеся внутри третьего условия в одно выражение
(if (not sv13) (setq sv13 0.0))
Это выражение проверяет существует ли переменная количества люстр /sv13/,если ее /sv13/ нет, что подтверждается выражением (not sv13), которое дает значение /t/, подтверждение для входа в условие. Если переменная /sv13/ не имеет значения, в этом случае внутри условия переменной счетчика присваивается значение 0.0, после чего он может использоваться для прибавления значения, условие используется только один раз. Если переменной /sv13/ не присвоить вначале нулевого значения, то при прибавлении появившейся люстры к пустоте произойдет ошибка
(setq sv13 (+ sv13 1.0))
Работа счетчика люстр - увеличение на единицу, если выполнение программы доходит до этого места. Само выражение читается так - к значению переменной /sv13/ прибавляется единица и общее значение количества люстр снова записывается в переменную /sv13/
(if (not kl1) (setq kl1 0.0))
Это выражение проверяет существует ли переменная количества клемм /kl1/,если ее /kl1/ нет, что подтверждается выражением (not kl1) ,которое дает значение t – подтверждение для входа в условие. Если переменная /kl1/ не имеет значения, в этом случае внутри условия переменной счетчика присваивается значение 0.0, после чего он может использоваться для прибавления значения, условие используется только один раз. Если переменной /kl1/ не присвоить вначале нулевого значения, то при прибавлении появившейся клеммы к пустоте произойдет ошибка.
(setq kl1 (+ kl1 3.0))
Работа счетчика клемм - увеличение на три шт., если выполнение программы доходит до этого места. Само выражение читается так - к значению переменной /kl1/ прибавляется три клеммы и общее значение количества клемм снова записывается в переменную /kl1/
(if (not kr1)(setq kr1 0.0))
Это выражение проверяет существует ли переменная количества крюков /kr1/,если ее /kr1/ нет, что подтверждается выражением (not kr1), которое дает значение /t/ – подтверждение для входа в условие. Если переменная /kr1/ не имеет значения, в этом случае внутри условия переменной счетчика присваивается значение 0.0, после чего он может использоваться для прибавления значения, условие используется только один раз.Если переменной /kr1/ не присвоить вначале нулевого значения, то при прибавлении появившегося крюка к пустоте произойдет ошибка.
(setq kl1 (+ kl1 3.0))
Работа счетчика крюков – увеличение на единицу, если выполнение программы доходит до этого места. Само выражение читается так - к значению переменной /kr1/ прибавляется один крюк и общее значение количества крю-ков снова записывается в переменную /kr1/
(if (not rp1)(setq rp1 0.0))
Это выражение проверяет существует ли переменная количества розеток потолочных /rp1/, если ее /rp1/ нет, что подтверждается выражением (not rp1), которое дает значение /t/ – подтверждение для входа в условие. Если переменная /rp1/ не имеет значения, в этом случае внутри условия переменной счетчика присваивается значение 0.0, после чего он может использоваться для прибавления значения, условие используется только один раз. Если переменной /rp1/ не присвоить вначале нулевого значения, то при прибавлении появившейся розетки потолочной к пустоте произойдет ошибка.
(setq rp1 (+ rp1 1.0))
Работа счетчика розеток потолочных, увеличение на единицу, если выполнение программы доходит до этого места. Само выражение читается так - к значению переменной /rp1/ прибавляется одна розетка потолочная и общее значение количества розеток снова записывается в переменную /rp1/
))
Первая скобка закрывает выражение PROGN, а вторая скобка закрывает третье условие IF по выбору люстр и материалов к ним
))
Первая скобка закрывает выражение PROGN, а вторая скобка закрывает второе условие IF по определению блока, именно внутри 2 условия будут находиться десятки или сотни третьих условий для выбора электроаппаратов
(setq a (entnext a))
Выражение для перелистывания примитивов и получения имени следующего примитива или подпримитива, т.е. функция entnext с именем /а/ - предыдущего примитива, дает имя следующего примитива, которое записывается в переменную /а/
)
Конец цикла по выбору электроаппаратуры, закрывающая скобка для цикла
(textscr)
Функция перехода из графического в текстовый режим, чтобы прочитать текстовые сообщения о работе программы в сеансе Автокада
(if (not svob)(progn (setq svob 0.0)))
Создание переменной общего числа электроаппаратов и присвоение ей значения 0.0 – для длины 3,4,5-жильного кабеля внутри условия проверки отсутствия переменной общего числа электроаппаратов
(if (not svob2)(progn (setq svob2 0.0)))
создание переменной определенного числа электроаппаратов и присвоение ей значения 0.0 – для длины 2-жильного кабеля внутри условия проверки отсутствия переменной определенного числа электроаппаратов
(if sv13 (progn (setq svob (+ svob sv13))))
если существует счетчик люминисцентного светильника, то добавление в общее число электроаппаратов количество л/м светильников внутри условия наличия переменной счетчика люминисцентного светильника
(if nl1 (progn (setq svob (+ svob nl1))))
Если существует счетчик люстр, то добавление в общее число электроаппаратов количества люстр внутри условия наличия переменной счетчика люстр

Применение выражений типа проверки условия помогает избежать ошибок в программе при выполнении арифметических операций, в данном случае сложения. В случае выполнения операции сложения в программе, если одна из переменных не существует – программа выдает ошибку. Поэтому предварительно этим переменным задается первичное значение – 0 (ноль).

Далее - печать результатов.

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

В первом выражении печатается название светильника, а во втором выражении печатается переменная количества конкретного электроприемника, т.е. сколько содержится в переменной, столько и напечатается.

(princ "---------------------")(terpri)
печатание горизонтальной разделительной линии
(if sv13 (progn (princ 
"Cвет-к (люстра) на 3 провода = ") (princ sv13)(terpri)))
Печатание количества люстр
(if nl1  (progn (princ
"Свет-к ЛМС  1шт. 18вт. 1Р54 АВ = ") (princ nl1)(terpri)))
Печатание количества люминисцентных светильников
(setq klprr (* 15.0 svob))
Объем кабельной продукции = 15м х Общее число электроаппаратов, выражение читается так – 15м умножить на общее число электроаппаратов и полученное значение записать в переменную klprr
(setq klprr2 (* 2.0 svob2))
Объем 2-жильного кабеля = 2 м х число электроаппаратов, в том числе однополюсные выключатели и 1-штифтовые кнопки. Выражение читается так – 2м умножить на конкретное число электроаппаратов и полученное значение записать в переменную klprr2
(setq klpr3 (* klprr 0.35))
Объем 3-жильного кабеля = 35% от общего расчетного количества кабеля, чтение аналогично
(setq klpr4 (* klprr 0.1))
Объем 4-жильного кабеля = 10% от общего расчетного количества кабеля, чтение аналогично
(setq klpr5 (* klprr 0.05))
объем 5-жильного кабеля = 5% от общего расчетного количества кабеля, чтение аналогично
Далее - печать результатов

Вывод полученных результатов в текстовое окно Автокада, когда проектировщик выполняет чертеж, чтобы перейти в текстовое окно необходимо нажать клавишу F1. Выводу информации помогает функция Автолиспа princ. Чтобы нагляднее выделить выводимую информацию на экране вначале выводим отсекающую линию, затем заголовок выводимой информации и снова отсекающую линию. Затем следует выражение, включающее в себя условие проверки существования переменной количества провода. Если она существует, то далее друг за другом следуют два выражения princ. В первом выражении печатается название кабеля, а во втором переменная количества, т.е. сколько содержится в переменной, столько и напечатается.

(princ "---------------------")(terpri)
Печатание горизонтальной линии
(princ "КАБЕЛЬ ПО ПЛАНУ ")(terpri)
Печатание заголовка
(princ "---------------------")(terpri)
Печатание горизонтальной линии
(if klpr2 (progn
(princ "ДЛИНА кабеля 2-жильн. = ")
(princ klpr2)(terpri)))
Печатание длины кабеля 2 - жильного
(if klpr3 (progn
(princ "ДЛИНА кабеля 3-жильн. = ")
(princ klpr3)(terpri)))
Печатание длины кабеля 3 - жильного
(if klpr4 (progn (princ "ДЛИНА кабеля 4-жильн. = ")
(princ klpr4)(terpri)))
Печатание длины кабеля 4 - жильного
(if klpr5 (progn (princ "ДЛИНА кабеля 5-жильн. = ")
(princ klpr5)(terpri)))
Печатание длины кабеля 5 - жильного
(princ "---------------------")(terpri)
Печатание горизонтальной линии окончание вывода информации
(setq a nil b nil c nil a1 nil)(gc)
Удаление неиспользуемых переменных
)
Скобка закрытия программной объединяющей функции счета числа электроприборов по плану этажа. (функция defun) под именем /kol_el/

Примечание: Данная программа получила новое продолжение, встретились объекты проектирования с огромным количеством электроприемников до 6 тысяч светильников, и появилась необходимость в новых задачах – разбивка светильников на группы (до 80 светильников) и расчет мощности по группам. Пришлось ввести в блок светильника 2 атрибута: 1 – для номера группы, 2 – для мощности светильника с установленным значением мощности. В результате появились новые задачи - для быстрой установки номера группы с помощью указания на блок светильника курсором и раздельный учет мощности по группам. Опыт применения показал огромную экономию времени. Кстати шаблон-заготовка электроприемников тоже претерпел изменения. В нем появились новые блоки современных светильников с атрибутами и внесены несколько десятков слоев, показан-ных с помощью разноцветных полилиний. В процессе вставки в рисунок такого шаблона (как блока), в рисунке автоматически возникает множество слоев со специальным именем типа «EL1», «EL2», «EL3» и т.д. Используя полилинии шаблона можно быстро обозначить кабельные проводки разных типов и марок кабелей. Специальная задача выдает длину полилинии на каждом слое. В результате с учетом коэффициента поправок мы получим длины по каждому кабелю, примененному в чертеже. Кстати таких слоев можно применить сколь угодно много. При появлении интереса к данной тематике можно будет вернуться позже. Задачи по определению суммы длины полилиний приведены в конце данного пособия.

Ниже приведен текст программы, который намного меньше верхнего варианта с пояснениями. Хорошо видно тело программы с отступами, которые формируют и выражают функции цикла и условий. Наглядно видно, что каждое выражение, которое открывается скобкой должно иметь соответствующую закрывающую скобку. Кстати наиболее часто встречающаяся ошибка – несоответствие по количеству открывающих и закрывающих скобок.

Текст программы учета электроприемников в чертеже Автокада

файл KOL_EL.LSP

(defun kol_el() ;функция счета чмсла электроприборов по плану этажа
(setq a (entnext) a1 0 b t)
(while (and a b) (setq b (cdr(assoc '0 (entget a))))
   (if b (progn (setq c (cdr(assoc '2 (entget a))))
     ;(princ "с = ")(princ c)(terpri)
     (if (or(equal b "INSERT")(equal c "ATTRIB")(equal c "ATTDEF")) 
         (progn
	 (if (equal c "1_LMS1_11_20")(progn ;число л/м 11вт 1шт 
          (if (not nl18)(setq nl18 0))(setq nl18 (+ nl18 1))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
           ;КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS1_18_54")(progn ;число л/м 18вт 1шт 
          (if (not nl1)(setq nl1 0.0))(setq nl1 (+ nl1 1.0))
              ; светильник ЛМС
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
              ; КАБЕЛЬ 3-жильн 
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS1_36_54")(progn ;число л/м 36вт 1шт 
          (if (not nl2)(setq nl2 0.0))(setq nl2 (+ nl2 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS1_58_54")(progn ;число л/м 58вт 1шт 
          (if (not nl3)(setq nl3 0.0))(setq nl3 (+ nl3 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS1_9_54")(progn ;число л/м 9вт 1шт 
          (if (not nl4)(setq nl4 0.0))(setq nl4 (+ nl4 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))

	 (if (equal c "1_LMS2_36_54")(progn ;число л/м 36вт 2шт 
          (if (not nl5)(setq nl5 0.0))(setq nl5 (+ nl5 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS2_58_54")(progn ;число л/м 58вт 2шт 
          (if (not nl6)(setq nl6 0.0))(setq nl6 (+ nl6 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS4_18_54")(progn ;число л/м 18вт 4шт 
          (if (not nl7)(setq nl7 0.0))(setq nl7 (+ nl7 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS2_18_20")(progn ;число л/м 18вт 2шт 
          (if (not nl8)(setq nl8 0.0))(setq nl8 (+ nl8 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))
          (setq pr3v (+ pr3v 0.2)) ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS2_36_20")(progn ;число л/м 36вт 2шт 
          (if (not nl9)(setq nl9 0.0))(setq nl9 (+ nl9 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
           ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS2_58_20")(progn ;число л/м 58вт 2шт 
          (if (not nl10)(setq nl10 0.0))(setq nl10 (+ nl10 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
          ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS4_18_20")(progn ;число л/м 18вт 4шт 
          (if (not nl11)(setq nl11 0.0))(setq nl11 (+ nl11 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
           ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS4_36_20")(progn ;число л/м 36вт 4шт 
          (if (not nl12)(setq nl12 0.0))(setq nl12 (+ nl12 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
          ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS2_18Z_20")(progn ;число л/м 18вт 2шт   ЗЕРКАЛО 
          (if (not nl13)(setq nl13 0.0))(setq nl13 (+ nl13 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
          ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS2_36Z_20")(progn ;число л/м 36вт 2шт ЗЕРКАЛО 
          (if (not nl14)(setq nl14 0.0))(setq nl14 (+ nl14 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
          ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS4_18Z_20")(progn ;число л/м 18вт 4шт ЗЕРКАЛО 
          (if (not nl15)(setq nl15 0.0))(setq nl15 (+ nl15 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
           ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS4_36Z_20")(progn ;число л/м 36вт 4шт ЗЕРКАЛО 
          (if (not nl16)(setq nl16 0.0))(setq nl16 (+ nl16 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
          ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_LMS4_18V_20")(progn ;число л/м 18вт 4шт встроенный 
          (if (not nl17)(setq nl17 0.0))(setq nl17 (+ nl17 1.0))
          (if (not pr3)(setq pr3 0.0))(setq pr3 (+ pr3 1.3))
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.2))
           ; КАБЕЛЬ 3-жильн 
      ))
	 (if (equal c "1_RP3")(progn ;число люстр (условно) 
          (if (not sv13)(setq sv13 0.0))(setq sv13 (+ sv13 1.0))
                                ;люстра (условно) на 3 провода
          (if (not kl1)(setq kl1 0.0))(setq kl1 (+ kl1 3.0));клеммы 
          (if (not kr1)(setq kr1 0.0))(setq kr1 (+ kr1 1.0));крюк 
          (if (not rp1)(setq rp1 0.0))(setq rp1 (+ rp1 1.0))  
                                ;розетки потолочные к подвесным 
      ))
	 (if (equal c "1_RP4")(progn 
                            ;число люстр (условно) на 4 провода
          (if (not sv14)(setq sv14 0.0))(setq sv14 (+ sv14 1.0))
                            ;люстра (условно) на 4 провода
             (if (not kl1)(setq kl1 0.0))(setq kl1 (+ kl1 4.0));клеммы 
             (if (not kr1)(setq kr1 0.0))(setq kr1 (+ kr1 1.0));крюк 
             (if (not rp1)(setq rp1 0.0))(setq rp1 (+ rp1 1.0))
                            ;розетки потолочные к подвесным 
         ))
	 (if (equal c "1_SV2")(progn ; число светильников НПО 
          (if (not sv2)(setq sv2 0.0))(setq sv2 (+ sv2 1.0));число  НПО 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5))
                            ; КАБЕЛЬ 3-жильн 
      ))
 	 (if (equal c "1_SV3")(progn ; число светильников СУВ 
          (if (not sv3)(setq sv3 0.0))(setq sv3 (+ sv3 1.0));число  СУВ 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5))
                            ; КАБЕЛЬ 3-жильн 
      ))
 	 (if (equal c "1_SV3P")(progn ; число светильников СУВ вправо
          (if (not sv3p)(setq sv3p 0.0))(setq sv3p (+ sv3p 1.0));число  СУВ 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж 
      ))
 	 (if (equal c "1_SV3L")(progn ; число светильников СУВ влево
          (if (not sv3l)(setq sv3l 0.0))(setq sv3l (+ sv3l 1.0));число  СУВ 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж 
      ))
	 (if (equal c "1_SV4")(progn ; число светильников НПП 
          (if (not sv4)(setq sv4 0.0))(setq sv4 (+ sv4 1.0));число  НПП 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж 
      ))
	 (if (equal c "1_SV5")(progn ; число светильников НБО 
          (if (not sv5)(setq sv5 0.0))(setq sv5 (+ sv5 1.0));число  НБО 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж 
      ))
	 (if (equal c "1_SV6")(progn ; число светильников  
          (if (not sv6)(setq sv6 0.0))(setq sv6 (+ sv6 1.0));число ?  
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж
      ))
	 (if (equal c "1_SV7")(progn ; число светильников НСП 
          (if (not sv7)(setq sv7 0.0))(setq sv7 (+ sv7 1.0));число  НСП 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж 
      ))
	 (if (equal c "1_E27F")(progn ;число патронов Е27F подвесной
          (if (not sv8)(setq sv8 0.0))(setq sv8 (+ sv8 1.0));число  Е27F 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5)); КАБЕЛЬ 3-ж 
          (if (not kl1)(setq kl1 0.0))(setq kl1 (+ kl1 3.0));клеммы 
          (if (not kr1)(setq kr1 0.0))(setq kr1 (+ kr1 1.0));крюк 
          (if (not rp1)(setq rp1 0.0))(setq rp1 (+ rp1 1.0))
                            ;розетки потолочные к подвесным 
      ))
	 (if (equal c "1_E27H")(progn ;число патронов Е27Н настенный
          (if (not sv9)(setq sv9 0.0))(setq sv9 (+ sv9 1.0));число  Е27Н 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 0.5));КАБЕЛЬ 3-ж 
      ))
	 (if (equal c "1_R2O")(progn ;число розеток откр. 2-пол.
          (if (not r2o)(setq r2o 0.0))(setq r2o (+ r2o 1.0));число розеток
          (if (not pr2v)(setq pr2v 0.0))(setq pr2v (+ pr2v 2.5)); КАБЕЛЬ 2-ж         
       ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));число коробок У198
      ))
	 (if (equal c "1_R2O_Z")(progn;число розеток откр.заз.2-пол.
          (if (not r2oz)(setq r2oz 0.0))(setq r2oz (+ r2oz 1.0));N розеток
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.5)); КАБЕЛЬ 3-ж
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));число кор.У198
      ))
	 (if (equal c "1_R2S")(progn   ;число розеток скр. 2-пол.
          (if (not r2s)(setq r2s 0.0))(setq r2s (+ r2s 1.0));число розеток
          (if (not pr2v)(setq pr2v 0.0))(setq pr2v (+ pr2v 2.5));КАБЕЛЬ 2-ж
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));число кор.У198
          (if (not krl48)(setq krl48 0.0))(setq krl48 (+ krl48 1));кор.Л48 
      ))
	 (if (equal c "1_R2S_Z")(progn ;число розеток скр.заз.2-пол.
          (if (not r2sz)(setq r2sz 0.0))(setq r2sz (+ r2sz 1.0));N розеток
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.5));КАБЕЛЬ 3-ж                    
          (if (not krl48)(setq krl48 0.0))(setq krl48 (+ krl48 1.0));кор.Л48 
       ))
	 (if (equal c "1_2R2S_Z")(progn ;число розеток сдвоен.скр.заз. 2-пол.
          (if (not 2r2sz)(setq 2r2sz 0))(setq 2r2sz (+ 2r2sz 1));N розеток
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.5)); КАБЕЛЬ 3-ж
         ;(if (not nu1)(setq nu1 0))(setq nu1 (+ nu1 1));число коробок У198
          (if (not krl48)(setq krl48 0.0))(setq krl48 (+ krl48 1));кор.Л48 
       ))
	 (if (equal c "1_R3O_Z")(progn;число розеток откр.заз.3-пол.
          (if (not r3oz)(setq r3oz 0.0))(setq r3oz (+ r3oz 1.0));N розеток
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));число кор.У198
          (if (not pr5v)(setq pr5v 0.0))(setq pr5v (+ pr5v 2.5)); КАБЕЛЬ 5-ж
       ))
	 (if (equal c "1_PVM")(progn   ;число БЛОК розеток ПЭВМ
          (if (not rpvm)(setq rpvm 0))(setq rpvm (+ rpvm 1));число розеток
         ;(if (not nu1)(setq nu1 0))(setq nu1 (+ nu1 1));число коробок У198
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.5)); КАБЕЛЬ 3-ж 
       ))
	 (if (equal c "1_KM")(progn     ;число пускателей   
          (if (not nkm1)(setq nkm1 0))(setq nkm1 (+ nkm1 1));число КМ  
       ))  
	 (if (equal c "1_ZV")(progn         ;число звонков   
          (if (not nzv1)(setq nzv1 0))(setq nzv1 (+ nzv1 1));число звонков  
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 1.0)); КАБЕЛЬ 3-ж
       ))  
	 (if (equal c "1_PKE1")(progn    ;число кнопок 1 штифт.   
          (if (not nke1)(setq nke1 0))(setq nke1 (+ nke1 1));N кнопок 1 штиф. 
          (if (not pr2v)(setq pr2v 0.0))(setq pr2v (+ pr2v 2.0));КАБЕЛЬ 2-ж
         ;(if (not nu1)(setq nu1 0))(setq nu1 (+ nu1 1))
                       ;число коробок У198
       ))  

	 (if (equal c "1_PKE2")(progn    ;число кнопок 2 штифт.   
          (if (not nke2)(setq nke2 0))(setq nke2 (+ nke2 1));N кнопок 2 штиф. 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.0));КАБЕЛЬ 2-ж
         ;(if (not nu1)(setq nu1 0))(setq nu1 (+ nu1 1));число коробок У198
       ))  
	 (if (equal c "1_PKU")(progn      ;число ПКУ.-2KE-1HL   
           (if (not npku3)(setq npku3 0))(setq npku3 (+ npku3 1));число ПКУ. 
           (if (not pr5v)(setq pr5v 0.0))(setq pr5v (+ pr5v 2.0));КАБЕЛЬ 5-ж
          ;(if (not nu1)(setq nu1 0))(setq nu1 (+ nu1 1));число коробок У198
       ))  
	 (if (equal c "1_V1O")(progn   ;число выключ.1-пол.откр.   
          (if (not nvo1)(setq nvo1 0.0))(setq nvo1 (+ nvo1 1.0))
                           ;число выключ.1-пол.откр. 
          (if (not pr2v)(setq pr2v 0.0))(setq pr2v (+ pr2v 2.0));КАБЕЛЬ 2-ж
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));N коробок У198
       ))  
	 (if (equal c "1_V1Z")(progn   ;число выключ.1-пол.заз.   
          (if (not nvz1)(setq nvz1 0.0))(setq nvz1 (+ nvz1 1.0))
                         ;число выключ.1-пол.заз 
          (if (not pr2v)(setq pr2v 0.0))(setq pr2v (+ pr2v 2.0));КАБЕЛЬ 2-ж
          (if (not krl48)(setq krl48 0.0))(setq krl48 (+ krl48 1.0));кор.Л48 
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));N коробок У198
       ))
	 (if (equal c "1_V2O")(progn   ;число выключ.2-пол.откр.   
          (if (not nvo2)(setq nvo2 0.0))(setq nvo2 (+ nvo2 1.0))
                         ;число выключ.2-пол.откр 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.5)); КАБЕЛЬ 3-ж
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));N коробок У198
       ))
	 (if (equal c "1_V2Z")(progn   ;число выключ.2-пол.откр.   
          (if (not nvz2)(setq nvz2 0.0))(setq nvz2 (+ nvz2 1.0))
                         ;число выключ.2-пол.откр. 
          (if (not pr3v)(setq pr3v 0.0))(setq pr3v (+ pr3v 2.5));КАБЕЛЬ 3-ж
          (if (not krl48)(setq krl48 0.0))(setq krl48 (+ krl48 1.0)) ;кор.Л48 
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));N коробок У198
       ))
	 (if (equal c "1_VG")(progn    ;число выключ.гермет.   
          (if (not nvg)(setq nvg 0.0))(setq nvg (+ nvg 1.0))
                         ;число выключ.2-пол.откр. 
          (if (not pr2v)(setq pr2v 0.0))(setq pr2v (+ pr2v 2.0));КАБЕЛЬ 2-ж
         ;(if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0));N коробок У198
       ))
       (if (equal c "1_Y198")(progn ;число коробок У198
           (if (not nu1)(setq nu1 0.0))(setq nu1 (+ nu1 1.0))))
       (if (equal c "1_T1")(progn ;число стояков трубы Т26 шт
           (if (not nt1)(setq nt1 0))(setq nt1 (+ nt1 1))))
       (if (equal c "1_T2")(progn ;число стояков 2 трубы Т26 шт
          (if (not nt2)(setq nt2 0))(setq nt2 (+ nt2 1))))
       (if (equal c "1_U75")(progn ;коробка У75
          (if (not nu2)(setq nu2 0.0))(setq nu2 (+ nu2 1.0))))
     ))
   )) (setq a (entnext a))
)
(textscr)
(if (not svob) (prong (setq svob 0.0)))
(if (not svob2)(progn (setq svob2 0.0)))
(if sv2  (progn (setq svob (+ svob sv2))))
(if sv3  (progn (setq svob (+ svob sv3))))
(if sv4  (progn (setq svob (+ svob sv4))))
(if sv5  (progn (setq svob (+ svob sv5))))
(if sv6  (progn (setq svob (+ svob sv6))))
(if sv7  (progn (setq svob (+ svob sv7))))
(if sv8  (progn (setq svob (+ svob sv8))))
(if sv9  (progn (setq svob (+ svob sv9))))
(if sv3p  (progn (setq svob (+ svob sv3p))))
(if sv3l  (progn (setq svob (+ svob sv3l))))
(if sv13  (progn (setq svob (+ svob sv13))))
(if sv14  (progn (setq svob (+ svob sv14))))
(if nl1   (progn (setq svob (+ svob nl1))))
(if nl2   (progn (setq svob (+ svob nl2))))
(if nl3   (progn (setq svob (+ svob nl3))))
(if nl4   (progn (setq svob (+ svob nl4))))
(if nl5   (progn (setq svob (+ svob nl5))))
(if nl6   (progn (setq svob (+ svob nl6))))
(if nl7   (progn (setq svob (+ svob nl7))))
(if nl8   (progn (setq svob (+ svob nl8))))
(if nl9   (progn (setq svob (+ svob nl9))))
(if nl10  (progn (setq svob (+ svob nl10))))
(if nl11  (progn (setq svob (+ svob nl11))))
(if nl12  (progn (setq svob (+ svob nl12))))
(if nl13  (progn (setq svob (+ svob nl13))))
(if nl14  (progn (setq svob (+ svob nl14))))
(if nl15  (progn (setq svob (+ svob nl15))))
(if nl16  (progn (setq svob (+ svob nl16))))
(if nl17  (progn (setq svob (+ svob nl17))))
(if nl18  (progn (setq svob (+ svob nl18))))
(if nzv1  (progn (setq svob (+ svob nzv1))))
(if nke2  (progn (setq svob (+ svob nke2))))
(if nke1  (progn (setq svob2 (+ svob2 nke1))))
(if nvo1  (progn (setq svob2 (+ svob2 nvo1))))
(if nvz1  (progn (setq svob2 (+ svob2 nvz1))))
(if nvg   (progn (setq svob2 (+ svob2 nvg))))
(if nvo2  (progn (setq svob (+ svob nvo2))))
(if nvz2  (progn (setq svob (+ svob nvz2))))
(if nkm1  (progn (setq svob (+ svob nkm1))))
(if r2o   (progn (setq svob (+ svob r2o))))
(if r2oz  (progn (setq svob (+ svob r2oz))))
(if r2s   (progn (setq svob (+ svob r2s))))
(if r2sz  (progn (setq svob (+ svob r2sz))))
(if 2r2sz (progn (setq svob (+ svob 2r2sz))))
(princ "--------------------------------------")(terpri)
(if sv13 (progn (princ " ЧИСЛО свет-ков  (люстр) на 3 провода на ПЛАНЕ  = ")
   (princ sv13)(terpri)))
(if sv14 (progn (princ "ЧИСЛО свет-ков (люстр) на 4 провода    на ПЛАНЕ = ")
   (princ sv14)(terpri)))
(if sv2  (progn (princ " ЧИСЛО свет-ков   НПО               на ПЛАНЕ    = ")
   (princ sv2)(terpri)))
(if sv3  (progn (princ " ЧИСЛО свет-ков   СУВ               на ПЛАНЕ    = ")
   (princ sv3)(terpri)))
(if sv3p (progn (princ " ЧИСЛО свет-ков СУВ стрелка вправо  на ПЛАНЕ    = ")
   (princ sv3p)(terpri)))
(if sv3l (progn (princ " ЧИСЛО свет-ков СУВ стрелка влево   на ПЛАНЕ    = ")
   (princ sv3l)(terpri)))
(if sv4  (progn (princ " ЧИСЛО свет-ков   НПП               на ПЛАНЕ    = ")
   (princ sv4)(terpri)))
(if sv5  (progn (princ " ЧИСЛО свет-ков   НБO (ванные)      на ПЛАНЕ    = ")
   (princ sv5)(terpri)))
(if sv6  (progn (princ " ЧИСЛО свет-ков    ?                на ПЛАНЕ    = ")
   (princ sv6)(terpri)))
(if sv7  (progn (princ " ЧИСЛО свет-ков   НСП               на ПЛАНЕ    = ")
   (princ sv7)(terpri)))
(princ "----------------------------------------")(terpri)
(if nl18 (progn (princ "ЧИСЛО свет-ков ЛМС 1шт.11вт.1Р20 на ПЛАНЕ 
    антивандальный = ")(princ nl18)(terpri)))
(if nl1  (progn (princ "ЧИСЛО свет-ков ЛМС 1шт.18вт.1Р54 на ПЛАНЕ      = ") 
   (princ nl1)(terpri)))
(if nl2  (progn (princ "ЧИСЛО свет-ков ЛМС 1шт.36вт.1Р54 на ПЛАНЕ      = ")
   (princ nl2)(terpri)))
(if nl3  (progn (princ "ЧИСЛО свет-ков ЛМС 1шт.58вт.1Р54 на ПЛАНЕ      = ")
   (princ nl3)(terpri)))
(if nl4  (progn (princ " ЧИСЛО свет-ков ЛМС 1шт.9вт.1Р54 на ПЛАНЕ      = ")
   (princ nl4)(terpri)))
(if nl5  (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.36вт.1Р54 на ПЛАНЕ     = ")
   (princ nl5)(terpri)))
(if nl6  (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.58вт.1Р54 на ПЛАНЕ     = ")
   (princ nl6)(terpri)))
(if nl7  (progn (princ " ЧИСЛО свет-ков ЛМС 4шт.18вт.1Р54 на ПЛАНЕ     = ")
   (princ nl7)(terpri)))
(if nl8  (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.18вт.1Р20 на ПЛАНЕ      = ")
   (princ nl8)(terpri)))
(if nl9  (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.36вт.1Р20 на ПЛАНЕ      = ")
   (princ nl9)(terpri)))
(if nl10 (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.58вт.1Р20 на ПЛАНЕ      = ")
   (princ nl10)(terpri)))
(if nl11 (progn (princ " ЧИСЛО свет-ков ЛМС 4шт.18вт.1Р20 на ПЛАНЕ      = ")
   (princ nl11)(terpri)))
(if nl12 (progn (princ " ЧИСЛО свет-ков ЛМС 4шт.36вт.1Р20 на ПЛАНЕ      = ")
   (princ nl12)(terpri)))
(if nl13 (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.18вт.1Р20 Зерк.на ПЛАНЕ = ")
   (princ nl13)(terpri)))
(if nl14 (progn (princ " ЧИСЛО свет-ков ЛМС 2шт.36вт.1Р20 Зерк.на ПЛАНЕ = ")
   (princ nl14)(terpri)))
(if nl15 (progn (princ " ЧИСЛО свет-ков ЛМС 4шт.18вт.1Р20 Зерк.на ПЛАНЕ = ")
   (princ nl15)(terpri)))
(if nl16 (progn (princ " ЧИСЛО свет-ков ЛМС 4шт.36вт.1Р20 Зерк.на ПЛАНЕ = ")
   (princ nl16)(terpri)))
(if nl17 (progn (princ " ЧИСЛО свет-ков ЛМС 4шт.18вт.1Р20 Встр.на ПЛАНЕ = ")
   (princ nl17)(terpri)))
(princ "--------------------------------------------")(terpri)
(if nzv1 (progn (princ "ЧИСЛО звонков = ")(princ nzv1)(terpri)))
(if nkm1 (progn (princ " ЧИСЛО пускателей (без учета провода и коробок) = ")
   (princ nkm1)(terpri)))
(if nke1 (progn (princ "  ЧИСЛО кнопок 1-штифтовых ПКЕ откр.уст.        = ")
   (princ nke1)(terpri)))
(if nke2 (progn (princ "  ЧИСЛО кнопок 2-штифтовых ПКЕ откр.уст.        = ") 
   (princ nke2)(terpri)))
(if npku3 (progn (princ "  ЧИСЛО постов ПКУ на 2КЕ и 1HL откр.уст.      = ") 
   (princ npku3)(terpri)))
(princ "--------------------------------------------")(terpri)
(if sv8 (progn (princ "ЧИСЛО ПАТРОНОВ (кухни,коридор)подвесн.на ПЛАНЕ F = ")
   (princ sv8)(terpri)))
(if sv9 (progn (princ "ЧИСЛО ПАТРОНОВ (туалетных)настенный на ПЛАНЕ H   = ")
   (princ sv9)(terpri)))
(princ "--------------------------------------------")(terpri)
(if nvo1 (progn (princ "ЧИСЛО однополюсных выключателей откр.уст.       = ")
   (princ nvo1)(terpri)))
(if nvz1 (progn (princ "ЧИСЛО однополюсных выключателей скр .уст.       = ")
   (princ nvz1)(terpri)))
(if nvo2 (progn (princ "ЧИСЛО сдвоенный    выключателей откр.уст.       = ")
   (princ nvo2)(terpri)))
(if nvz2 (progn (princ "ЧИСЛО сдвоенный выключателей скр .уст.          = ")
   (princ nvz2)(terpri)))
(if nvg  (progn (princ "   ЧИСЛО герметичных  выключателей              = ")
   (princ nvg)(terpri)))
(princ "-------------------------------------------")(terpri)
(if rpvm (progn (princ "ЧИСЛО БЛОКОВ розеток ПЭВМ откр.уст.             = ")
   (princ rpvm)(terpri)))
(if r2o (progn (princ "ЧИСЛО розеток 2-пол.откр.уст.                    = ")
   (princ r2o)(terpri)))
(if r2oz (progn (princ "ЧИСЛО розеток 2-пол.откр.уст.заземл.конт.       = ")
   (princ r2oz)(terpri)))
(if r2s  (progn (princ "ЧИСЛО розеток 2-пол.скр .уст.                   = ")
   (princ r2s)(terpri)))
(if r2sz (progn (princ "ЧИСЛО розеток 2-пол.скр.уст.заземл.конт.        = ")
   (princ r2sz)(terpri)))
(if 2r2sz (progn (princ "ЧИСЛО розеток сдвоен.2-пол.скр.уст.заземл.конт.= ")
   (princ 2r2sz)(terpri)))
(if r3oz (progn (princ "ЧИСЛО розеток 3-пол.с заземл.конт.              = ")
   (princ r3oz)(terpri)))
(if rpr1 (progn (princ "ЧИСЛО розеток потолочных на ПЛАНЕ               = ")
   (princ rpr1)(terpri)))
(princ "-------------------------------------------")(terpri)
(if krl48 (progn (princ "ЧИСЛО коробок (Л48) на ПЛАНЕ                   = ")
   (princ krl48)(terpri)))
(if nu1 (progn (princ "ЧИСЛО коробок разветвит.ПОТОЛОЧ.(У198) на ПЛАНЕ  = ")
   (princ nu1)(terpri)))
(if nu2 (progn (princ "  ЧИСЛО коробок разветвит.ПОТОЛОЧ.(У75) на ПЛАНЕ = ")
   (princ nu2)(terpri)))
;(princ "-------------------------------------------")(terpri)
(if kl1 (progn (princ "ЧИСЛО клемм КЛ-2,5 на ПЛАНЕ                      = ")
   (princ kl1)(terpri)))
;(princ "-------------------------------------------")(terpri)
(if kr1 (progn (princ "ЧИСЛО крюков для подвеса светильников  на ПЛАНЕ  = ")
   (princ kr1)(terpri)))
(if nt1 (progn (princ "  ЧИСЛО стояков по 1 трубе в шт. T26 на ПЛАНЕ    = ")
   (princ nt1)(terpri)))
(if nt2 (progn (princ "  ЧИСЛО стояков по 2 трубе в шт. T26 на ПЛАНЕ    = ")
   (princ nt2)(terpri)))
(princ "----------------------------------------------")(terpri)
;(princ "  КАБЕЛЬ ДЛЯ ВЕРТИКАЛКИ                      ")(terpri)
;(princ "---------------------------------------------")(terpri)
;(if pr2  (progn (princ "  ДЛИНА кабеля 2-жильного ГОРИЗ.               = ") 
;   (rinc pr2)(terpri)))
;(if pr3  (progn (princ "  ДЛИНА кабеля 3-жильного ГОРИЗ.               = ")
;   (princ pr3)(terpri)))
;(if pr4  (progn (princ "  ДЛИНА кабеля 4-жильного ГОРИЗ.               = ")
;   (princ pr4)(terpri)))
;(if pr5  (progn (princ "  ДЛИНА кабеля 5-жильного ГОРИЗ.               = ")
;   (princ pr5)(terpri)))
;(princ "------------------------------------------")(terpri)
;(if pr2v (progn (princ "  ДЛИНА кабеля 2-жильного ВЕРТИК.              = ")
;   (princ pr2v)(terpri)))
;(if pr3v (progn (princ "  ДЛИНА кабеля 3-жильного ВЕРТИК.              = ")
;   (princ pr3v)(terpri)))
;(if pr4v (progn (princ "  ДЛИНА кабеля 4-жильного ВЕРТИК               = ")
;   (princ pr4v)(terpri)))
;(if pr5v (progn (princ "  ДЛИНА кабеля 5-жильного ВЕРТИ.               = ")
;   (princ pr5v)(terpri)))
;(princ "----------------------------------------")(terpri)
(setq klprr (* 15.0 svob))(setq klprr2 svob2) 
(setq klpr3 (* klprr 0.35))(setq klpr4 (* klprr 0.1))
(setq klpr5 (* klprr 0.05))
(princ "-----------------------------------------")(terpri)
(princ "          КАБЕЛЬ ПО ПЛАНУ                ")(terpri)
(princ "-----------------------------------------")(terpri)
(if klpr2 (progn (princ "ДЛИНА кабеля 2-жильного ПО ПЛАНУ РАСЧЕТНОЕ  = ")
   (princ klpr2)(terpri)))
(if klpr3 (progn (princ "ДЛИНА кабеля 3-жильного ПО ПЛАНУ РАСЧЕТНОЕ  = ")
   (princ klpr3)(terpri)))
(if klpr4 (progn (princ "ДЛИНА кабеля 4-жильного ПО ПЛАНУ РАСЧЕТНОЕ  = ")
   (princ klpr4)(terpri)))
(if klpr5 (progn (princ "ДЛИНА кабеля 5-жильного ПО ПЛАНУ РАСЧЕТНОЕ  = ")
   (princ klpr5)(terpri)))
(princ "-----------------------------------------")(terpri)
(setq a nil b nil c nil a1 nil)(gc)
)
Оглавление



Copyright © Сайт поддержки пользователей САПР