Редактор координат примитива

(defun ru-dlg-coord-edit (dlg_header ent /
edata lstdata newent
newlstdata newlstver std_lst_coords
)
;;; Диалоговый редактор полилинии
;;; возвращает новый примитив или nil
;;; (ru-dlg-coord-edit "Проба редактора" (entlast))
(if (setq std_lst_coords (ru-pline-list-vertex ent))
(progn
(setq edata (entget ent)
lstdata (list
(assoc 8 edata) ;Слой
(assoc 62 edata) ;Color
(assoc 43 edata) ;Ширина
(assoc 6 edata) ;Ltype
(assoc 48 edata) ;Ltype scale
(assoc 38 edata) ;Elevation
(assoc 39 edata) ;Thickness
(assoc 70 edata) ;Closed
(assoc 370 edata);LW
) ;_ end of list
) ;_ end of setq
(if
(setq newlstver
(_ru-dlg-coord-edit-2d dlg_header std_lst_coords)
) ;_ end of setq
;; Получили список новых вершин. Теперь применить бы прочие
;; прежние
;; свойства
;; Можно так (ru-obj-map-property-list '("Layer" "Color")
;; object1
;; arc-object2))
(progn
(if (setq newent (ru-pline-entmake
(car newlstver)
(cadr newlstver)
nil
0
;;width
0
;;lineweight
) ;_ end of ru-pline-entmake
) ;_ end of setq
;; (ru-makenewpoly newlstver closed nil 0))
(progn
(setq newlstdata (entget newent))
(while lstdata
(if (nth 0 lstdata)
(setq newlstdata
(if (assoc
(car (nth 0 lstdata))
newlstdata
) ;_ end of assoc
(subst (nth 0 lstdata)
(assoc
(car (nth 0 lstdata))
newlstdata
) ;_ end of assoc
newlstdata
) ;_ end of subst
(append newlstdata (list (nth 0 lstdata)))
) ;_ end of if
) ;_ end of setq
) ;_ end of if
(setq lstdata (cdr lstdata))
) ;_ end of while
(entmod newlstdata)
(entupd (cdr (assoc -1 newlstdata)))
(entdel ent)
) ;_ end of progn
(princ "
Линия не изменена!")
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
(princ "
Примитив недопустимого типа!")
) ;_ end of if
newent
) ;_ end of defun