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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите написать программу на AUTOLISP'e

Помогите написать программу на AUTOLISP'e

Ответ
Поиск в этой теме
Непрочитано 07.11.2006, 12:38
Помогите написать программу на AUTOLISP'e
Сергей123
 
Регистрация: 24.01.2006
Сообщений: 12

Доброго времени суток всем!!!!

Я занимаюсь проектированием пожарной сигнализации, ну и вообщем подумал что можно написать программу по расстановке датчиков в помещении автоматически (а то очень муторно и долго времени отнимает) по НПБ 88-2001*.

Вообщем вот такое задание:
1. есть произвольная комната (геометрия любая, но в основном прямоугольные помещения) ну а лучше для обозначения этой комнаты на общем чертеже, ее можно было выделить, скажем поставить точку в каждый угол комнаты.
2. в этой уже выделенной комнате можно было расставить уже готовые блоки по заданному, из НПБ 88-2001* алгоритму.

Помогите кто чем может, заранее ОГРОМНОЕ СПАСИБО!!!!!!!!!!!!!!!!!
Просмотров: 8608
 
Непрочитано 02.09.2007, 19:01
#21
Vadze


 
Регистрация: 21.10.2006
Деревня мучений
Сообщений: 9


А если упростить задачу? Просто в заданном контуре программа оптимально рамещает окружности соотетственно зоне действия датчиков. Тут нужно только радиус прописывать, уже самостоятельно исходя из высоты помещения.
Vadze вне форума  
 
Непрочитано 02.09.2007, 23:23
#22
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Сергей123
Цитата:
Сообщение от kpblc
1. Это к тому, что сначала все же поискать не мешает.
2. Опять же, если там пусто, значит, готового решения нет.
3. Мне тоже много чего надо.

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

________________________________________
;; Файл NPP.lsp
________________________________________
Код:
[Выделить все]
(defun set_table5 (hgt)
(cond ((<= hgt 3.5)
       (setq smax 85.0)
       (setq rast_max 9.0)
       (setq st_max 4.5))
      ((< 3.5 hgt 6.0)
       (setq smax 70.0)
       (setq rast_max 8.5)
       (setq st_max 4.0))
      ((< 6.0 hgt 10.0)
       (setq smax 65.0)
       (setq rast_max 8.0)
       (setq st_max 4.0))
      ((< 10.5 hgt 12.0)
       (setq smax 55.0)
       (setq rast_max 7.5)
       (setq st_max 3.5))
      )
  
  (set_tile "smx" (vl-princ-to-string smax))
  (set_tile "rmx" (vl-princ-to-string rast_max))
  (set_tile "stx" (vl-princ-to-string st_max))
  )

(defun C:tab5 ()       
(setq dcl_id (load_dialog "NPP.dcl"))
   (if (not (new_dialog "norms" dcl_id) ) (exit))
 
(action_tile "calc" (strcat
  "(progn "
  "(setq hgt (atof (get_tile \"vys\")))"
  "(if (> hgt 12)(progn (alert \"Превышение высоты по таблице\")(done_dialog)(setq knock nil))"
      "(set_table5 hgt)))"
)
  )
(action_tile "accept" "(done_dialog 1)(setq knock T))"
)

(action_tile "cancel"
     "(done_dialog) (setq knock nil)"
)
   
   (start_dialog)
   (unload_dialog dcl_id)
  (if knock ;<-- если нажата кнопка "ОК"
    (progn
      (alert (strcat
	       "Исходные данные по таблице 5: \n"
	       "-------------------------------------\n"
	       "Высота: " (vl-princ-to-string hgt) " м.\n"
	       "Ср. площадь на 1 изв. : " (vl-princ-to-string smax) " кв. м.\n"
	       "Расст. между изв.: " (vl-princ-to-string rast_max) " м.\n"
	       "Расст. от стен: " (vl-princ-to-string st_max) " м."
	       )
	     )
      )
    )
  (princ)
  )
(princ)
(princ "\n   В командной строке введите TAB5")
;;; TesT : (C:tab5)
________________________________________
;; Файл NPP.dcl
________________________________________
Код:
[Выделить все]
dcl_settings : default_dcl_settings { audit_level = 3; }
norms : dialog {
        label = "Таблица 5.";
        initial_focus="vys";
     :column {
     : edit_box {
        label = "  Высота помещения :";
        key = "vys";
        width=8;
        fixed_width=true;
        alignment=right;
     }
          : edit_box {
        label = "Ср. площадь на 1 изв. : ";
        key = "smx";
                width=8;
        fixed_width=true;
                alignment=right;
     }
          : edit_box {
        label = "Расст. между изв.: ";
        key = "rmx";
                width=8;
        fixed_width=true;
                alignment=right;
     }
          : edit_box {
        label = "Расст. от стен: ";
        key = "stx";
                width=8;
        fixed_width=true;
                alignment=right;
     }
     }
     spacer;
     :row {
        : button {
        label = "Вычислить";
        key = "calc";
        width =12;
        fixed_width = true;
       }
      : button {
        label = "OK";
        key = "accept";
        width =10;
        fixed_width = true;
       }
       : button {
         label = "Cancel";
         is_cancel = true;
         key = "cancel";
         width =10;
         fixed_width = true;
       }
      }
     :text_part {
         label = "* Designed by Fatty T.O.H. *";
      }
     }
