Тема: Помогите исправить ошибку в коде
Здравствуйте, уважаемый форумчане-программисты.
Не могу понять в чем ошибка. Lisp почитываю редко - когда припрет что-то облегчить.
С горем пополам родил простенький код, с помощью которого между двумя точками посередине проставляется точка в нужном мне слое. Вроде работает, но не всегда. Толи формат отображения точек влияет, то ли регенерация чертежа. Иногда точка ставится не посередине а на одной из выбранных точек (напомню - их по две выбираю). Сами координаты средней точки определяет правильно. Проверял через вывод на экран диалогового сообщения с координатами посередине кода.
Вот сам код:
(defun C:SPoint (/ snp nabor listt1 listt1 t1 t2 X Y X1 Y1 X2 Y2 t3) (setq snp (getvar "Osmode")) (setvar "Osmode" 8) (setq nabor (ssget "_:L" '(( 0 . "POINT")))); imya nabora (setq listt1 (entget (ssname nabor 0))) (setq listt2 (entget (ssname nabor 1))) (setq t1 (cdr (assoc 10 listt1))) (setq t2 (cdr (assoc 10 listt2))) (setq X (nth 0 t1)) (setq Y (nth 1 t1)) (setq X1 (nth 0 t2)) (setq Y1 (nth 1 t2)) (setq X2 (/ (+ X X1) 2)) (setq Y2 (/ (+ Y Y1) 2)) (Setq t3 (list X2 Y2)) (command "_.layer" "_s" "2 Точки центра опор" "") (setvar "CECOLOR" "4") (command "_point" t3) (command "_.layer" "_s" "0" "") (setvar "CECOLOR" "bylayer") (setq nabor nil) (setvar "Osmode" snp) )
В перспективе хочу развить код так, что бы при выборе множества точек средние точки проставлялись везде сами между теми точками, расстояние между которыми меньше значения "2" (в моем масштабе 1:1000 меньше 2 метров). Но это пока в перспективе долгих ночей общения с Полещуком.
А пока проблема остается проблемой.