本帖最后由 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)
- )
|