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

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

Ребята,помогите написать программу для построения прямоугольника через LISP-приложение

Ответ
Поиск в этой теме
Непрочитано 27.09.2011, 13:34 #1
Ребята,помогите написать программу для построения прямоугольника через LISP-приложение
222ketti
 
Регистрация: 27.09.2011
Сообщений: 3

Помогите написать программу для построения прямоугольника через LISP - приложение
Так что бы по данным вводимыми нами в диалоговом окне(которое мы тоже программируем,и в котором мы можем задать цвет, размеры и угол поворота относительно оси Х и посмотреть вид) строился прямоугольник в AutoCAD'е
Просмотров: 6041
 
Непрочитано 27.09.2011, 13:43
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от 222ketti Посмотреть сообщение
Помогите написать программу для построения прямоугольника через LISP - приложение
Так что бы по данным вводимыми нами в диалоговом окне(которое мы тоже программируем,и в котором мы можем задать цвет, размеры и угол поворота относительно оси Х и посмотреть вид) строился прямоугольник в AutoCAD'е
Где же это такой изверг-препод?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 27.09.2011, 15:30
#3
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от 222ketti Посмотреть сообщение
Так что бы по данным вводимыми нами в диалоговом окне(которое мы тоже программируем,и в котором мы можем задать цвет, размеры и угол поворота относительно оси Х и посмотреть вид)
222ketti, это тоже должно быть реализовано на лиспе?
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 27.09.2011, 15:34
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Про слой забыли.
Profan вне форума  
 
Непрочитано 27.09.2011, 15:56
#5
Andru1968


 
Регистрация: 29.08.2011
г. Балаково
Сообщений: 48


Есть код который рисует прямоугольные здания по точкам указанным в чертеже, под любым углом к оси X. Если что "звони" в личку.
Andru1968 вне форума  
 
Непрочитано 27.09.2011, 16:10
#6
Nike

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


Цитата:
Сообщение от Andru1968 Посмотреть сообщение
Если что "звони" в личку.
а что, тут "есть код" стыдно показать?
Nike вне форума  
 
Непрочитано 27.09.2011, 16:15
#7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Подобная программа (отрисовка прямоугольника под углом) есть в PLTools.
Profan вне форума  
 
Непрочитано 27.09.2011, 16:19
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Стандартная команда RECTANG тоже может под углом прямоугольник рисовать.
Do$ вне форума  
 
Непрочитано 27.09.2011, 16:28
#9
Nike

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


и POLYGON тоже может
Nike вне форума  
 
Непрочитано 27.09.2011, 16:41
#10
Andru1968


 
Регистрация: 29.08.2011
г. Балаково
Сообщений: 48


Цитата:
Сообщение от Nike Посмотреть сообщение
а что, тут "есть код" стыдно показать?
нет не стыдно
Andru1968 вне форума  
 
Непрочитано 27.09.2011, 16:43
#11
Nike

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


Цитата:
Сообщение от Andru1968 Посмотреть сообщение
нет не стыдно
ну тогда вываливай
Nike вне форума  
 
Непрочитано 27.09.2011, 16:51
#12
Andru1968


 
Регистрация: 29.08.2011
г. Балаково
Сообщений: 48


Цитата:
Сообщение от Nike Посмотреть сообщение
ну тогда вываливай
а оно надо, обсуждать код, который рабочий на все 100%. Но он сделан для решения определенных задач, а для решения задачи поставленной перед 222ketti, он может и не подойдет.
Цитата:
Сообщение от 222ketti Посмотреть сообщение
Помогите написать программу
Если 222ketti будет интересно его посмотреть я ему и так отправлю, а захочет обсудить с другими его применение для своей задачи выложит сам.
Andru1968 вне форума  
 
Автор темы   Непрочитано 27.09.2011, 20:09
#13
222ketti


 
Регистрация: 27.09.2011
Сообщений: 3


Цитата:
Сообщение от Alan Посмотреть сообщение
Где же это такой изверг-препод?
Политех

