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

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

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

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

Добрый день. Начинаю учить lisp. И решил начать с создания lispa. который будет вычерчивать предызолированное тройниковое ответвление, под разные диаметры. Так вот помогите с lispом или посоветуй хороший учебник по lisp. Я даже не знаю с чего начинать!
http://www.mosflowline.ru/pic/22_2.jpg Данные тройника. Если кто может напишите пример lispa. Буду очень благодарен.
Просмотров: 6919
 
Непрочитано 09.08.2010, 13:03
#2
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


В 3D или на плоскости?
E-degtyarev вне форума  
 
Автор темы   Непрочитано 09.08.2010, 13:45
#3
Boo87

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


Извиняюсь. Забыл написать, на плоскости!
Boo87 вне форума  
 
Непрочитано 09.08.2010, 13:50
#4
Profan


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


Цитата:
И решил начать с создания lispa. который будет вычерчивать предызолированное тройниковое ответвление, под разные диаметры.
Круто. Я начинал с отрисовки простого прямоугольника...
Profan вне форума  
 
Автор темы   Непрочитано 09.08.2010, 14:00
#5
Boo87

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


Дак я бы тож начал, только вот на работе достали, сижу в роли админа по AutoCADу. И вот прижали надо им срочно сие извоять!
Boo87 вне форума  
 
Непрочитано 09.08.2010, 14:27
#6
Кулик Алексей aka kpblc
Moderator

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


Тихо подозреваю, что здесь будет достаточно динамического блока (см. соответствующую тему в разделе "AutoCAD")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.08.2010, 14:32
#7
мы виталич


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


тебе с лиспом секасом позаниматься
...или развертки?
если второе -> http://www.plate-n-sheet.com/ тебе в помощь...
мы виталич вне форума  
 
Автор темы   Непрочитано 09.08.2010, 14:33
#8
Boo87

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


Динамический блок получается не удобен для наших "любимых" пользователей. И я хотел внести этот лисп в созданную Институтом надстройку для AutoCAD!
Boo87 вне форума  
 
Непрочитано 09.08.2010, 14:41
#9
Дима_

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


А что говорит создатель "институтской надстройки"?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 09.08.2010, 14:45
#10
Boo87

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


Создатель уволился. И найти его очень сложно! Да и сам хочу разобраться во всем этом!
Boo87 вне форума  
 
Непрочитано 09.08.2010, 14:47
#11
Кулик Алексей aka kpblc
Moderator

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


Интересно, а что должно получиться в результате? Какого вида должен быть чертеж?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.08.2010, 14:52
#12
Boo87

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


Блин, Файлы не прикрепляются.
Но выглядеть должно примерно так: http://www.stroyoffis.ru/gost_materi...1/image015.jpg Это его план и соответственно разрез!
Boo87 вне форума  
 
Непрочитано 09.08.2010, 15:41
#13
Дима_

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


Тут по любому выгодней смотриться дин. блок. ну а если приперло - пиши формулу координаты каждой узловой точки (на входе исходные данные - на выходе координаты), и обрисовывай полученное полилинией. Похожие лиспы смотри в "весенних" темах - подобные задачи часто студентам задают - а все двоечники сюда попрошайничать - поищи пара-тройка подобных лиспов точно есть.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 09.08.2010, 18:18
#14
ShaggyDoc

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


Изучай книгу "САПР на базе AutoCAD - как это делается". Там есть все, чтобы разобраться. В том числе и с тройниками.

На твоем рисунке не тройник, а сразу несколько элементов - основная труба, тройник (врезка), отвод, участок ответвления. Вот разбивая на такие элементы и надо все делать.

А общий принцип прост - как написал Дима_, определяешь расчетом координаты каждой точки рисунка и соединяешь их линиями.

В 3D это даже проще - точек много не надо высчитывать, а виды со всех сторон получать.
Миниатюры
Нажмите на изображение для увеличения
Название: chamber_007.jpg
Просмотров: 142
Размер:	67.9 Кб
ID:	43432  
ShaggyDoc вне форума  
 
Непрочитано 09.08.2010, 19:33
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Еще посмотри эти сслыки
1. HVAC_Duct Антон Емельдяжев
2. HVAC Duct Program
3. Piping Program
4. HVAC Programers library
По ссылке в №1 не будет работать в русском Автокаде
чтобы работал, см вложение и читай файл readme.txt
Вложения
Тип файла: rar HVAC Duct Трубопроводы.rar (620.3 Кб, 141 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.08.2010, 05:56
#16
ShaggyDoc

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


Цитата:
Но выглядеть должно примерно так
Кстати, выглядеть должно совершенно не так. Сопряжения нарисованы неграмотно. Если так будет рисовать программа, могут побить. Возможно, ногами.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 10.08.2010, 07:03
#17
Boo87

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
На твоем рисунке не тройник, а сразу несколько элементов - основная труба, тройник (врезка), отвод, участок ответвления. Вот разбивая на такие элементы и надо все делать.
Я и написал что это не тройник (сокращеннно), а тройниковое ответвление и изготавливается он, как один элемент. Я уж знаю что это и как он сделан. С завода он поставляется именно так и проектировщику не зачем забивать голову из каких деталей он сделан!

А по поводу, как он выглядит. Я написал что примерно так, это схематично, так как чертеж не прикрепляется. Ясно дело что должо быть аккуратно и красиво!

В 3D рисовать наши пользователи не умеют, я бы с радостью!

А вот за ссылки огромное спасибо!
Только на сколько я понял, эти программы все для вычерчивания черных труб, а не предызолированных!

Прикладываю чертеж план тройника, так у нас чертят пользователи им этого достаточно!
Вложения
Тип файла: dwg
DWG 2007
Тройниковое ответвление ǿ1020-ǿ219.dwg (91.9 Кб, 1330 просмотров)

Последний раз редактировалось Boo87, 10.08.2010 в 07:17.
Boo87 вне форума  
 
Непрочитано 10.08.2010, 09:43
#18
ShaggyDoc

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


Цитата:
Я и написал что это не тройник (сокращеннно), а тройниковое ответвление и изготавливается он, как один элемент. Я уж знаю что это и как он сделан. С завода он поставляется именно так и проектировщику не зачем забивать голову из каких деталей он сделан
Но ты же собрался программировать такое ответвление. А в программировании надо разбивать программу на отдельные элементы. Вот, автомобиль в сборе - тоже "один элемент". Но делают его частями.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 10.08.2010, 10:04
#19
Boo87

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


Не совсем удачное сравнение, я черчу груба говоря примитив а не 3D модель!
Boo87 вне форума  
 
Непрочитано 10.08.2010, 14:19
#20
vrtm

рисование
 
Регистрация: 19.02.2009
Сообщений: 212
<phrase 1=


Прочитай еще раз сообщение #6.
И никакого лиспа
vrtm вне форума  
 
Автор темы   Непрочитано 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