Olhado_ 发表于 2022-7-6 12:26:32

复制具有属性的块


(defun C:cb ()
(setq blkent (car (entsel "Select block to Copy: "))
lstent (entget blkent))
(setq ptcpy (getpoint "Enter Point to copy: "))
(setq ptcpy (cons '10 ptcpy))
(setq lstnewent lstent)
(setq lstnewent (subst ptcpy (assoc 10 lstent) lstnewent))
(entmake (list (assoc 0 lstnewent)
(assoc 8 lstnewent)
(assoc 2 lstnewent)
(assoc 10 lstnewent)
(assoc 41 lstnewent)
(assoc 42 lstnewent)
(assoc 43 lstnewent)
(assoc 50 lstnewent)
))
)

 
我试图复制一个块,但仍然能够编辑属性(附加的是一个块)。我目前可以复制一个区块;但是当我尝试运行eattedit命令时,我得到了以下结果:“该块没有可编辑的属性。”我认为这可能与实体组代码330有关;但我不能确定。
 
我知道有复印功能;但我正在尝试对这个区块做其他事情,一旦它被复制。
 
有人有什么建议吗?
标志。图纸

nukecad 发表于 2022-7-6 12:47:41

插入后是否尝试过爆炸?
你可能会遇到一个街区中的街区。

alanjt 发表于 2022-7-6 12:57:08

我知道是VLA,但这有帮助吗?
(defun c:CB (/ #Block #Point)
(vl-load-com)
(and (setq #Block (car (entsel "\nSelect block to copy: ")))
      (eq "INSERT" (cdr (assoc 0 (entget #Block))))
      (setq #Point (getpoint "\nSpecify placement point: "))
      (setq #Block (vla-copy (vlax-ename->vla-object #Block)))
      (vla-move #Block
                (vla-get-insertionpoint #Block)
                (vlax-3d-point (trans #Point 0 1))
      ) ;_ vla-move
) ;_ and
(princ)
) ;_ defun

David Bethel 发表于 2022-7-6 13:15:21

确保向插入数据添加顺序标志(66.1),以访问属性。然后必须添加属性实体定义。然后必须添加ENDBLK实体。这不是最干净的插入方式,但这是通过entmake实现的-大卫

Olhado_ 发表于 2022-7-6 13:31:58

谢谢大家的帮助。在所有的评论之后,我认为我可能会使用VLA代码,因为它似乎是最简单的。虽然,我不得不说,在AutoCAD中使用的所有代码中,VLA是目前我最难想到的一个。
 
听起来entmake命令可能只对LISP中的基本实体(即直线、多段线、圆、圆弧)有用
 
再次感谢。
页: [1]
查看完整版本: 复制具有属性的块