乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 21|回复: 7

[编程交流] HELP:LISP to delete all text,

[复制链接]

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:27:03 | 显示全部楼层 |阅读模式
I came across LISP routine to remove dimension & hatches but not text & leader lines.
 
Anyone with such a routine to delete all text & leaders (including within blocks & nested block)
 
Thanks
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 20:40:25 | 显示全部楼层
 
sorry if im not quite understand
 
normally we use to filter selections, ss
then erase, example TEXT , MTEXT
  1. (defun c:TEST1 ( / ss) ; TEXT& MTEXT(setq [color="red"]ss[/color] (ssget        "_X"  '((0 . "*TEXT")))) ;_ end of setq(command "_erase" [color="red"]ss[/color])(princ))
ie: a bit study some method ssget here,
then you can mod yourself
 
example: filter leader &associated Mtext
can try replace the (setq ss ...) to above code in c:TEST1
  1. (setq [color="red"]ss[/color] (ssget        "_:L"          (list '(-4 . "")) ;_ end of list        ) ;_ end of ssget     ) ;_ end of setq
 
 
;example delete entity (without filtering ssget)
TEXT, MTEXT, DIMENSION, etc.. (which dxf index 1)
  1. (defun c:test2 ( / ss)(if(setq ss (ssget "_X" ))(foreach en(vl-remove-if ''((x) (not(cdr (assoc 1 (entget x)))))(acet-ss-to-list ss)) ; express tool(if en (entdel en))(princ)) ));p/s: this method is not good practice, just an alternative reference;filter by ssget is the best practice
 
for nested try similar thread
 
HTH
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 20:51:38 | 显示全部楼层
Hi HT. WIll reply in detail when i am back from vacation.
 
Thanks
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 21:01:08 | 显示全部楼层
Basically i am looking for something similar to this for text & leader lines.
 
Below is what i found for hatch & dimension
 
  1. (defun c:DIMDEL ( / d l )   (setq d (vla-get-activedocument (vlax-get-acad-object)))   (vlax-for a (vla-get-layers d)       (if (eq :vlax-true (vla-get-lock a))           (progn               (vla-put-lock a :vlax-false)               (setq l (cons a l))           )       )   )   (vlax-for b (vla-get-blocks d)       (if (eq :vlax-false (vla-get-isxref b))           (vlax-for o b               (if (wcmatch (vla-get-objectname o) "AcDb*Dimension*")                   (vla-delete o)               )           )       )   )   (foreach a l (vla-put-lock a :vlax-true))   (vla-regen d acallviewports)   (princ))---------------------------------------------------------------------------------------------------------------------(defun C:HatchDel ()(delete-all-hatch))(defun delete-all-hatch (  / adoc *error*)  (defun *error* (msg)   (setvar "MODEMACRO" "")   (princ msg)   (vla-regen aDOC acactiveviewport)   (bg:progress-clear)   (bg:layer-status-restore)   (princ) ) ;_ end of defun (defun _loc-delete-items ()   (if    (= (vla-get-IsXref Blk) :vlax-false)     (progn   (setq count 0)   (if (> (vla-get-count Blk) 100)     (bg:progress-init       (strcat (vla-get-name Blk) " :")       (vla-get-count Blk)     ) ;_ end of bg:progress-init     (progn       (setvar "MODEMACRO" (vla-get-name Blk))     ) ;_ end of progn   ) ;_ end of if   (vlax-for Obj Blk     (if (= (vla-get-ObjectName Obj) "AcDbHatch")           (vl-catch-all-apply 'vla-delete (list Obj))     ) ;_ end of if   ) ;_ end of vlax-for   (bg:progress-clear)     ) ;_ end of progn   ) ;_ end of if ) ;_ end of defun (setq    aDOC       (vla-get-activedocument (vlax-get-acad-object)) ) ;_ end of setq (bg:layer-status-save) (vlax-for Blk (vla-get-Blocks aDOC)   (_loc-delete-items)   ) (bg:layer-status-restore)   (vla-regen aDOC acActiveViewport) (princ)) ;_ end of defun(defun bg:layer-status-restore ()   (foreach item *BG_LAYER_LST*     (if (not (vlax-erased-p (car item)))       (vl-catch-all-apply         '(lambda ()            (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))            (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))            ) ;_ end of lambda         ) ;_ end of vl-catch-all-apply       ) ;_ end of if     ) ;_ end of foreach   (setq *BG_LAYER_LST* nil)   ) ;_ end of defun (defun bg:layer-status-save ()   (setq *BG_LAYER_LST* nil)   (vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))     (setq *BG_LAYER_LST* (cons (list item                                 (cons "freeze" (vla-get-freeze item))                                 (cons "lock" (vla-get-lock item))                                 ) ;_ end of cons                           *BG_LAYER_LST*                           ) ;_ end of cons           ) ;_ end of setq     (vla-put-lock item :vlax-false)     (if (= (vla-get-freeze item) :vlax-true)     (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))     ) ;_ end of vlax-for   ) ;_ end of defun(defun bg:progress-init (msg maxlen) ;;; msg - ñîîáùåíèå èëè ïóñòàÿ ñòðîêà ;;; maxlen - ìàêñèìàëüíîå êîëè÷åñòâî (setq *BG:PROGRESS:OM* (getvar "MODEMACRO")) (setq *BG:PROGRESS:MSG* (vl-princ-to-string msg)) (setq *BG:PROGRESS:MAXLEN* maxlen) (setq *BG:PROGRESS:LPS* '-1)(princ) )(defun bg:progress ( currvalue / persent str1 count) (if *BG:PROGRESS:MAXLEN*   (progn (setq persent (fix (/ currvalue 0.01 *BG:PROGRESS:MAXLEN*))) ;;;Êàæäûå 5 % (setq count (fix(* persent 0.2))) (setq str1 "") (if (/= count *BG:PROGRESS:LPS*)   (progn     ;;(setq str1 "")     (repeat persent (setq str1 (strcat str1 "|")))     )   )      ;;; currvalue - òåêóùåå çíà÷åíèå     (setvar "MODEMACRO"             (strcat (vl-princ-to-string *BG:PROGRESS:MSG*)                     " "                     (itoa persent)                     " % "                     str1                     )             )     (setq *BG:PROGRESS:LPS* persent) )   ) )    (defun bg:progress-clear () (setq *BG:PROGRESS:MSG* nil) (setq *BG:PROGRESS:MAXLEN* nil) (setq *BG:PROGRESS:LPS* nil) (setvar "MODEMACRO" (vl-princ-to-string *BG:PROGRESS:OM*)) ;;;(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport) (princ) )
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:08:42 | 显示全部楼层
 
  1. (defun c:DIMDEL ( / d l )......(if (wcmatch (vla-get-objectname o) [color="red"] "AcDb*Dimension*"[/color])...)
 
Try replace it, just by filtering objectname
a bit study basic & practise, you get benefited  
  1. [color="red"]"AcDb*Leader*"[/color] ; leader ,mleaderor[color="red"]"AcDb*Text*" [/color]; Text, Mtext
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 21:16:42 | 显示全部楼层
 
It worked bro!
 
Errr...how to combine leader,text & dimension together?So that it can run in 1 command.
 
I tried combining the above code with different variation but ended with error.
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:21:35 | 显示全部楼层
 
it's ok you can post error code here, members in forum will assist you.
 
how did you combine?
so i just assume your error was due to not separated with commas
  1. "AcDb*Leader*,AcDb*Text*,AcDb*Dimension*"
回复

使用道具 举报

48

主题

304

帖子

256

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
240
发表于 2022-7-5 21:27:53 | 显示全部楼层
 
hahs ya. I did not include comma among other variations i tried.
 
Thanks dude
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:14 , Processed in 0.543793 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表