Нужно исключительно в AutoLisp'e
222ketti вне форума  
 
Непрочитано 27.09.2011, 21:44
#14
Кулик Алексей aka kpblc
Moderator

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


Как вариант, по-быстрому и не очень качественно:
Код:
[Выделить все]
 (vl-load-com)

(defun c:mrec (/ fun_change_color fun_change_lst fun_change adoc file handle dcl_id pt dcl_lst)

  (defun fun_change_color (/ res)
    (if (setq res (acad_colordlg 1))
      (set_tile "box_color" (itoa res))
      (set_tile "box_color" "")
      ) ;_ end of if
    (fun_change_lst "box_color" res)
    ) ;_ end of defun

  (defun fun_change_lst (key value)
    (setq dcl_lst (if (assoc (setq key (vl-string-trim "box_" key)) dcl_lst)
                    (subst (cons key value) (assoc key dcl_lst) dcl_lst)
                    (cons (cons key value) dcl_lst)
                    ) ;_ end of if
          ) ;_ end of setq
    ) ;_ end of defun

  (defun fun_change (key value)
    (cond
      ((and (= key "box_color")
            (< 0 (setq value (atoi value)) 256)
            ) ;_ end of and
       (fun_change_lst key value)
          ;(mode_tile "accept" 0)
       )
      ((and (= key "box_width")
            (< 0 (setq value (atof (vl-string-subst "." "," value))))
            ) ;_ end of and
       (fun_change_lst key value)
          ;(mode_tile "accept" 0)
       )
      ((and (= key "box_height")
            (< 0 (setq value (atof (vl-string-subst "." "," value))))
            ) ;_ end of and
       (fun_change_lst key value)
          ;(mode_tile "accept" 0)
       )
      ((and (= key "box_angle")
            (< 0 (setq value (atof (vl-string-subst "." "," value))))
            ) ;_ end of and
       (fun_change_lst key value)
          ;(mode_tile "accept" 0)
       )
      (t
          ;(mode_tile "accept" 1)
       (fun_change_lst key nil)
       )
      ) ;_ end of cond
    ) ;_ end of defun

  (setq file   (strcat (vl-string-right-trim "\\" (getenv "tmp")) "\\dlg.dcl")
        handle (open file "w")
        ) ;_ end of setq
  (foreach item '("dlg:dialog{"
                  ":row{label=\"Задание цвета\";"
                  "	:edit_box{key=\"box_color\";label=\"Цвет\";}"
                  "	:button{key=\"btn_color\";label=\"...\";width=3;}"
                  "	}"
                  ":row{label=\"Задание геометрии\";"
                  "	:edit_box{key=\"box_width\";label=\"Ширина\";}"
                  "	:edit_box{key=\"box_height\";label=\"Высота\";}"
                  "	:edit_box{key=\"box_angle\";label=\"Угол поворота, градусы\";}"
                  "	}"
                  "ok_cancel;"
                  "}"
                  )
    (write-line item handle)
    ) ;_ end of foreach
  (close handle)
  (setq dcl_id (load_dialog file))
  (new_dialog "dlg" dcl_id)
  (action_tile "btn_color" "(fun_change_color)")
  (action_tile "box_color" "(fun_change $key $value)")
  (action_tile "box_width" "(fun_change $key $value)")
  (action_tile "box_height" "(fun_change $key $value)")
  (action_tile "box_angle" "(fun_change $key $value)")
  (setq dcl_lst nil)
  (setq dcl_res (start_dialog))
  (unload_dialog dcl_id)
  (if (= dcl_res 1)
    (if (apply 'and
               (mapcar '(lambda (x)
                          (cdr (assoc x dcl_lst))
                          ) ;_ end of lambda
                       '("color" "height" "width" "angle")
                       ) ;_ end of mapcar
               ) ;_ end of apply
      (if (and
            (setq dcl_lst (subst (cons "angle" (/ (* (cdr (assoc "angle" dcl_lst)) pi) 180.))
                                 (assoc "angle" dcl_lst)
                                 dcl_lst
                                 ) ;_ end of subst
                  ) ;_ end of setq
            (= (type (setq pt (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (getpoint "\nУкажите нижний левый угол прямоугольника <Отмена> : ")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                           ) ;_ end of setq
                     ) ;_ end of type
               'list
               ) ;_ end of =
            ) ;_ end of and
        (entmakex
          (append
            (list '(0 . "LWPOLYLINE")
                  '(100 . "AcDbEntity")
                  '(100 . "AcDbPolyline")
                  (cons 62 (cdr (assoc "color" dcl_lst)))
                  '(90 . 4)
                  '(70 . 1)
                  '(43 . 0.0)
                  '(38 . 0.0)
                  '(39 . 0.0)
                  ) ;_ end of list
            (mapcar
              (function
                (lambda (x)
                  (cons 10 x)
                  ) ;_ end of lambda
                ) ;_ end of function
              (list pt
                    (setq pt (polar pt (cdr (assoc "angle" dcl_lst)) (cdr (assoc "width" dcl_lst))))
                    (setq pt (polar pt (+ (/ pi 2.) (cdr (assoc "angle" dcl_lst))) (cdr (assoc "height" dcl_lst))))
                    (polar pt (+ pi (cdr (assoc "angle" dcl_lst))) (cdr (assoc "width" dcl_lst)))
                    ) ;_ end of list
              ) ;_ end of mapcar
            ) ;_ end of append
          ) ;_ end of entmakex
        ) ;_ end of if
      (alert "Введены не все значения, запускайте снова!")
      ) ;_ end of if
    ) ;_ end of if
          (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 28.09.2011 в 08:59.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.09.2011, 08:40
#15
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Здесь небольшая ошибка

Код:
[Выделить все]
 (fun_change_lst "box_color" (itoa res))  ->  (fun_change_lst "box_color" res)
__________________
Никогда не спорьте с дураками - они опустят Вас до своего уровня и победят за счет опыта
CB вне форума  
 
Непрочитано 28.09.2011, 08:59
#16
Кулик Алексей aka kpblc
Moderator

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


Спасибо, исправил.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.09.2011, 10:58
#17
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Как вариант, по-быстрому и не очень качественно:
Алексей,
и ты думаешь препод поверит, что это ОНА написала? Я съем свою шляпу!
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 28.09.2011, 11:35
#18
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Вобще таких преподов надо дисквалифицировать - если это не "основной" предмет - достаточно изучение основ лиспа, если есть цель "серьезно" изчить вопрос - то уделили-бы внимание куда более важным вещам чем DCL. DCL это трупп, непрминимый больше ни где ни сам, ни как принцип (только не надо сейчас WPF приплетать), на его узучение надо потратить приличное количество времени с забиванием в голову ненужной ерунды - вся суть кода это написание оболочки вокруг примитивной операции. Вобщем ИХМО, полный дятел, тот преподователь, который такую программу ввел (если она не была написанна лет 20 назад, когда других вариантов не было, тогда дятел тот - кто ничего все эти 20 лет не делал). В итоге - 222keti скачает, препод боюсь сам удивится что заработало - пользы - ну только что Крыс пальцы размял.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 28.09.2011, 16:04
#19
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
на его узучение надо потратить приличное количество времени
Гораздо меньше, чем на любую альтернативу.
Do$ вне форума  
 
Непрочитано 28.09.2011, 18:34
#20
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Чего вы раскричались? Препод - дурак. Автолисп - фигня... Сделайте девушке нормальную студенческую программу за небольшое вознаграждение Или слабо?
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Ребята,помогите написать программу для построения прямоугольника через LISP-приложение



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Не могу написать примитивную LISP программу PolBlack LISP 2 07.11.2010 18:08
LISP. Доработать программу построения 2d из 3d vavII LISP 2 29.09.2010 20:56
AutoCAD 2011 при копировании не вставляет в другой чертеж Maxxwell AutoCAD 7 07.05.2010 14:44
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19