找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 612|回复: 3

[编程申请]:请教如何找到块属性中的值,并批量替换?

[复制链接]
发表于 2005-11-13 15:33:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位高手,我有一个问题想请教,我要修改块中的属性值,但是我不知道如何把这个值读出来编辑,而且,我想实现把这个值读出来后,进行编辑,然后又写回到块中去,该咋办?
比如,我定义了一个块叫cct,这个块是高程块,属性值是1356,我现在要把这个“1356”改为“”1345.625“,就是这个功能。我用”ssget“得到的图元信息中没有属性值对应的图元码,头都大了!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-1-14 12:57:26 | 显示全部楼层
你用FIND命令替换就行;
如果用LISP实现,使用ENTNEXT即可,找到该图元名。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-14 15:44:56 | 显示全部楼层
非常感谢您的回复,我会用Lisp实现这一功能,真心希望我们在编程道路上共同进步,祝您2006年里万事大吉,心想事成
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-1-25 13:21:29 | 显示全部楼层
插入TKA1图纸,在多次拷贝几分,用AT命令修改其中一个的某些属性,再用TKMA命令。。。
(Defun C:TKMA (/ AttN AttL cm os )        ;图框属性匹配程序
       (SetQ cm (GetVar "cmdecho") os (GetVar "osmode"))
       (SetVar "cmdecho" 0)(SetVar "osmode" 0)
       ; 内部函数,属性数量计数器
       (Defun AttN (abn / ann)
              (SetQ ann 0 aai (EntNext abn))
              (If (/= "ATTRIB" (Cdr (Assoc 0 (EntGet aai))))
                  (Progn (Alert "无属性的块...")
                         (Exit)
                  )
              )
              (While (= "ATTRIB" (Cdr (Assoc 0 (EntGet aai))))
                     (SetQ ann (1+ ann) aai (EntNext aai))
              )
              (SetQ ann ann)
       )
       ; 内部函数,属性值提取器
       (Defun AttL (abn atn / atl)        ;块对象名 属性数量
              (SetQ atl '() aai (EntNext abn))
              (Repeat atn
                      (SetQ atn (Cdr (Assoc 2 (EntGet aai)))
                            atv (Cdr (Assoc 1 (EntGet aai)))
                             atl (Cons (Cons atn atv) atl)
                            aai (EntNext aai)
                      )
              )
              (SetQ atl (Reverse atl))
       )
       ; 内部函数,属性值对照转换器
       (Defun AttUpL (aold anew / an al aa ao ai)        ;老表  新表
              (SetQ an 0 al '())
              (While (SetQ ao (Nth an anew))
                     (SetQ ai (Car ao))
                     (If (SetQ aa (Assoc ai aold))
                         (SetQ al (Cons (Cdr aa) al))
                         (SetQ al (Cons (Cdr ao) al))
                     )
                     (SetQ an (1+ an))
              )
              (Reverse al)
       )
          (Defun AttL (abn atn / atl)        ;块对象名 属性数量
              (SetQ atl '() aai (EntNext abn))
              (Repeat atn
                      (SetQ atn (Cdr (Assoc 2 (EntGet aai)))
                            atv (Cdr (Assoc 1 (EntGet aai)))
                             atl (Cons (Cons atn atv) atl)
                            aai (EntNext aai)
                      )
              )
              (SetQ atl (Reverse atl))
       )
       ;下面是主程序----------------------------------------------------------------------
       (While (Progn (InitGet 7)
                     (SetQ SourceBLK (EntSel "\n图框属性匹配程序,选定原图框块: "))
                     (If SourceBLK
                         (If (and (= "INSERT" (Cdr (Assoc 0 (EntGet (Car SourceBLK)))));如果为外部插入的图块
                                  (WCMATCH (Cdr (Assoc 2 (EntGet (Car SourceBLK)))) "TKA*"));并且图块名含有TKA字符
                             nil
                             (Progn (Alert "这不是(图框)块,请重新选定...")
                                    T
                             )
                         )
                         T
                     )
              )
       )
       (SetQ SourceBLK (Car SourceBLK) AttNum (AttN SourceBLK)        ;SourceBLK_块对象名  AttNum_块属性数量
             AttSheet (AttL SourceBLK AttNum)                        ;AttSheet_块属性表
       )
       (princ "\n请选择要匹配的目标图框块: ")
       (setq TargetAttBLK (ssget '((0 . "INSERT")(2 . "TKA*")))
             index 0
             SelNum (sslength TargetAttBLK))
       (repeat SelNum       
         (setq TargetEnt (ssname TargetAttBLK index)
               index (1+ index)
               index1 0
               SingleAtt (EntNext TargetEnt))
         (repeat AttNum        ;对各个属性进行处理
           (setq SingleAttEnt (entget SingleAtt)
                 Biaoji (car (nth index1 AttSheet))        ;属性的标记
                 NeiRong (cdr (nth index1 AttSheet))        ;属性的容
                 index1 (1+ index1)
                    SingleAttEnt (subst(cons 1 NeiRong) (assoc 1 SingleAttEnt)  SingleAttEnt)
                 SingleAtt (EntNext SingleAtt))
           (entmod SingleAttEnt)
           ;(setq SingleAttEnt (EntNext TargetEnt))
          
           );repeat 2 end
         );repeat 1 end
          (command ".regen")
      (SetVar "cmdecho" cm)(SetVar "osmode" os)(PrinC)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-22 03:51 , Processed in 0.210365 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表