明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: yaya-54

请教如何用程序给图块中的图号进行数字递增递减?

  [复制链接]
发表于 2011-1-4 21:24:35 | 显示全部楼层
回复 masterlong 的帖子

等老大出招,,,,,希望不要太复杂...
 楼主| 发表于 2011-1-12 10:20:07 | 显示全部楼层
(defun c:nn( / asc e1 e2 en en1 k l loop p p1 p2 sn sn1 st st1 st2)
  (setq *error* nil)
  (command "undo" "g")
  (princ "\n欢迎使用文字或属性块连续增量拷贝程序! GYSJY  2008.12.16")
  (if (setq sn (entsel "\n点取物体:"))
    (progn
      (setq p1 (cadr sn) p2 t sn (car sn) loop t)
      (if (or (= "TEXT" (to 0))(and p2 (to 66)(= "INSERT" (to 0))))
        (progn                                                
          (tqwz)
          (tqtxt)
          (setq l (1+ l ))
          (while p2
            (setq p2 (getpoint "\n下一点:" p1))
            (command "copy" sn "" p1 p2)   
            (setq sn (entlast) p1 p2 en (entget sn))
            (tqwz);(princ st)(getstring)
            (setq asc (ascii st))
            (if p2
              (if (and (= (strlen st) 1)
                    (or (and (> asc 64) (< asc 90))
                        (and (> asc 96) (< asc 122))
                    )
                  );判断字符串是否是单个字母
                (setq k (if (or (= asc 78)(= asc 72))(+ asc 2)(1+ asc));排除字母I,O
                      st (chr k)
                ) ;如果字符串是单个字母,则按字母顺序增长              
                (setq st2 (substr st l) st2 (tost2)
                      st (strcat st1 st2)  
                ) ;按数字增长
              )
            )
            (if (= "TEXT" (to 0))
              (progn
                (setq e1 (subst (cons 1 st) (assoc 1 en) en))
                (entmod e1)
              );修改文字
              (if (or loop p)
                (progn
                  (setq e1 (entget (entnext (cdr (car en)))))
                  (setq e1 (subst (cons 1 st) (assoc 1 e1) e1))
                  (entmod e1)(entmod en)
                )
                (progn
                  (setq  sn1(entnext sn) en1 (entget sn1)
                     e1 (entget (entnext (cdr (car en1))))
                     e2 (subst (cons 1 st) (assoc 1 e1) e1)
                  )
                  (entmod e2)(entmod en1)(entmod en)
                )
              );修改属性
            )
            (princ st)
          )
        )
        (princ "\n   ***你所点取的图元不是属性块或文字!本程序只拷贝带属性的块或文字。***")
      )
        )
  )
  (command "undo" "e")
  (princ)
)

(defun to(n)
  (cdr (assoc n (entget sn)))
)
(defun nextstr()
  (setq sn1  (entnext sn1)
        s (entget (entnext (cdr (car (entget sn1)))))
        str1 (cdr (assoc 1 s))
  )
  str1
)


谁可以帮我把GYSJY编的这个程序改下。现在复制如0042A(5)-PB01,被改成0043了。而不是我想要的0042A(5)-PB02、0042A(5)-PB03这样的。
发表于 2011-1-13 11:35:12 | 显示全部楼层
本帖最后由 e2002 于 2011-1-13 11:36 编辑

回复 masterlong 的帖子

这一直就是个问题, 所以 Autodesk 弄出了Sheetset 来解决,不过还是太复杂,估计会的没几个,现实情况是简单的 Layout 会的都可能不到10%吧?
发表于 2013-5-2 18:05:18 | 显示全部楼层
这个问题好像没有被解决啊~~~~~~~!
发表于 2013-10-12 04:04:43 | 显示全部楼层
发帖才能看。。。。多发几个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 05:12 , Processed in 0.151928 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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