> 1 <

Автор Сообщение

PanNik

Members


Статус

5 сообщений

Где: Russia
Род занятий:
Возраст:

#3955   2011-02-22 14:35 GMT+3 часа(ов)      
Вот небольшая програмка, она рисует кружочки соотв радиуса вдоль нижней стенки прямоугольника соотв размера. Прошу помочь оптимизировать/уменьшить/упростить алгоритм/код программы. Или как бы вы решили (с проффесиональной точки зрения) эту задачу.

(DEFUN C:ROOM ( )
(SETQ A (GETPOINT (LIST 0 0) "\n Укажите точку отсчета"))
(SETQ XR (GETREAL "/n Укажите длину пряиоугнольника" ))
(SETQ YR (GETREAL "/n Укажите ширину прямоугольника" ))
(SETQ B (POLAR A 0 XR))
(SETQ C (POLAR B (/ Pi 2) YR))
(SETQ D (POLAR A (/ Pi 2) YR))
(SETQ R (GETREAL "/n введите радиус"))
(SETQ P ( LIST (+ (CAR A) R) (+ (CADR A) R)))

(COMMAND "_Line" A B C D "_CLOSE")



(WHILE (> (CAR B) (+ (CAR P) R))
(COMMAND "_CIRCLE" P R)
(SETQ PX (+ (CAR P) (* R 2)))
(SETQ PY (CADR P))
(SETQ P (LIST PX PY))
)

)


Волнует вот какая ещё проблема. При вводе определенных входных данных, строит наперекосяк. Например длинна 600000, ширина 500, и вот, например, если указать маленький радиус круга 38

отредактировал(а) PanNik: 2011-02-22 14:59 GMT+3 часа(ов)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3956   2011-02-22 16:56 GMT+3 часа(ов)      
(defun C:ROOM ()
(setq
P (progn (initget (+ 1 8)) (getpoint "\nBase point: "))
L (progn (initget (+ 1 2 4)) (getreal "\nRectangle length: "))
B (progn (initget (+ 1 2 4)) (getreal "\nRectangle breadth: "))
R (progn (initget (+ 1 2 4)) (getreal "\nRadius: ")))
(entmake
(mapcar 'cons
(list 0 100 100 90 70 10 10 10 10)
(list
"LWPOLYLINE" "AcDbEntity" "AcDbPolyline" 4 1
P
(mapcar '+ P (list L 0))
(mapcar '+ P (list L B))
(mapcar '+ P (list 0 B)))))
(setq P (mapcar '- P (list R 0 0)))
(repeat (fix (/ L 2.0 R))
(entmake
(mapcar 'cons
(list 0 100 100 10 40)
(list "CIRCLE" "AcDbEntity" "AcDbCircle" (setq P (mapcar '+ P (list (* 2 R) 0 0))) R))))
(prin1))

PanNik

Members


Статус

5 сообщений

Где: Russia
Род занятий:
Возраст:

#3957   2011-02-22 17:29 GMT+3 часа(ов)      
Спасибо! Осталось разобраться...
> 1 <


Онлайн :

0 пользователь(ей), 29 гость(ей) :




Реклама на сайте: