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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп (Автосетка)

Нужен лисп (Автосетка)

Закрытая тема
Поиск в этой теме
Непрочитано 12.07.2007, 21:46 #1
Нужен лисп (Автосетка)
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,143

Алгоритм:

Лисп прорисовывает сетку в заданной области, сетка набор приметивов линий с определенным шагом в каждом направлении.


Как лисп работает:

1) Введите длину участка =
2) Введите ширинуучастка =
3) Введите отступ по длине =
4) Введите отступ по ширине =
5) Введите шаг арматуры по длине =
6) Введите шаг арматуры по ширине =



Если будет введено это:


1) Введите длину участка = 1600
2) Введите ширину участка = 1600
3) Введите отступ по длине = 50
4) Введите отступ по ширине = 50
5) Введите шаг арматуры по длине = 200
6) Введите шаг арматуры по ширине = 200



То получим см. рисунок справа
слева показаны размеры которые ввели


[ATTACH]1184262101.JPG[/ATTACH]

:roll: :roll: :roll:
__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 3123
 
Автор темы   Непрочитано 12.07.2007, 21:54
#2
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Вот если возник вопрос если шаг будет не целый играем этим расстоянием
[ATTACH]1184262874.JPG[/ATTACH]
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 12.07.2007, 22:01
#3
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Если нужно то могу в скринах по порядку выложить как в автокаде обычным способом это быстро нарисовать
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 12.07.2007, 22:05
#4
Profan


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


Так, значит, в AutoCAD'е мОжно быстро нарисовать? Скажем, прямоугольным массивом?
Profan вне форума  
 
Автор темы   Непрочитано 12.07.2007, 22:12
#5
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Цитата:
Сообщение от Profan
Так, значит, в AutoCAD'е мОжно быстро нарисовать? Скажем, прямоугольным массивом?
можно и так но если сетка сложная запаришься с массивом ковырятся, а представь себе что следующий лисп будет не прямоугольный участок а область которая покрывается заливкой тогда вообще не реально...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.07.2007, 13:57
#6
VVA

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


Специально писал как можно проще, чтобы можно было разобраться начинающим
Код:
[Выделить все]
(defun C:Setka ( / Lx Ly Ox Oy ShagX ShagY pt LarmX LarmY nX nY OstX OstY)
  (setvar "CMDECHO" 0)
  (initget 7)
  (setq Lx (getdist "\nДлина участка: "))
  (initget 7)
  (setq Ly (getdist "\nШирина участка: "))
  (initget 7)
  (setq Ox (getdist "\nОтступ по длине участка: "))
  (initget 7)
  (setq Oy (getdist "\nОтступ по ширине участка: "))
  (setq ShagX (getdist "\nШаг арматуры по длине участка: "))
  (initget 7)
  (setq ShagY (getdist "\nШаг арматуры по ширине участка: "))
  (initget 1)
  (setq pt (getpoint "\nЛевый нижний угол"))
  (setq LarmX (- Lx Ox Ox))
  (setq LarmY (- Ly Oy Oy))
  (setq nX (fix (/ LarmX ShagX)))
  (setq nY (fix (/ LarmY ShagY)))
  (setq OstX (* 0.5 (- LarmX (* nX ShagX))))
  (setq OstY (* 0.5 (- LarmY (* nY ShagY))))
  (setq pt (mapcar '+ pt (list Ox Oy)))
  (command "_.LINE" "_none" (mapcar '+ pt (list 0 OstY)) "_none" (mapcar '+ pt (list Larmx OstY)) "")
  (command "_-ARRAY" (entlast) "" "_R" (1+ ny) 1 ShagY)
  (command "_.LINE" "_none" (mapcar '+ pt (list OstX 0)) "_none" (mapcar '+ pt (list OstX LarmY)) "")
  (command "_-ARRAY" (entlast) "" "_R" 1 (1+ nx) ShagX)
  (setvar "CMDECHO" 1)
  (princ)
  )
VVA вне форума  
 
Непрочитано 17.07.2007, 14:06
#7
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Думаю разберешься
http://dwg.ru/forum/viewtopic.php?t=10555
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 17.07.2007, 14:30
#8
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Хотя, я и далек от арматуры, но похожие задачи приходилось решать...
Но мой подход был совершенно другим.
Берется простая штриховка типа "NET", но с зазором между линиями равным 1мм и ей заштриховывается нужный контур с масштабом, равным шагу арматуры. Далее перетаскиваем точку генерации штриховки в центр помещения...
Если нужны именно линии, штриховку можно взорвать, но как штриховка, она очень удобна - легко редактировать...
Если расстояние между арматурой разное, можно использовать две линейных штриховки, но направленных перпендикулярно друг другу.

Надеюсь, кому нибудь помог...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 17.07.2007, 16:08
#9
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Цитата:
Сообщение от VVA
Специально писал как можно проще, чтобы можно было разобраться начинающим
Код:
[Выделить все]
(defun C:Setka ( / Lx Ly Ox Oy ShagX ShagY pt LarmX LarmY nX nY OstX OstY)
  (setvar "CMDECHO" 0)
  (initget 7)
  (setq Lx (getdist "\nДлина участка: "))
  (initget 7)
  (setq Ly (getdist "\nШирина участка: "))
  (initget 7)
  (setq Ox (getdist "\nОтступ по длине участка: "))
  (initget 7)
  (setq Oy (getdist "\nОтступ по ширине участка: "))
  (setq ShagX (getdist "\nШаг арматуры по длине участка: "))
  (initget 7)
  (setq ShagY (getdist "\nШаг арматуры по ширине участка: "))
  (initget 1)
  (setq pt (getpoint "\nЛевый нижний угол"))
  (setq LarmX (- Lx Ox Ox))
  (setq LarmY (- Ly Oy Oy))
  (setq nX (fix (/ LarmX ShagX)))
  (setq nY (fix (/ LarmY ShagY)))
  (setq OstX (* 0.5 (- LarmX (* nX ShagX))))
  (setq OstY (* 0.5 (- LarmY (* nY ShagY))))
  (setq pt (mapcar '+ pt (list Ox Oy)))
  (command "_.LINE" "_none" (mapcar '+ pt (list 0 OstY)) "_none" (mapcar '+ pt (list Larmx OstY)) "")
  (command "_-ARRAY" (entlast) "" "_R" (1+ ny) 1 ShagY)
  (command "_.LINE" "_none" (mapcar '+ pt (list OstX 0)) "_none" (mapcar '+ pt (list OstX LarmY)) "")
  (command "_-ARRAY" (entlast) "" "_R" 1 (1+ nx) ShagX)
  (setvar "CMDECHO" 1)
  (princ)
  )
Не просто а гениально просто, к тому же универсальный лисп как для конструкторов (рисовать сетки)
так для архитекторов (решетки на окнах )

VVA большое спасибо
у тебя есть специальный лисп редактор с подсветкой команд чтоли?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.07.2007, 17:52
#10
VVA

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


Lisp есть в Автокаде
Набери в командной строке VLIDE
Цитата:
так для архитекторов (решетки на окнах )
Архитекторы тюрьмы проектируют, что-ли
VVA вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен лисп (Автосетка)

Размещение рекламы