马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun XD:Block:Delete (doc lst / blc bln lck rtn)
- (if (not doc)
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- )
- (setq blc (vla-get-blocks doc)
- lst (mapcar 'strcase lst)
- )
- (vlax-for lay (vla-get-layers doc)
- (if (= :vlax-true (vla-get-lock lay))
- (progn (setq lck (cons lay lck))
- (vla-put-lock lay :vlax-false)
- )
- )
- )
- (vlax-for def blc
- (vlax-for obj def
- (if (and (= "AcDbBlockReference" (vla-get-objectname obj))
- (or (and (vlax-property-available-p obj 'effectivename)
- (setq bln (strcase (vla-get-effectivename obj)))
- )
- (setq bln (strcase (vla-get-name obj)))
- )
- (vl-some '(lambda (x) (wcmatch bln x)) lst)
- )
- (progn (vl-catch-all-apply 'vla-delete (list obj))
- (or (member bln rtn) (setq rtn (cons bln rtn)))
- )
- )
- )
- )
- (foreach lay lck (vla-put-lock lay :vlax-true))
- (vl-remove-if
- '(lambda (x)
- (vl-catch-all-error-p
- (vl-catch-all-apply 'vla-delete (list (vla-item blc x)))
- )
- )
- rtn
- )
- )
|