Тема: LISP.Этюд на тему: функция GRREAD и объектная привязка.
Загружать все определения.
; GRREAD-WITH-SNAP. ; Вызов функции: (grread-with-snap "_end"). ; Демонстрирует техническую возможность привязки к конечной точке при использовании функции GRREAD. ; Автоматически масштабируемый маркер привязки создается функцией TEMP_END (см ниже). ; При условии наличия функций TEMP_MID, TEMP_INT, TEMP_NEA и т.д, аналогичных функции TEMP_END и умеющих рисовать ; временные маркеры для соответствующих типов привязки, становится возможен вызов функции GRREAD-WITH-SNAP ; с аргументами "_mid", "int", "_nea" и т.д.. (defun grread-with-snap (snt / acadapp; markercolor; lst pt ) (vl-load-com) (setq acadapp (vlax-get-acad-object)) (setq markercolor (autocolor)) (princ "\nSelect vertex: ") ; (while (and (setq lst (grread T 5 2)) (= (car lst) 5)) (redraw) (if (setq pt (osnap (cadr lst) "_end")) (apply (read (strcat "temp" snt)) (list pt (autosize 0.1) markercolor)) (setq pt (cadr lst)) ); ); (redraw) pt; ); end defun. ; TEMP_END. ; Рисует вокруг указанной точки временный маркер (квадрат) указанного цвета со сторонами, ориентированными вдоь осей ПСК. ; Возврат: список с координатами точки, вокруг которой отрисован маркер. (defun temp_end (pt; ПСК координаты точки. size; размер стороны маркера в единицах чертежа. col; цвет маркера. / h x y z; xmax ymax xmin ymin; ) (setq h (/ size 2.0) x (car pt) y (cadr pt) z (caddr pt) xmin (- x h) ymin (- y h) xmax (+ x h) ymax (+ y h)) (grdraw (list xmin ymax z) (list xmax ymax z) col) (grdraw (list xmax ymax z) (list xmax ymin z) col) (grdraw (list xmax ymin z) (list xmin ymin z) col) (grdraw (list xmin ymin z) (list xmin ymax z) col) pt; ); end defun. ; AUTOSIZE. ; Вычисляет размер маркера, масштабируемый с учетом высоты текущего ВЭ. (defun autosize (size; условный размер (подбирается экспериментально). ; ACADAPP / asmsize ) (setq asmsize (vlax-get-property (vlax-get-property (vlax-get-property ACADAPP 'preferences) 'drafting) 'autosnapmarkersize)) (* size (/ (getvar 'viewsize) asmsize)) ); end defun. ; AUTOCOLOR. ; Вычисляет текущий цвет маркеров автопривязки. (defun autocolor (;|ACADAPP|;) (vlax-get-property (vlax-get-property (vlax-get-property ACADAPP 'preferences) 'drafting) 'autosnapmarkercolor) ); end defun. ; *** EOF ***