![]() |
【转帖】无名块改为有名块,手中的老出错
无名块改为有名块,手中的老出错
www.dimcax.com ;;;将块变为无名块 (defun c:e ( / entnam);!!!块改无名块 (if (setq entnam (car (ko-entsel "\n请选择块:" '((0 . "insert")) (list "\n必须是块,重选.")))) (blk-rename entnam "*u") (princ "\n你没有选择物体!") ) (princ) ) (defun blk-rename (anonblkref bname / doc blks objs idx namedblkdef anonblkde) (vl-load-com) (if (= bname "*u") (vla-put-name (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) anonblkref) bname) (progn (setq anonblkref (vlax-ename->vla-object anonblkref)) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq blks (vla-get-blocks doc)) (setq anonblkdef (vla-item blks (vla-get-name anonblkref))) (setq namedblkdef (vla-add blks (vlax-3d-point '(0 0 0)) bname)) (setq objs (vlax-make-safearray vlax-vbobject (cons 0 (1- (vla-get-count anonblkdef))) ) ) (setq idx 0) (vlax-for obj anonblkdef (vlax-safearray-put-element objs idx obj) (setq idx (1+ idx)) ) (vla-copyobjects doc objs namedblkdef) (vla-put-origin namedblkdef (vla-get-origin anonblkdef)) (vla-put-name anonblkref bname) ) ) ) caoyin版主,上面的组合后,怎么你的改无名块会出错啊,,谢谢 d 请选择块:此类型的 lisp 值不能强制转换成 variant: <图元名: 7ec1d8c0> d 程序是不能这样拼的,建议你读懂程序再拼接 红色部分是有名块的块名(字符串), (setq anonblkref (vlax-ename->vla-object anonblkref)) 块名怎么能这样转换呢 (vla-put-name (vla-item (vla-get-blocks (vla-get-activedocument(vlax-get-acad-object))) "blockname") "*u") d 我没有了啦回去再看看,谢谢 d 解决,其实是自己昨天太忙了,所以注意到ko->entsel返回的是图元名 d |
所有的时间均为北京时间。 现在的时间是 08:15 PM. |