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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Что не так с программой?

Что не так с программой?

Ответ
Поиск в этой теме
Непрочитано 01.09.2009, 10:03 #1
Что не так с программой?
hawkeye
 
Регистрация: 10.08.2009
Сообщений: 10

По задумке должна разбивать линию или область на пропорциональные участки, т.е. елси надо разместить 4 объекта, то должна выдать _|__|__|__|_
Код:
[Выделить все]
(defun C:test(/ pt1 pt2 n )
(vl-load-com)
(setvar "blipmode" 0)
(setvar "cmdecho" 0)
(setq pt1 (getpoint "\nНачало линии( Левый угол): "))
(setq pt2 (getpoint "\nКонец линии( Правый угол): "))
(setq n (getint "\nКоличество объектов-"))
(setq i 0)
 (if (= (cadr pt1) (cadr pt2))
  (setq y (cadr pt1))
 );if
 (if (/= (cadr pt1) (cadr pt2))
  (setq y (/ (+ (cadr pt2) (cadr pt1)) 2))
 );if
(setq de (/ (/ (- (car pt2) (car pt1)) n) 10)) 
(setq temp (/ (/ (- (car pt2) (car pt1)) n) 2))
(setq tmp (/ (- (car pt2) (car pt1)) n))  
(while (< i n)
  (progn
     (if (< i 1)
       (command "_.pline" (list (car pt1) y) (list (+ temp (car pt1)) y) (list (+ temp (car pt1)) (+ y de))  "")
     );if
     (if (> i 0)
       (command "_.pline" (list (+ temp (car pt1) (* tmp (- i 1))) y) (list (+ temp (car pt1) (* tmp i)) y) (list (+ temp (car pt1) (* tmp i )) (+ y de))"")
     );if

     (setq i (+ i 1)) 
  );progn
);while
);defun
но в результате, если количество больше 11(???) чертит просто линиибез вертикальных. а если задавать точки на одной прямой, то вообще ересь какая то...непонятно.
Просмотров: 2614
 
Непрочитано 01.09.2009, 10:18
#2
Дима_

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


Поищи "грабли N1", "командные методы" - не отключенны привязки. Либо перед укзанием точки "_none", либо отключай привязки - а вобще чем лучше забудешь про ком. методы тем лучше - это тупиковый путь, см DXF и VLA.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.09.2009, 10:21
#3
hawkeye


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


Отключить привязки! это я понял, а что такое ком.методы и почему тупиковый путь? я с лиспом всего 3 недели наверное общаюсь, да и то урывками)))
hawkeye вне форума  
 
Непрочитано 01.09.2009, 11:23
#4
E-degtyarev

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


(command ..........) - это и есть командные методы создания примитивов.
Путь может быть и не тупиковый, но много проблем и мало возможностей.
Попробуй сразу ENTMAKE и ENTMAKEX.

Может быть поможет эта мазня.
Код:
[Выделить все]
(defun C:test ()
  (setq pp1 (getpoint "\nНачальная точка :"))
  (setq pp2 (getpoint pp1 "\nКонечная точка : "))
  (setq n (getint "\nКоличество объектов:"))
  (setq ugo2 (angle pp1 pp2))
  (setq ddi2 (distance pp1 pp2))
  (setq dist1 (/ ddi2 n))
  (setq p1 pp1)
  (repeat n
    (setq p2 (polar p1 ugo2 dist1))
    (setq p3 (polar p2 (+ ugo2 (* pi 0.5)) (* 0.1 dist1)))
(command "_pline" p1 p2 p3 "")
    (setq p1 (polar p1 ugo2 dist1))
  )
)

Последний раз редактировалось E-degtyarev, 04.09.2009 в 11:30.
E-degtyarev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Что не так с программой?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Утепление стен изнутри kubik67 Конструкции зданий и сооружений 59 26.11.2011 23:15
Отчёт о прохождении первой производственной практике для сту GtnAlucard Разное 13 12.03.2009 08:21
Юмор 2008 Серёга - Bilder Разное 1185 08.01.2009 11:55
Электромагнитная пушка T-Yoke Машиностроение 112 06.08.2008 18:48