DuanJinHui 发表于 2022-7-5 17:49:15

复制嵌套对象,一个奇怪的


(defun make*ublock(obj / blockobj)
(setq blockobj (vla-add (vla-get-blocks acaddocument) (vlax-3d-point (list 0 0 0))"*u" ))   
(vla-copyobjects acaddocument
        (vlax-safearray-fill
                (vlax-make-safearray vlax-vbobject (cons 0 0) )
                (list obj)   
        )
        blockobj
)   
(vla-delete obj)
(vla-get-nameblockobj)
)

(setq acadobject (vlax-get-acad-object)
acaddocument (vla-get-activedocument acadobject)
mspace (vla-get-modelspace acaddocument)
)

(setq nent (nentsel "\nSelect Nested Objects:"))
(entmake (entget (car nent)))
(setq objent (vlax-ename->vla-object (entlast))i 0)   
(foreach n (last nent)
(setq obj (vlax-ename->vla-object n))   
(setq blockrefobj
        ( vla-insertblock
                mspace
                (vla-get-insertionpoint obj)
                (make*ublockobjent)
                (vla-get-xscalefactor   obj)
                (vla-get-yscalefactor   obj)
                (vla-get-zscalefactor   obj)
                (vla-get-rotation       obj)
        )
)
(setq i (1+ i))
(if(> i 1)(command "_.explode" (entlast)))
(setq objent(vlax-ename->vla-object (entlast)))   
)

 
 
见附件。
从块“12”复制嵌套对象是正常的。在原始位置复制对象。
 
但从块“34”复制嵌套对象有问题。复制对象,而不是在原始位置。
 
为什么?如何修复?
测试3.dwg

DuanJinHui 发表于 2022-7-5 18:00:54

找了很久,没找到原因

Tharwat 发表于 2022-7-5 18:18:55

你好
 
原始块的原点(插入点)远离其定义内的原点,因此新创建的块遵循这些参数。
所以这也难怪,因为一切都是准确和正常的。

DuanJinHui 发表于 2022-7-5 18:28:42

 
谢谢我测试,如果我移动了块,那么使用该代码。复制对象,而不是在原始位置。有办法解决吗?

Tharwat 发表于 2022-7-5 18:34:14

 
上载修改后的块。

DuanJinHui 发表于 2022-7-5 18:41:31

 
移动时。如何上传?

Tharwat 发表于 2022-7-5 18:54:24

 
是否修改了块本身并将块内的所有对象移动到0,0,0?
页: [1]
查看完整版本: 复制嵌套对象,一个奇怪的