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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Реализовать чертеж Решето с помощью Автолиспа

Реализовать чертеж Решето с помощью Автолиспа

Ответ
Поиск в этой теме
Непрочитано 13.04.2010, 10:38 #1
Реализовать чертеж Решето с помощью Автолиспа
BBLainer
 
Регистрация: 12.04.2010
Сообщений: 12

Привет, всем. Знатоки и просто любители программирования в autolisp.
Есть задача.
Создать чертеж решето.
Основание - четырехугольник
Отверстия это будут квадраты, которые на чертеже должны заполняться в цикле.
Размеры будут браться из файла
Ширина основной детали
Длина основной детали
Сторона отверстия
Расстояние между отверстиями по оси OX
Расстояние между отверстиями по оси OY
Получается нужно использовать цикл чертить отверстия до тех пор пока.
помогите, плиз...
Просмотров: 3256
 
Непрочитано 13.04.2010, 11:34
#2
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от BBLainer Посмотреть сообщение
Размеры будут браться из файла
Из текстового? Тогда дай пример такого файла.
Makswell вне форума  
 
Автор темы   Непрочитано 13.04.2010, 14:23
#3
BBLainer


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


(command "insert" "my_ramka" "0,0" 1 1 0 1 1 "ПГТУ АСУз-04" "ФИО" "ФИО" "Файзрахманов Р.А.")
(defun C:PEREM()
(setq F(open "input.txt" "R")

R1 (atof(read-line F))
R2 (atof(read-line F))
R6 (atof(read-line F))
R8 (atof(read-line F))
R9 (atof(read-line F))
A1 (atof(read-line F))
A2 (atof(read-line F))

)

Вот отрывок кода на лиспе. Здесь ребята чертили деталь золотник...
Размеры изначально занесли в input.txt ввиде списка
Содерджание файла
99.0
46.0
32.0
22.4
16.0
10.0
08.2
BBLainer вне форума  
 
Непрочитано 13.04.2010, 16:28
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Вот примерно. Думаю, доработаешь как надо.
Код:
[Выделить все]
(defun test (/ draw_otv
	     ;;
	     file lst str pt x count_x y count_y)
  (defun draw_otv (pt1 a)
    (vl-cmdf "_RECTANGLE"
	     "_none"
	     (list (- (car pt1) (/ a 2)) (- (cadr pt1) (/ a 2)))
	     "_none"
	     (list (+ (car pt1) (/ a 2)) (+ (cadr pt1) (/ a 2)))
    )
  )
  (setq file (getfiled "Выбор файла с данными" "" "txt" 4))
  (if file
    (progn
      (setq file (open file "r"))
      (while (setq str (read-line file))
	(setq lst (cons (atof str) lst))
      )
      (setq lst (reverse lst))
      (close file)
    )
  )
  (setq pt (getpoint "Укажите левый нижний угол прямоугольника:"))
  (if pt
    (progn
      (vl-cmdf "_RECTANGLE"
	       "_none"
	       pt
	       "_none"
	       (list (+ (car pt) (nth 0 lst)) (+ (cadr pt) (nth 1 lst)))
      )
      (setq count_x (fix (/ (nth 0 lst) (nth 3 lst)))
	    x	    (/ (- (nth 0 lst) (* count_x (nth 3 lst))) 2)
      )
      (if (< x (/ (nth 2 lst) 2))
	(setq x	      (+ x (/ (nth 3 lst) 2))
	      count_x (1- count_x)
	)
      )
      (setq count_y (fix (/ (nth 1 lst) (nth 4 lst)))
	    y	    (/ (- (nth 1 lst) (* count_y (nth 4 lst))) 2)
      )
      (if (< y (/ (nth 2 lst) 2))
	(setq y	      (+ y (/ (nth 4 lst) 2))
	      count_y (1- count_y)
	)
      )
      (draw_otv (list (+ (car pt) x) (+ (cadr pt) y)) (nth 2 lst))
      (vl-cmdf "_-ARRAY"
	       (entlast)
	       ""
	       "_R"
	       (1+ count_y)
	       (1+ count_x)
	       (nth 4 lst)
	       (nth 3 lst)
      )
    )
  )
  (princ)
)
Текстовый файл должен быть примерно такой структуры:
Цитата:
200
100
10
30
20
Где (построчно):
Ширина основной детали
Длина основной детали
Сторона отверстия
Расстояние между отверстиями по оси OX
Расстояние между отверстиями по оси OY
Makswell вне форума  
 
Автор темы   Непрочитано 14.04.2010, 10:19
#5
BBLainer


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


О спасибо огромное, не буду говорить громких слов. Но я признательна. Попробую и потом отпишу, как работает это код
BBLainer вне форума  
 
Автор темы   Непрочитано 17.04.2010, 09:06
#6
BBLainer


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


Мне вот нужно чтобы загрузив файл lisp автокад вычертил автоматом чертеж.
Т.е должна быть уже в коде определена точка левого нижнего угла прямоугольника.
И что такое nth lst
И еще при загрузке показывает ошибку Command: ; Ошибка: Синтаксическая ошибка

Последний раз редактировалось BBLainer, 20.04.2010 в 11:40.
BBLainer вне форума  
 
Автор темы   Непрочитано 23.04.2010, 15:23
#7
BBLainer


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


Привет, вот что получилось с твоим кодом, я его подправила,
Вложения
Тип файла: rar Новая папка.rar (58.0 Кб, 87 просмотров)
BBLainer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Реализовать чертеж Решето с помощью Автолиспа

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью lisp'a открыть чертеж, на который поставлен пароль? annt LISP 2 09.03.2010 21:41
Помогите опознать приложение, в котором выполнен чертеж lunsky AutoCAD 6 02.07.2008 19:06
Как сделать правильный чертеж pk77 Разное 64 03.04.2007 16:36