________________________________________

~'J'~
fixo вне форума  
 
Непрочитано 03.09.2007, 10:48
#23
Vadze


 
Регистрация: 21.10.2006
Деревня мучений
Сообщений: 9


Цитата:
Сообщение от Vadze
А если упростить задачу? Просто в заданном контуре программа оптимально рамещает окружности соотетственно зоне действия датчиков. Тут нужно только радиус прописывать, уже самостоятельно исходя из высоты помещения.
А на счёт этого, никто не подскажет, может кто может хоть словесно описать алгоритм оптимизации? заранее благодарю
Vadze вне форума  
 
Непрочитано 03.09.2007, 10:55
#24
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Vadze
А на счёт этого, никто не подскажет, может кто может хоть словесно описать алгоритм оптимизации? заранее благодарю
Я думаю был бы у него алгоритм, он бы
и сам давно написал

~'J'~
fixo вне форума  
 
Непрочитано 03.09.2007, 14:39
#25
Vadze


 
Регистрация: 21.10.2006
Деревня мучений
Сообщений: 9


Цитата:
Сообщение от Fatty
Цитата:
Сообщение от Vadze
А на счёт этого, никто не подскажет, может кто может хоть словесно описать алгоритм оптимизации? заранее благодарю
Я думаю был бы у него алгоритм, он бы
и сам давно написал

~'J'~
Ну я гораздо более простую задачу речь веду, и наверняка встречавшуюся у многих в практике
Vadze вне форума  
 
Непрочитано 03.09.2007, 15:47
#26
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


тема эта уже обсуждалась, например:
http://dwg.ru/forum/viewtopic.php?t=10138
http://dwg.ru/forum/viewtopic.php?p=75238

Есть такое начинание: http://dwg.ru/dnl/522

А в целом можно согласиться с Tramp - под автоматизацию просятся многие другие работы, а расстановку извещателей можно быстро выполнять и существующими инструментами.

PS: Пользуясь случаем, очень хочу выразить искреннее восхищение Кулик Алексей aka kpblc за его кругозор, юмор м многократную помощь самым разнообразным людям в самых разносторонних вопросах и в самых неожиданных местах!
Спасибо, kpblc!
Nike вне форума  
 
Непрочитано 03.09.2007, 16:28
#27
Кулик Алексей aka kpblc
Moderator

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


<offtop>Всегда пожалуйста Доброе слово оно, как известно, любому приятно </offtop>
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.09.2007, 08:08
#28
Fogel

люблю мастерить
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 10,332


Вынужден согласиться - вручную раставлять датчики выходит довольно шустро, что же касаемо длины кабелей, кабельных журналов и спецификаций, то в общем то уже есть несколько приличных программ как на базе автокада, так и компаса (только не спрашивайте каких - я их только ставлю электрикам, киповцам и тем же связистам и смгнализационщикам, а уж они в них роются и ищут недостатки, щас в работе штуки 4 разные). Строители передают им готовые чертежи зданий и наш отдел связи и сигнализации поверх видовых экранов шустро лепит эти датчики. Касаемо оптимизации: хотел бы я поглядет на того монтажника что будет тянуть кабель по потолку на "5метров 43 сантиметра в направлении 67 градусов от севера" Усе по прямой, при большой площади - змейкой. Для электриков точно такое есть - люстры размещать в зависимости от освещения.
Fogel вне форума  
 
Непрочитано 06.09.2007, 12:20
#29
Vadze


 
Регистрация: 21.10.2006
Деревня мучений
Сообщений: 9


Цитата:
Сообщение от Fogel
Вынужден согласиться - вручную раставлять датчики выходит довольно шустро, что же касаемо длины кабелей, кабельных журналов и спецификаций, то в общем то уже есть несколько приличных программ как на базе автокада, так и компаса (только не спрашивайте каких - я их только ставлю электрикам, киповцам и тем же связистам и смгнализационщикам, а уж они в них роются и ищут недостатки, щас в работе штуки 4 разные). Строители передают им готовые чертежи зданий и наш отдел связи и сигнализации поверх видовых экранов шустро лепит эти датчики. Касаемо оптимизации: хотел бы я поглядет на того монтажника что будет тянуть кабель по потолку на "5метров 43 сантиметра в направлении 67 градусов от севера" Усе по прямой, при большой площади - змейкой. Для электриков точно такое есть - люстры размещать в зависимости от освещения.

Если это большой комплекс, то монотонность такой работы добивает, конечно это не самый сложный процесс, но хотя бы его автоматизировать было бы замечательно.
Vadze вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите написать программу на AUTOLISP'e