(defun test-odbx (file / odbx)
;|
* Обработка файла через ObjectDBX
* Параметры вызова:
file ; полный путь к обрабатываемому файлу. Проверка корректности не выполняется
* Примеры вызова:
(setq file (getfiled "Файл для обработки" "" "dwg" 4))
(test-odbx file)
|;
(setq odbx (vla-getinterfaceobject (vlax-get-acad-object)
(strcat "ObjectDBX.AxDbDocument." (itoa (atoi (getvar "acadver"))))
) ;_ end of vla-getinterfaceobject
) ;_ end of setq
(vla-open odbx file)
(put-layer-for-block-ref odbx "R-Тест" 2)
(vlax-invoke odbx 'saveas file)
(vlax-release-object odbx)
) ;_ end of defun
(defun test-docs ();|
* Обработка текущих файлов, без выполнения сохранения
|;
(vlax-for doc (vla-get-documents (vlax-get-acad-object)) (put-layer-for-block-ref doc "R-Тест" 2))
) ;_ end of defun
(defun put-layer-for-block-ref (doc layer-name layer-color / layer status) ;|
* Установка слоев для вхождений блоков, где бы они ни находились
|;
(setq layer (vla-add (vla-get-layers doc) layer-name))
(vla-put-color layer layer-color)
(vlax-for item (vla-get-layers doc)
(setq status (cons (list item
(mapcar (function (lambda (pr / temp)
(setq temp (vlax-get-property item pr))
(vl-catch-all-apply (function (lambda () (vlax-put-property item pr :vlax-false))))
(cons pr temp)
) ;_ end of lambda
) ;_ end of function
'("freeze" "lock")
) ;_ end of mapcar
) ;_ end of list
status
) ;_ end of cons
) ;_ end of setq
) ;_ end of vlax-for
(vlax-for def (vla-get-blocks doc)
(if (equal (vla-get-isxref def) :vlax-false)
(vlax-for ent def
(if (= (vla-get-objectname ent) "AcDbBlockReference")
(progn (vla-put-color ent 256) (vla-put-layer ent name))
) ;_ end of if
) ;_ end of vlax-for
) ;_ end of if
) ;_ end of vlax-for
(foreach item status
(foreach pr (cdr item)
(vl-catch-all-apply (function (lambda () (vlax-put-property (car item) (car pr) (cdr pr)))))
) ;_ end of foreach
) ;_ end of foreach
) ;_ end of defun