Создание блока объектными методами
(defun ru-block-obj-make-unnamed-from-insert (insert_ent
new_ang
new_layer
new_color
new_lw
new_pline_width
/
insertion_point
obj
vla_array_objs
)
(setq
obj (vlax-ename->vla-object insert_ent)
insertion_point (vlax-safearray->list
(vlax-variant-value (vla-get-insertionpoint obj))
) ;_ end of vlax-safearray->list
vla_array_objs (ru-obj-ent-ss-explode obj)
;; ПРИМИТИВЫ ИМЕЮТ СВОЙСТВА ПО ОПРЕДЕЛЕНИЮ
) ;_ end of setq
(ru-obj-vla-array-move vla_array_objs insertion_point (list 0 0 0))
(ru-obj-vla-array-rotate vla_array_objs (list 0 0 0) new_ang)
(if new_layer
(ru-obj-vla-array-mod vla_array_objs "Layer" new_layer)
) ;_ end of if
(if new_color
(ru-obj-vla-array-mod vla_array_objs "Color" new_color)
) ;_ end of if
(if new_lw
(ru-obj-vla-array-mod
vla_array_objs
"Lineweight"
new_lw
) ;_ end of ru-obj-vla-array-mod
) ;_ end of if
(if new_pline_width
(ru-obj-vla-array-mod
vla_array_objs
"ConstantWidth"
new_pline_width
) ;_ end of ru-obj-vla-array-mod
) ;_ end of if
(ru-block-obj-make-unnamed-from-vla-array (list 0 0 0) vla_array_objs)
) ;_ end of defun
(defun ru-block-obj-make-unnamed (base_point selection)
(ru-block-obj-make-unnamed-from-vla-array base_point (vlax-make-variant(ru-ss-to-vla-array selection)))
)
(defun ru-block-obj-make-unnamed-from-vla-array (
base_point
arr_objects
/ obj)
;;; Возвращает VLA-объект определения блока
(ru-error-catch
(function
(lambda ()
(vla-copyobjects
(ru-obj-get-active-document)
arr_objects
(setq obj (vla-add (ru-obj-get-blocks) (vlax-3d-point base_point) "*U"))
) ;_ end of vla-copyobjects
(ru-obj-vla-array-erase arr_objects)
obj
) ;_ end of lambda
) ;_ end of function
(function
(lambda (msg)
(princ (strcat "
RU-BLOCK-OBJ-MAKE-UNNAMED-FROM-VLA-ARRAY: " msg))
nil
) ;_ end of lambda
) ;_ end of function
) ;_ end of ru-error-catch
)
(defun ru-block-obj-make-def (name
base_point
selection
)
;|
(ru-block-obj-make-def "new_block" (ru-get-point-reguired "Базовая точка" nil) (ru-ss-get-or-ssfirst))
|;
(ru-error-catch
(function
(lambda ()
(vla-copyobjects
(ru-obj-get-active-document)
(ru-ss-to-vla-array selection)
(vla-add (ru-obj-get-blocks) (vlax-3d-point base_point) name)
) ;_ end of vla-copyobjects
;; Удалить исходные объекты
(ru-obj-ent-ss-erase selection)
name
) ;_ end of lambda
) ;_ end of function
(function (lambda (msg)
(princ (strcat "
RU-BLOCK-OBJ-MAKE-DEF: " msg))
nil
) ;_ end of lambda
) ;_ end of function
) ;_ end of ru-error-catch
) ;_ end of defun