облегчения непосильного труда спринклеристов
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > облегчения непосильного труда спринклеристов

облегчения непосильного труда спринклеристов

Ответ
Поиск в этой теме
Непрочитано 14.04.2010, 13:12 #1
облегчения непосильного труда спринклеристов
nolte
 
спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190

сделал несколько лиспиков для спринклеров хотелось бы услышать отзывы и советы по улучшению ну естественно есть и вопросы потому как програмер я совсем не бывалый а точнее сказать чайник итак:
первый (<c:sm>) -- ставит спринклер в малые комнаты по стандарту (соблюдая размеры)
второй (<c:55>) -- должен делать то же что и первый но через выбор стен дабы в точки не целиться но работает малость не корректно если стена прорисована несколькими отрезками то как бы и блок вставляется не правильно
третий (<c:2>) -- распределяет спринклера в большом помещении работает неплохо есть одна затыка в первую линию ставит двойные блоки
четвертый (<c:8>) -- пока что не очень рабочий должен соединять спринклера линией с выбранным слоем оставляя так что бы под блоком не было линии попросту говоря блок должен резать линию возникла проблема с созданием списка из набора

Вложения
Тип файла: lsp 1.lsp (10.1 Кб, 75 просмотров)

Просмотров: 3294
 
Непрочитано 19.04.2010, 20:44
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Критика по коду (поскольку напрочь не знаю, что такое спринклер):
  1. Старайся не давать командам настолько простые имена. Они запросто могут совпасть с теми, что настроил пользователь.
  2. Команда sm: ни одна переменная не является локальной; нет отслеживания ошибок; не отслеживается ситуация, если пользователь нажал Esc при выборе точки; не отслеживается ситуация совпадения точек (и расположения их на одной прямой); не отслеживается, есть ли в файле вообще блок с таким мудреным именем.
  3. Помимо аналогичных ошибок: очень странно сделаны строки
    Код:
    [Выделить все]
      (initget 1 "Y N")
      (setq x (getreal "КОМНАТА ПРАВИЛЬНАЯ ? (Y or N) "))
      (cond ((= x "Y") 2)
            ((= x "y") 2)
            ((= x "N") 1)
            ((= x "n") 1)
            (t nil)
            ) ;_ end of cond
    По-моему, намного более устойчивым будет вариант типа
    Код:
    [Выделить все]
      (initget "Да Нет Yes No _ Y N Y N")
      (if (member (type (setq x (vl-catch-all-apply
                                  (function
                                    (lambda ()
                                      (getkword "Yes||No [Да/Нет] <Да> : ")
                                      ) ;_ end of lambda
                                    ) ;_ end of function
                                  ) ;_ end of vl-catch-all-apply
                              ) ;_ end of setq
                        ) ;_ end of type
                  (list 'str nil)
                  ) ;_ end of member
        (if (or (not x) (= x "Y"))
          (progn
            (princ " Вариант для ответа \"Да\"")
            ) ;_ end of progn
          (progn
            (princ " Вариант для ответа \"Нет\"")
            ) ;_ end of progn
          ) ;_ end of if
        ) ;_ end of if
    Там же: строка
    Код:
    [Выделить все]
    (inters
      (cdr (assoc 10 (entget pr1)))
      (cdr (assoc 11 (entget pr1)))
      (cdr (assoc 10 (entget pr2)))
      (cdr (assoc 11 (entget pr2)))
      nil
      ) ;_ end of inters
    Я ее переформатировал, чтобы легче читалось. Так вот, а если в качестве первой или второй "стороны" выбран не отрезок, а полилиния? Или комната имеет криволинейные стены?
  4. Функция calc_size. Почему расстояние между спринклерами устанавливается только целочисленным, а расстояние между линиями - двойной точности? Опять же, локальные переменные...
  5. Функция per1. Строку
    Код:
    [Выделить все]
    (setq sl (getint "\n!!!ОПРЕДЕЛИ СЛОИ ТРУБ!!! ВЫБЕРИ СЛОЙ 1''--1, 11/2''-- 112, 2''--2, 3''--3, 4''--4, 6''--6 : " ))
    я бы переделывал с самого начала. Например, сделать диалог. Или опять же, по getkword пытаться сделать. Это будет удобнее и проще.
Ну и так далее. Кода много, все анализировать времени не хватает. У тебя постоянно идет смена osmode, при этом в функции per1 смена osmode идет в самом конце выполнения функции. Зачем? Намного проще (если создавать примитивы полностью программно не получается) временно снимать привязку внутри команды: (command "_.pline" "_none" tram1 "_none" tram2 ;Ну и так далее
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.04.2010, 21:39
#3
Sprint

проектирование
 
Регистрация: 03.04.2007
Сообщений: 51


Дренчеры это тоже по вашей теме?
__________________
Лучшее, враг хорошего
Sprint вне форума  
 
Автор темы   Непрочитано 19.04.2010, 23:46
#4
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


спасибо за критику
чего то почерпнул например долго ломал голову к чему "_none" понял спасибо лиспик делаю для себя и под себя так что какие сокращения есть знаю такая строка для выбора слоя для ускорения вместо набора буковок тискаешь циферу и все я понимаю что код очень далек от совершенства (я практически учусь на этом коде с нуля) за это время кое чего подправил будет готово выложу
да где подсмотреть функции vla в доступном описании типа название функции синтаксис чего делает и пара тройка примеров пока не нашел.
sprint дренчеры это параллельная тема тут есть пояснения да кстати и что такое спринклерные системы пожаротушения
http://www.npfgarant.ru/home/Resh/po...nie/Sprink_sys
nolte вне форума  
 
Непрочитано 20.04.2010, 00:19
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Цитата:
Сообщение от nolte Посмотреть сообщение
где подсмотреть функции vla в доступном описании типа название функции синтаксис чего делает и пара тройка примеров
http://www.cad.dp.ua/stats/vla_doc.php
Offtop: А знаками препинания принципиально пренебрегаешь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.04.2010, 06:27
#6
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


пальцы не гнуться под знаки препинания
выплыла проблема с entlast выдает ошибку так и не понял почему попробовал поменять на vla-ename->vla object (entlast) эфект тот же
ошибка неверные аргумент и имя
вот фрагмент
Код:
[Выделить все]
(defun drow    ()
                    (setq i 1)
                    (while   (<= i  nspr) 
                                (setq i (+ 1 i))
                                (command "_insert" bb vst "1" "1" "0")
                                (setq en (entlast))
                                (setq elist (entget en)) 
                                (setq elist (subst (cons 8 "SPR")(assoc 8 elist) elist)) 
                                (entmod elist)
                                (setq vst (polar vst zav1 a))
                                (if (> i nspr) (setq vst (polar vst  (+ zav1 urad) (* (- i 1) a))))
                                
                    )
    )
    (defun zik ()
                        (setq j 2)
                    (while  (<= j nliniy)
                                (setq j (+ 1 j))
                                (setq vst (polar vst zav2 b))
                                (drow )
                    )
    )
самое интересное что прогоняет весь цикл включая функцию zik но потом застреет и не возвращает osmode
"_none" попробовал неплохо только раз выключает раз нет ставит блоки не по месту
nolte вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > облегчения непосильного труда спринклеристов



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Насущные проблемы ПОС, обсуждение замечаний экспертизы и других тонкостей нашего дела antim111 Технология и организация строительства 1942 10.12.2015 12:45
Сдельная оплата труда: договор. Regby Профессии и трудовые отношения 32 16.02.2010 08:40
Охрана труда. Сертификация. Начальные мероприятия. Кочетков Андрей Профессии и трудовые отношения 4 10.03.2009 14:01
Охрана труда Тома Прочее. Архитектура и строительство 2 31.05.2005 20:19