357785513 发表于 2008-12-27 09:43:00

这个块的现在值能批量改成右边的嘛.,上面那对话框是以前一个人做的,

357785513 发表于 2008-12-27 09:44:00

wwwbxd 发表于 2008-12-27 12:51:00

<p>各位高人.我这张图里的这个属性块很多.它的"周小心"人名要改一下,改成"王冠全",日期也得改改成20090105&nbsp;&nbsp; 标高也改成+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

不会是,把那神仙赶走了,又想把神仙的图纸改为自己的名字吧,人家一笔笔画出来的图纸都过来了,你一张张改名字也不算太难事的。
页: 1 [2] 3
查看完整版本: 不好意思.有事求诸位神仙们了,