Привязка блока к линии с ориентацией
(defun ru-block-insert-align (block_lib_name block_name
x y
is_ask_rotate is_break_line
/ lst_break
)
;;; привязка блока к линии с ориентацией
;;; привязывает block_name из макроблока block_lib_name с масштабом X
;;; Y
;;; Если is_ask_rotate - дополнительный запрос на переворот на 180
;;; Если is_break_line - по размерам блока делается разрыв линии
;;; Блок должен быть единичной длины с точкой вставки по центру!
;;; возвращает lst_break
;;; (ru-block-insert-align "ru-lib-common" "ru_circle_and_cross_unit"
;;; 5
;;; 2 nil
;;; nil)
;;; (ru-block-insert-align "ru-lib-common" "ru_box_unit" 5 2 T T)
(if (ru-block-lib-insert block_lib_name block_name)
(while
(setq
lst_break (ru-pline-break-length
"Точка вставки на линии"
;; если 0 - только привязка, не 0 - разрыв
(if is_break_line
(ru-conv-millimeter-in-paper-to-unit x)
0
) ;_ end of if
) ;_ end of ru-pline-break-length
) ;_ end of setq
(ru-block-insert-obj
block_name
(car lst_break)
(ru-conv-millimeter-in-paper-to-unit x)
(ru-conv-millimeter-in-paper-to-unit y)
1
(cadr lst_break)
) ;_ end of ru-block-insert-obj
;; запрос ориентации
(if
(and
is_ask_rotate
(not (ru-dlg-no-cml "Перевернуть"))
) ;_ end of and
(ru-obj-ent-ss-rotate
(entlast)
(car lst_break)
pi
) ;_ end of ru-obj-ent-ss-rotate
) ;_ end of if
) ;_ end of while
) ;_ end of if
lst_break
) ;_ end of defun