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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как создать lisp Тройника

Как создать lisp Тройника

Ответ
Поиск в этой теме
Непрочитано 09.08.2010, 12:56
Как создать lisp Тройника
Boo87
 
Инженер
 
Алматы
Регистрация: 17.02.2010
Сообщений: 23

Добрый день. Начинаю учить lisp. И решил начать с создания lispa. который будет вычерчивать предызолированное тройниковое ответвление, под разные диаметры. Так вот помогите с lispом или посоветуй хороший учебник по lisp. Я даже не знаю с чего начинать!
http://www.mosflowline.ru/pic/22_2.jpg Данные тройника. Если кто может напишите пример lispa. Буду очень благодарен.
Просмотров: 6921
 
Автор темы   Непрочитано 10.08.2010, 15:04
#21
Boo87

Инженер
 
Регистрация: 17.02.2010
Алматы
Сообщений: 23


Спасибо и на этом, здесь может и действительно lisp не нужен.
Но его все таки надо учить! Не всегда динамический блок выход!
Boo87 вне форума  
 
Непрочитано 10.08.2010, 17:33
#22
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Boo87 Посмотреть сообщение
Спасибо и на этом, здесь может и действительно lisp не нужен.
Но его все таки надо учить! Не всегда динамический блок выход!
Можешь взять за основу - в твоем случае лучше использовать
параметрический ввод и спользовать функцию (list x y) для
задания точек
(Я закомментировал ввод данных для простоты тестирования
можешь изменить под свои условия)

