357785513
发表于 2008-12-27 09:43:00
这个块的现在值能批量改成右边的嘛.,上面那对话框是以前一个人做的,
357785513
发表于 2008-12-27 09:44:00
wwwbxd
发表于 2008-12-27 12:51:00
<p>各位高人.我这张图里的这个属性块很多.它的"周小心"人名要改一下,改成"王冠全",日期也得改改成20090105 标高也改成+3.800</p><p></p><p></p><p>用替换不就行了吗????</p>
ZZXXQQ
发表于 2008-12-27 23:32:00
本帖最后由 作者 于 2008-12-28 9:39:21 编辑
给个按属性内容完全匹配替换的程序。
使用方法:(tt "周小心" "王冠全")
;属性替换 明经 ZZXXQQ 2008.12.27
(DEFUN TT (oldtxt newtxt)
(IF (AND (PRINC "\nSelect a Block have old attribute 选择带属性图块 :")
(SETQ SS (SSGET '((0 . "INSERT") (66 . 1))))
) (PROGN
(SETQ I 0)
(REPEAT (SSLENGTH SS)
(SETQ EN (SSNAME SS I) ENT (ENTGET EN))
(SETQ I (1+ I) ENT1 ENT)
(WHILE (/= (CDR(ASSOC 0 (SETQ ENT1 (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT1))))))) "SEQEND")
(IF (= (CDR(ASSOC 0 ENT1)) "ATTRIB")
(IF (= (CDR (ASSOC 1 ENT1)) oldtxt) (PROGN
(SETQ ENT1 (SUBST (CONS 1 newtxt) (ASSOC 1 ENT1) ENT1))
(ENTMOD ENT1)
(ENTMOD ENT)
))
)
)
)
))
(PRINC)
)
ZZXXQQ
发表于 2008-12-28 09:38:00
花了一天多时间写了一个支持对话框的,先试试看,不一定好用。(程序复杂,只提供楼主,请新手练成老手再看。)
;属性替换(对话框) 明经 ZZXXQQ 2008.12.27-12.28
(DEFUN SHOWDATA (ST)
(SETQ I ST)
(REPEAT 14
(IF (< I (LENGTH ATTL)) (PROGN
(SET_TILE (STRCAT "text" (ITOA I)) (CAR (NTH I ATTL)))
(SET_TILE (STRCAT "ss_edit" (ITOA I)) (CADR (NTH I ATTL)))
(MODE_TILE (STRCAT "edit" (ITOA I)) 1)
) (PROGN
(MODE_TILE (STRCAT "ss_title" (ITOA I)) 1)
(MODE_TILE (STRCAT "ss_edit" (ITOA I)) 1)
(MODE_TILE (STRCAT "edit" (ITOA I)) 1)
))
(SETQ I (1+ I))
)
(IF (>= (LENGTH ATTL) 14) (PROGN
(SETQ STA I)
(MODE_TILE "ss_up" 1)
) (PROGN
(SETQ STA (LENGTH ATTL))
(MODE_TILE "ss_up" 1)
(MODE_TILE "ss_NEXT" 1)
))
)
(DEFUN SETDATA (N TOG)
(IF (= TOG "1") (PROGN
(MODE_TILE (STRCAT "edit" (ITOA N)) 0)
(MODE_TILE (STRCAT "edit" (ITOA N)) 2)
)
(MODE_TILE (STRCAT "edit" (ITOA N)) 1)
)
)
(DEFUN SHOWALL ()
(SETQ J 0)
(REPEAT 14
(SET_TILE (STRCAT "ss_title" (ITOA J)) "1")
(SETDATA J "1")
(SETQ J (1+ J))
)
)
(DEFUN CLRALL ()
(SETQ J 0)
(REPEAT 14
(SET_TILE (STRCAT "ss_title" (ITOA J)) "0")
(SETDATA J "0")
(SETQ J (1+ J))
)
)
(DEFUN DOSOME (SOME)
(SETQ J 0)
(IF (= SOME "ss_INSERT")
(REPEAT 14
(IF (= (GET_TILE (STRCAT "ss_title" (ITOA J))) "1")
(SET_TILE (STRCAT "ss_edit" (ITOA J))
(STRCAT (GET_TILE (STRCAT "edit" (ITOA J))) (GET_TILE (STRCAT "ss_edit" (ITOA J)))))
)
(SETQ J (1+ J))
)
)
(IF (OR (= SOME "ss_REPLACE") (= SOME "ss_WHOLE_REPLACE"))
(REPEAT 14
(IF (= (GET_TILE (STRCAT "ss_title" (ITOA J))) "1")
(SET_TILE (STRCAT "ss_edit" (ITOA J)) (GET_TILE (STRCAT "edit" (ITOA J))))
)
(SETQ J (1+ J))
)
)
)
(DEFUN RDATA ()
(SETQ J STA)
(REPEAT 14
(IF (< (- STA J) (LENGTH ATTL))
(SETQ NATTL (APPEND NATTL
(LIST(LIST (CADR (NTH (- STA J) ATTL)) (GET_TILE (STRCAT "ss_edit" (ITOA (- STA J))))))))
)
(SETQ J (1- J))
)
)
(DEFUN C:TT ()
(IF (AND (SETQ S1 (ENTSEL "\nSelect a Block have old attribute 选择带属性图块 :"))
(SETQ ENT (ENTGET(CAR S1)))
(= (CDR (ASSOC 0 ENT)) "INSERT")
(= (CDR (ASSOC 66 ENT)) 1)) (PROGN
(SETQ ENT1 ENT ATTL (LIST) NATTL (LIST))
(WHILE (/= (CDR(ASSOC 0 (SETQ ENT1 (ENTGET (ENTNEXT (CDR (ASSOC -1 ENT1))))))) "SEQEND")
(IF (= (CDR (ASSOC 0 ENT1)) "ATTRIB")
(SETQ ATTL (APPEND ATTL (LIST (LIST (CDR(ASSOC 2 ENT1)) (CDR (ASSOC 1 ENT1))))))
)
)
(IF (> (SETQ DCL_ID (LOAD_DIALOG "TITLE_REPLACE")) 0) (PROGN
(IF (NEW_DIALOG "ss_DIATITLE_REPLACE" DCL_ID) (PROGN
(SHOWDATA 0)
(action_tile "ss_title0" "(SETDATA 0 $value)")
(action_tile "ss_title1" "(SETDATA 1 $value)")
(action_tile "ss_title2" "(SETDATA 2 $value)")
(action_tile "ss_title3" "(SETDATA 3 $value)")
(action_tile "ss_title4" "(SETDATA 4 $value)")
(action_tile "ss_title5" "(SETDATA 5 $value)")
(action_tile "ss_title6" "(SETDATA 6 $value)")
(action_tile "ss_title7" "(SETDATA 7 $value)")
(action_tile "ss_title8" "(SETDATA 8 $value)")
(action_tile "ss_title9" "(SETDATA 9 $value)")
(action_tile "ss_title10" "(SETDATA 10 $value)")
(action_tile "ss_title11" "(SETDATA 11 $value)")
(action_tile "ss_title12" "(SETDATA 12 $value)")
(action_tile "ss_title13" "(SETDATA 13 $value)")
(action_tile "ss_all" "(SHOWALL)")
(action_tile "ss_clear" "(CLRALL)")
(action_tile "ss_up" "(SHOWDATA (- STA 14))")
(action_tile "ss_NEXT" "(RDATA) (SHOWDATA STA)")
(action_tile "ss_REPLACE_OR_INSERT" "(DOSOME $value)")
(action_tile "accept""(RDATA) (DONE_DIALOG 1)")
(action_tile "cancel" "(DONE_DIALOG 0)")
(SETQ RE (START_DIALOG))
) (ALERT "Unable to display dialog box!无法显示对话框!"))
(UNLOAD_DIALOG DCL_ID)
) (ALERT "Unable to load dialog box!无法加载对话框!"))
(IF (= RE 1) (PROGN
(SETQ ENT1 ENT I 0)
(WHILE (/= (CDR(ASSOC 0 (SETQ ENT1 (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT1))))))) "SEQEMD")
(IF (= (CDR (ASSOC 0 ENT1)) "ATTRIB")
(IF (= (CDR(ASSOC 1 ENT1)) (CAR(NTH I NATTL))) (PROGN
(SETQ ENT1 (SUBST (CONS 1 (CADR(NTH I NATTL))) (ASSOC 1 ENT1) ENT1))
(SETQ I (1+ I))
(ENTMOD ENT1)
(ENTMOD ENT)
))
)
)
))
))
(PRINC)
)
hao3ren
发表于 2008-12-28 20:25:00
非常有用哈
357785513
发表于 2008-12-29 22:02:00
楼主呀,贴子的LSP用不了呀
ZZXXQQ
发表于 2008-12-30 22:03:00
怎么用的?程序在2004上调试通过。
四叶草by
发表于 2012-1-10 13:50:10
留个脚印。
fawn_lgc
发表于 2012-1-10 20:40:12
不会是,把那神仙赶走了,又想把神仙的图纸改为自己的名字吧,人家一笔笔画出来的图纸都过来了,你一张张改名字也不算太难事的。