明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 698|回复: 3

如何修改为单行文字加缀,各位老大!

[复制链接]
发表于 2018-5-23 09:53 | 显示全部楼层 |阅读模式
(defun C:hz (/ newname backfix  EP1 EP2 EP1x EP2x blkname nametag i j)
  (setvar "cmdecho" 0)
  (setq backfix (getstring "\n 输入要加入的后缀内容:"))
  (xuanze)
  (genggai)
  (princ (strcat "共计" (rtos (sslength ss) 2) "个属性块已加入后缀。"))
  (princ)
)

(defun xuanze ()
(if (setq EP1 (entsel"点选要加后缀的属性字:\n"))
     (progn (setq EG1 (cdr (assoc 0 (entget (car EP1)))))
            (if (= EG1 "INSERT")
                (progn (setq EG1x (car (nentselp (cadr EP1))))
                       (if (= (cdr (assoc 0 (entget EG1x))) "ATTRIB")
                                 (setq nametag (cdr (assoc 2 (entget EG1x)))) ;标记
                           (progn(alert "******必须选择属性字!******")(xuanze))
                                   )
                       (setq EP1st (entget (car EP1)))
                       (setq blkname (cdr (assoc 2 EP1st)))   
                      )
           (progn(alert "******必须选择属性字,或按ESC键退出!******")(xuanze))
           )
     )
     (progn(alert "******必须选择属性字,或按ESC键退出!******")(xuanze))
)
)

(defun genggai ()
  (princ "\n 请选择要修改的属性块:")
  (setq ss (ssget (list '(0 . "insert") (cons 2 blkname)) ))
  (setq i 0)
  (while (< i (sslength ss))
         (setq tk (ssname ss i))
         (vl-load-com)
         (setq obj (vlax-ename->vla-object tk))
         (setq shuxing
         (mapcar '(lambda (att)
                 (cons (vla-get-TagString att) (vla-get-TextString att))
                 )
                 (vlax-invoke obj "GetAttributes")
         )
         )
         (setq name (cdr (assoc nametag shuxing)))
         (setq newname (strcat name backfix))
                                (xz-att1 tk nametag newname)
         (setq i (+ i 1))
  )
)

(defun xz-att1 (ent tag string / liST0 liST1 num blkref)
  (vl-load-com)
  (if (= (vla-Get-ObjectName (setq blkref (vlax-Ename->vla-Object ent))) "AcDbBlockReference")
    (if (vla-Get-HasAttributes blkref)
      (progn (setq liST0 (vlax-safearray->list  (vlax-variant-value (vla-GetAttributes blkref))))
                   (setq liST1 (mapcar 'vla-Get-TagString  liST0))
             (setq num (vl-position tag list1))
             (vla-put-TextString (nth num liST0) string)
        )
    ); endif
  ); endif
  (prin1)
); enddefun

发表于 2018-6-6 23:29 | 显示全部楼层
纯支持一下,等待高手解答。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 08:06 , Processed in 0.318973 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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