Код:
[Выделить все]
(defun C:PTR (/ *error* apt1 apt2 apt3 apt4 
	         cpt1 cpt2 D1 D2 Dt1 Dt2
	          Gp L1 L2 lp1 lp2 lp3 lp4 pt Rad rp1 rp2 rp3 rp4)

  (defun *error* (msg)
    (if (and msg
	     (or
	       (wcmatch msg "Function cancelled,quit / exit abort")
	       )
    )
      (princ (strcat "\nError: " msg)
	     )
      (princ "\n < Error >")
    )
        (command "._undo" "_end")
    
    (setvar "cmdecho" 1)
  )
  
(command "._undo" "_be")
  
(setvar "cmdecho" 0)
  
(if (not (tblsearch "ltype" "DASHED2"))  
(command ".-linetype"
	 "_L"
	 "DASHED2"
	 (if (= 1 (getvar "measureinit"))
	   "acadiso.lin";--> если метрические единицы
	   "acad.lin");--> если имперские единицы
	   ""
	   )
)
  
  (setq  pt     (getpoint "\nУказать точку вставки: ")
	 
    Dt1    1200;(getreal "\nУказать диаметер основной трубы с изоляцией: ")
	 
    Dt2    1020;(getreal "\nУказать чистый диаметер основной трубы: ")
	 
    D1     315;(getreal "\nУказать диаметер патрубка с изоляцией: ")
	 
    D2     219;(getreal "\nУказать чистый диаметер патрубка: ")
    
    L1     1680;(getreal "\nУказать длину основной трубы с изоляцией: ")
    
    L2     1873.3;(getreal "\nУказать длину патрубка с изоляцией в плане: ")
    
    Gp     210 ;(getreal "\nУказать выступ трубы от изоляции: ")
	       
    rp1 (list (- (car pt)(/ L1 2))(- (cadr pt)(/ Dt1 2)))
	 
      rp2 (list (+ (car pt)(/ L1 2))(+ (cadr pt)(/ Dt1 2))
		)
	     
    cpt1 (list (car pt)(- (cadr pt)(- (* (/ Dt1 2)(sin (/ pi 4)))(* (/ D1 2)(sin (/ pi 4))))))
	 
    cpt2 (list (car pt)(- (cadr cpt1)(- (/ L2 2)(* (/ D1 2)(sin (/ pi 4))))))
	 
    Rad (/ D1 2)
	 
    apt1 (polar cpt1 0 Rad)
	 
    apt2 (polar cpt1 pi Rad)
	 
    Rad (* D1 (sin (/ pi 4)))
	 
    apt3 (polar cpt2 (/ pi 4) Rad)
	 
    apt4 (polar cpt2 (* 3 (/ pi 4)) Rad)
)
  
  (command "._rectangle" "_non" rp1 "_non" rp2
           "._change" "_L" "" "_P" "_C" "1" "_LT" "Continuous" "")

  (setq lp1 (list (car rp1) (- (cadr rp2)(/ (- Dt1 Dt2) 2)))
	
	lp2 (list (- (car rp1) Gp) (cadr lp1))
	
	lp3 (list (car lp2)(- (cadr lp2) Dt2))
	
	lp4 (list (car lp1)(cadr lp3))
	)
  
  (command "._pline" "_non" lp1 "_non" lp2 "_non" lp3 "_non" lp4 ""
           "._change" "_L" "" "_P" "_C" "7" "_LT" "DASHED2" "_S" "50" "")
  
  (setq lp1 (list (car rp2) (- (cadr rp2)(/ (- Dt1 Dt2) 2)))
	
	lp2 (list (+ (car rp2) Gp) (cadr lp1))
	
	lp3 (list (car lp2)(- (cadr lp2) Dt2))
	
	lp4 (list (car lp1)(cadr lp3))
	)
  
  (command "._pline" "_non" lp1 "_non" lp2 "_non" lp3 "_non" lp4 ""
           "._change" "_L" "" "_P" "_C" "7" "_LT" "DASHED2" "_S" "50" "")

  (command "._arc" "_C" "_non" cpt1 "_non" apt1 "_non" apt2
	   "._arc" "_C" "_non" cpt2 "_non" apt3 "_non" apt4)

  (setq lp1 (list (car apt1)(- (cadr apt1) L2))
	
	lp2 (list (car apt2)(- (cadr apt2) L2))
	)
  
  (command "._line" "_non" lp1 "_non" apt1 ""
           "._change" "_L" "" "_P" "_C" "1" "_LT" "Continuous" ""
	   "._line" "_non" lp2 "_non" apt2 ""
	   "._change" "_L" "" "_P" "_C" "1" "_LT" "Continuous" ""
           "._line" "_non" lp1 "_non" lp2 ""
	   "._change" "_L" "" "_P" "_C" "1" "_LT" "Continuous" ""
	   )
  
  (setq rp1 (list (+ (car lp2)(/ (- D1 D2) 2)) (cadr lp2))
	
	rp2 (list (car rp1)(-  (cadr rp1) Gp))
	
	rp3 (list (- (car lp1)(/ (- D1 D2) 2))(cadr rp2))
	
	rp4 (list (- (car lp1)(/ (- D1 D2) 2))(cadr lp1))
	)
  
  (command "._pline" "_non" rp1 "_non" rp2 "_non" rp3 "_non" rp4 ""
           "._change" "_L" "" "_P" "_C" "7" "_LT" "DASHED2" "_S" "20" "")
  (princ)
      )

(princ "\n  >>  Команда для выполнения: PTR  <<")
(prin1)
~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 11.08.2010, 08:21
#23
Boo87

Инженер
 
Регистрация: 17.02.2010
Алматы
Сообщений: 23


О спасибо. Будем посмотреть и изучать!
Boo87 вне форума  
 
Непрочитано 15.08.2010, 18:56
#24
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Offtop: Прошу прощения, ShaggyDoc, в прикрепленной тобой миниатюре в каком каде сделано сие творение?
alex8888 вне форума  
 
Непрочитано 15.08.2010, 19:26
#25
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Offtop: Прошу прощения, ShaggyDoc, в прикрепленной тобой миниатюре в каком каде сделано сие творение?
То ли в 2006, то ли в 2008 - уж не помню. Модель делалась програмами ruCAD.
ShaggyDoc вне форума  
 
Непрочитано 16.08.2010, 19:54
#26
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Offtop: ShaggyDoc, неужели в Автокаде? Я такое инвентором делаю, автокад у меня только "механический".
alex8888 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как создать lisp Тройника



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно из LISP создать свой тулбар с кнопкой? lexluther LISP 7 07.08.2009 16:15
Как можно из LISP создать КОМ объект и передать его методу BSTR строку? lexluther LISP 2 01.08.2009 00:27
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19