乐筑天下

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

请问怎样读取属性块中的数据 并修改

[复制链接]

8

主题

21

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
53
发表于 2004-8-11 15:50:00 | 显示全部楼层 |阅读模式
回答《请问怎样读取属性块中的数据》之高手,请问如何在此基础上修改属性值,我试过ENTMOD,ENTUPD屏幕都没改,但改动属性值中的提示却可以,
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-8-11 23:38:00 | 显示全部楼层
我写过Visual Lisp的代码,明天上传.
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-8-12 09:01:00 | 显示全部楼层
;;actj2k是块名,L1,L2等是属性标记(Tag)
(vl-load-com)
(defun c:mychange ( / ss item blk)
         (if (setq ss (vlex-SelectOnScreen-Filter         (list 0 2)(list "INSERT" "actj2tk")))
                         (vlax-For item ss
                                         (if (equal (type item) 'vla-object)
        (setq blk (vlax-vla-object->Ename item))
        (setq blk item)
                                         )
                                         (vlex-ChangeAttributes (list blk (cons "L1" "a")))
                                         (vlex-ChangeAttributes (list blk (cons "L2" "b")))
                                         (vlex-ChangeAttributes (list blk (cons "R3" "c")))
                                         (terpri)
                         )
         )
)
(defun vlex-SSetExists-p (Name)
         (not
                         (vl-Catch-All-Error-p
                                         (vl-Catch-All-Apply
        'vla-Item
        (list (vla-Get-SelectionSets (vlex-ActiveDocument)) Name)
                                         )
                         )
         )
)
(defun vlex-SelectOnScreen-Filter (GroupCodes FilterLists / ss)
         (if (vlex-SSetExists-p "%TEMP_SET")
                         (vla-Delete
                                         (vla-Item
        (vla-get-SelectionSets (vlex-ActiveDocument))
        "%TEMP_SET"
                                         )
                         )
         )
         (setq ss
                         (vla-Add
                                         (vla-get-SelectionSets (vlex-ActiveDocument))
                                         "%TEMP_SET"
                         )
         )
         (vla-Select ss
                         ACSelectionSetAll nil nil
                         (vlex-IntList->VarArray GroupCodes)
                         (vlex-VarList->VarArray FilterLists)
         )
         ss
)
(defun vlex-VarList->VarArray (aList)
         (vlax-SafeArray-Fill
                         (vlax-Make-SafeArray
                                         vlax-vbVariant         ;(12) Variant
                                         (cons 0 (- (length aList) 1))
                         )
                         aList
         )
)
(defun vlex-IntList->VarArray (aList)
         (vlax-SafeArray-Fill
                         (vlax-Make-SafeArray
                                         vlax-vbInteger        ; (2) Integer
                                         (cons 0 (- (length aList) 1))
                         )
                         aList
         )
)
(defun vlex-ChangeAttributes (lst / blk item atts)
         (setq blk (vlax-Ename->vla-Object (car lst))
        lst (cdr lst)
         )
         (if (= (vla-Get-HasAttributes blk) :vlax-true)
                         (progn
                                         (setq atts (vlax-SafeArray->list
                                 (vlax-Variant-Value (vla-GetAttributes blk))
                 )
                                         ); setq
                                         (foreach item lst
        (mapcar
                 '(lambda (x)
                                         (if (= (strcase (car item)) (strcase (vla-Get-TagString x)))
                                                         (vla-Put-TextString x (cdr item))
                                         ); endif
                 )
                 atts
        ); mapcar
                                         ); foreach
                                         (vla-Update blk)
                         )
         ); endif
)
(defun vlex-ActiveDocument ()
         (vla-Get-ActiveDocument (vlax-get-acad-object))
)
回复

使用道具 举报

8

主题

21

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
53
发表于 2004-8-12 12:26:00 | 显示全部楼层
(Defun Si (/ slist sname etbll)
         (setq sliST (entget (ssname (ssget) 0)))
         (SetQ sname (Cdr (Assoc 2 sliST)) sli (TblSearch "BLOCK" sname)         )
         (SetQ sname (Cdr (Assoc -2 sliST)))
         (While sname
                         (setq slist (entget sname))
                                         
                         (if (/= (cdr (assoc 3 slist)) nil)
                                         (progn
                                               
                                                                                 (SETQ slist(SUBST (cons 1 "bbbb") (assoc 1         slist) slist))
                                               
                                                                         (ENTMOD         slist)
        (entupd         sname)
                                         )
                                         )
                         (setq sname (EntNext sname))         
                         )
         ;(entupd sli)
                                                       
         (princ)
         )
屏幕没刷新
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-24 15:42 , Processed in 2.154003 second(s), 61 queries .

© 2020-2025 乐筑天下

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