明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: liushengri

修改块中文字属性值的程序

    [复制链接]
发表于 2007-11-23 23:22:00 | 显示全部楼层

看了下表达式

(IF ****)

当条件成立时执行操作“T”条件外时执行操作

但是我要求在条件成立时不执行任何操作。

     当条件不成立时才有操作要求。

找了下没找到关于条件不成立的比较式。 那个来提示一下谢谢了先。

发表于 2008-1-25 11:03:00 | 显示全部楼层
多谢版主!
发表于 2008-1-25 18:40:00 | 显示全部楼层
  1. ;| xattd = 属性块实体属性显示&隐藏开关---ok!-----by 梁雄啸.2005.10
  2. 相关: attdisp 命令,只能全局打开或关闭属性.本程序可局部控制选中的带属性块的属性显示.
  3. |;
  4. (defun c:xattd (/ k kk ss vss)
  5.   (setq *doc (vla-get-activedocument(vlax-get-acad-object))) ;全局.
  6.   (initget 0 "V X")
  7.   (setq k (getkword "\n 块属性:  v-显示 / x-关闭 / <自动切换>"))
  8.   (cond
  9.     ((= k "V")(setq k ':vlax-true))
  10.     ((= k "X")(setq k ':vlax-false))
  11.   )
  12.   (while (setq ss (ssget '((0 . "INSERT")(66 . 1)))) ;; 循环选择.
  13.     (vla-delete (vla-item (vla-get-selectionsets *doc) 0)) ;;排除bug.
  14.     (setq vss(vla-get-activeselectionset *doc))
  15.     (vlax-map-collection
  16.       vss
  17.       '(lambda (x)
  18.   (mapcar '(lambda (y)
  19.       (if k
  20.         (vla-put-Visible y k)
  21.         (progn
  22.    (if (eq :vlax-false (vla-get-Visible y))
  23.      (setq kk ':vlax-true)
  24.      (setq kk ':vlax-false)
  25.    )
  26.    (vla-put-Visible y kk)
  27.         )
  28.       )
  29.     )
  30.    (vlax-invoke x 'GetAttributes)
  31.   )
  32.        )
  33.     )
  34.   )
  35.   (princ)
  36. )
发表于 2008-1-30 11:03:00 | 显示全部楼层
23楼在CAD2002不能运行,
;48--- 关闭属性显示 ---
(DEFUN C:OFFATT()
  (IF(AND(PRINC "\\n选择带属性图块 :")
         (SETQ SS (SSGET '((0 . "INSERT")(66 . 1))))
     )
     (PROGN
       (SETQ I -1)
       (REPEAT(SSLENGTH SS)
         (SETQ ENT (ENTGET(SSNAME SS (SETQ I (1+ I))))
               ENT1 ENT
         )
         (WHILE(=(CDR(ASSOC 0 (SETQ ENT1 (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT1))))))) "ATTRIB")
           (IF(=(CDR(ASSOC 70 ENT1)) 0)
             (PROGN(SETQ ENT1 (SUBST '(70 . 5)(ASSOC 70 ENT1) ENT1))
               (ENTMOD ENT1)(ENTMOD ENT)
             )
          )
        )
      )
    )
  )
  (PRINC)
)

;49--- 打开属性显示 ---
(DEFUN C:ONATT()
  (IF(AND(PRINC "\\n选择带属性图块 :")
         (SETQ SS (SSGET '((0 . "INSERT")(66 . 1))))
     )
     (PROGN
       (SETQ I -1)
       (REPEAT(SSLENGTH SS)
         (SETQ ENT (ENTGET(SSNAME SS (SETQ I (1+ I))))
               ENT1 ENT
         )
         (WHILE(=(CDR (ASSOC 0 (SETQ ENT1 (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT1))))))) "ATTRIB")
           (IF(=(CDR(ASSOC 70 ENT1)) 5)
             (PROGN(SETQ ENT1 (SUBST '(70 . 0)(ASSOC 70 ENT1) ENT1))
               (ENTMOD ENT1)(ENTMOD ENT)
             )
           )
         )
      )
    )
  )
  (PRINC)
)

;50--- 属性显示转换 ---
(DEFUN C:ONFATT()
  (IF(AND(PRINC "\\n选择带属性图块 :")
         (SETQ SS (SSGET '((0 . "INSERT")(66 . 1))))
     )
     (PROGN
       (SETQ I -1)
       (REPEAT(SSLENGTH SS)
         (SETQ ENT (ENTGET(SSNAME SS (SETQ I (1+ I))))
               ENT1 ENT
         )
         (WHILE(=(CDR (ASSOC 0 (SETQ ENT1 (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT1))))))) "ATTRIB")
           (IF(=(CDR(ASSOC 70 ENT1)) 5)
             (PROGN(SETQ ENT1 (SUBST '(70 . 0)(ASSOC 70 ENT1) ENT1))
               (ENTMOD ENT1)(ENTMOD ENT)
             )
             (PROGN(SETQ ENT1 (SUBST '(70 . 5)(ASSOC 70 ENT1) ENT1))
               (ENTMOD ENT1)(ENTMOD ENT)
             )
           )
         )
      )
    )
  )
  (PRINC)
)
发表于 2008-1-30 11:52:00 | 显示全部楼层

还用那么麻烦,用文字替代的方法,用"find"标准命令,用"A"代替"B". "B"也可以为空。

发表于 2008-1-31 16:33:00 | 显示全部楼层

bucuo

hao
发表于 2008-2-13 02:53:00 | 显示全部楼层
如何用lisp程序提取块的属性值
发表于 2008-2-17 18:34:00 | 显示全部楼层

呵呵 学习学习 偷窥一下下

发表于 2008-2-27 23:09:00 | 显示全部楼层
nbvnbvnvbnbvnbvnvb
发表于 2008-2-28 11:58:00 | 显示全部楼层

(defun c:test (/ ss en)
    (Defun put-visible (bn visible / bl) ;   
 (If (Assoc 66 (EntGet bn))
     (Progn (SetQ bn (EntNext bn)
    bl (EntGet bn)
     )
     (While (= "ATTRIB" (Cdr (Assoc 0 bl)))
         (setq bl (subst (cons 70
          (if visible
       0
       1
          )
           )
           (assoc 70 bl)
           bl
    )
         )
         (entmod bl)
         (entupd bn)
         (SetQ bl (EntGet (SetQ bn (EntNext bn))))
     )
     )
 )
    )

    (setq ss (ssget '((66 . 1))))
    (setq n 0)
    (repeat (sslength ss)
 (setq en (ssname ss n))
 (put-visible en t);可见
 ;(put-visible en nil)不可见
 (setq n (1+ n))
    )
)

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

本版积分规则

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

GMT+8, 2024-11-17 03:28 , Processed in 0.172563 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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