fangmin723 发表于 2018-9-29 08:23:08

删除块内指定图元

本帖最后由 fangmin723 于 2021-12-3 08:03 编辑


;;忘霄(702099480)-2018.9.28
;;说明:删除块内指定图元
;;参数:ent:块的图元名
;;参数:ObjectName:图元objectname;
;(del-ent-in-blk ent "AcDbAttribute")
;;常用的有:
;;;直线.AcDbLine
;;;构造线.AcDbXline
;;;多段线(多边形/矩形).AcDbPolyline
;;;圆.AcDbCircle
;;;圆弧.AcDbArc
;;;样条曲线.AcDbSpline
;;;椭圆(弧).AcDbEllipse
;;;点.AcDbPoint
;;;文字.AcDbText
;;;多行文字.AcDbMText
;;;块属性.AcDbAttribute
;;;转角标注.AcDbRotatedDimension
;;;对齐标注.AcDbAlignedDimension

;;;获取图元ObjectName:(Vlax-Get (Vlax-Ename->Vla-Object (car (entsel))) 'ObjectName)
(defun del-ent-in-blk(ent objname / blk_name blkobj lst)
(if (and ent (= (cdr (assoc 0 (entget ent))) "INSERT"))
    (if (and
          (= objname "AcDbAttribute")
          (setq lst (vlax-safearray->list
                      (vlax-variant-value
                        (vla-GetAttributes (vlax-ename->vla-object ent))
                      )
                  )
          )
      )
      (foreach x lst (vla-Delete x));删除块内所有定义属性
      (progn
      (setq blk_name (cdr (assoc 2 (entget ent))))
      (vlax-for item (setq blkobj (vlax-invoke-method (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) 'Item blk_name))
          (if (= (vla-get-ObjectName item) objname) (vla-Delete item))
      )
      (entupd ent)
      );删除块内除定义属性外指定图元名的图元
    )
    (princ "图元不是块或没有选择图块!")
)
(prin1)
)








革天明 发表于 2018-9-30 15:58:49

谢谢楼主分享

走走逛逛瞧瞧 发表于 2018-11-8 01:52:36

可以删除参照里的吗

fangmin723 发表于 2018-11-8 07:48:13

走走逛逛瞧瞧 发表于 2018-11-8 01:52
可以删除参照里的吗

没有研究过,不过你可以试试

KO你 发表于 2021-11-24 19:53:11

可以多选吗

fangmin723 发表于 2021-11-25 07:43:31

KO你 发表于 2021-11-24 19:53
可以多选吗

稍作修改就可以

alexmai 发表于 2021-12-2 21:12:43

本帖最后由 alexmai 于 2021-12-2 21:14 编辑

希望能添加上,删除块内 所有尺寸 的功能 AcDbRotatedDimension

fangmin723 发表于 2021-12-3 08:04:00

alexmai 发表于 2021-12-2 21:12
希望能添加上,删除块内 所有尺寸 的功能 AcDbRotatedDimension

谢谢建议,已添加转角标注和对齐标注

tdl555 发表于 2021-12-4 19:00:27

我还看不到版主的帖子,发帖数不够,要加油啊

yk1216 发表于 2024-9-9 19:44:02

谢谢分享,很实用
页: [1] 2
查看完整版本: 删除块内指定图元