找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2537|回复: 28

[试用]:图纸自动归档程序

[复制链接]
发表于 2006-4-6 23:25:51 | 显示全部楼层 |阅读模式

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

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

×
在这里感谢eachy编的图纸自动归档程序
这个程序运行时图纸必段同时满足以下三个条件
1.图框为块
2.图框在TK开头的图层上,
3,图号为定义为属性
本程序可以自动按图号wblock,并将wblock的文件命名为图号属性标签的值.


  1. (defun xdl-Clearcset (/ cset)
  2.   (if (not (vl-catch-all-error-p
  3.              (setq cset
  4.                     (vl-catch-all-apply
  5.                       'vla-item
  6.                       (list
  7.                         (vla-get-selectionsets
  8.                           (vla-get-activedocument (vlax-get-acad-object))
  9.                         )
  10.                         "CURRENT"
  11.                       )
  12.                     )
  13.              )
  14.            )
  15.       )
  16.     (vla-delete cset)
  17.   )
  18.   (princ)
  19. )
  20. (defun c:DWGWB
  21.        (/ ss ssl thisdrawing path i e obj box bp up atts name key0 n key s1)
  22.   (initget 128 "Select All")
  23.   (setq key0 (getkword "\n [自行选择(Select) /(All)]<All>: "))
  24.   (if (= key0 "Select")
  25.     (setq ss (ssget '((0 . "insert") (8 . "TK*") (66 . 1))))
  26.     (setq ss (ssget "x" '((0 . "insert") (8 . "TK*") (66 . 1))))
  27.   );_cond
  28.   (if ss
  29.     (progn
  30.       (setq ssl                (sslength ss)
  31.             thisdrawing        (vla-get-activedocument (vlax-get-acad-object))
  32.             path        (getvar "dwgprefix")
  33.             i                -1
  34.       )
  35.       (if (zerop
  36.             (length (vl-directory-files (strcat path "归档" "*.dwg")))
  37.           )
  38.         (vl-mkdir (strcat path "归档"))
  39.       )
  40.       (setq path (strcat path "归档\")
  41.       )
  42.       (repeat ssl
  43.         (setq e          (ssname ss (setq i (1+ i)))
  44.               obj (vlax-ename->vla-object e)
  45.         )
  46.         (vla-getboundingbox obj 'bp 'up)
  47.         (setq bp (safearray-value bp)
  48.               up (safearray-value up)
  49.         )
  50.         (command ".zoom" "w" bp up)
  51.         (setq atts
  52.                (safearray-value (variant-value (vla-getattributes obj)))
  53.         )
  54.         (while atts
  55.           (if (= (vla-get-tagstring (car atts)) "图号")
  56.             (setq name (vla-get-textstring (car atts))
  57.                   atts nil
  58.             )
  59.           )
  60.           (setq atts (cdr atts))
  61.         )
  62.         (if name
  63.           (progn
  64.             (xdl-clearcset)
  65.             (if        (findfile (strcat path name ".dwg"))
  66.               (progn
  67.                 (princ (strcat "\n" path name ".dwg 已存在!"))
  68.                 (initget 128 "R S I")
  69.                 (setq key
  70.                        (getkword
  71.                          "\n已有重名文件,请选择[R - 替换/S - 另存/I - 忽略]<R>:"
  72.                        )
  73.                 )
  74.                 (cond
  75.                   ((= key "S")
  76.                    (setq n 1)
  77.                    (while
  78.                      (findfile (strcat path name "同名" (itoa n) ".dwg")
  79.                      )
  80.                       (setq n (1+ n))
  81.                    )
  82.                    (setq name (strcat name "同名" (itoa n)))
  83.                    (princ  (strcat "\n文件另存为" path name ".dwg"))
  84.                   )
  85.                   ((= key "I") (setq name nil))
  86.                   (t)
  87.                 )
  88.               )
  89.             )
  90.             (if        name
  91.               (progn
  92.                 (setq s1 (ssget "w" bp up))
  93.                 (vla-wblock
  94.                   thisdrawing
  95.                   (strcat path name)
  96.                   (vla-get-activeselectionset thisdrawing)
  97.                 )
  98.               )
  99.             )
  100.           )
  101.         )
  102.       )
  103.     )
  104.   )
  105.   (command ".zoom" "e")
  106.   (princ "\n归档完毕")
  107. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-7 02:00:04 | 显示全部楼层
提两条:
1.vla-getboundingbox  返回wcs点。如果图框有角度就不行了(有时候会碰到)
2.应对打开的图层解锁,否则以为选集已经包含了(尤其是全选的时候比较容易忽视),其实没有。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-4-7 10:55:26 | 显示全部楼层

  1. (defun xdl-Clearcset (/ cset)
  2.   (if (not (vl-catch-all-error-p
  3.              (setq cset
  4.                     (vl-catch-all-apply
  5.                       'vla-item
  6.                       (list
  7.                         (vla-get-selectionsets
  8.                           (vla-get-activedocument (vlax-get-acad-object))
  9.                         )
  10.                         "CURRENT"
  11.                       )
  12.                     )
  13.              )
  14.            )
  15.       )
  16.     (vla-delete cset)
  17.   )
  18.   (princ)
  19. )
  20. (defun c:DWGWB (/      ss     ssl    thisdrawing   path          i         e
  21.                 obj    box    bp     up            atts   name          key0         n
  22.                 key    s1     na     tag
  23.                )
  24.   (princ "\n选择归档范围[All - 全选]....")
  25.   (if (and (setq ss (ssget '((0 . "insert") (8 . "TK*") (66 . 1))))
  26.            (setq na (nentsel "\n点取属性图名: "))
  27.            (= (cdr (assoc 0 (setq al (entget na)))) "ATTRIB")
  28.            (setq tag (cdr (assoc 2 al)))
  29.       )
  30.     (progn
  31.       (setq ssl                (sslength ss)
  32.             thisdrawing        (vla-get-activedocument (vlax-get-acad-object))
  33.             path        (getvar "dwgprefix")
  34.             i                -1
  35.       )
  36.       (vla-startundomark thisdrawing)
  37.       (vlax-for        lay (vla-get-layers thisdrawing)
  38.         (vla-put-lock lay :vlax-false)
  39.       )
  40.       (if (zerop
  41.             (length (vl-directory-files (strcat path "归档" "*.dwg")))
  42.           )
  43.         (vl-mkdir (strcat path "归档"))
  44.       )
  45.       (setq path (strcat path "归档\"))
  46.       (command ".zoom" "o" ss "") ;_仅适用 2004+
  47.       (repeat ssl
  48.         (setq e          (ssname ss (setq i (1+ i)))
  49.               obj (vlax-ename->vla-object e)
  50.         )
  51.         (vla-getboundingbox obj 'bp 'up)
  52.         (setq bp (safearray-value bp)
  53.               up (safearray-value up)
  54.         )
  55.         (command ".zoom" "w" bp up)
  56.         (setq atts
  57.                (safearray-value (variant-value (vla-getattributes obj)))
  58.         )
  59.         (while atts
  60.           (if (= (vla-get-tagstring (car atts)) tag)
  61.             (setq name (vla-get-textstring (car atts))
  62.                   atts nil
  63.             )
  64.           )
  65.           (setq atts (cdr atts))
  66.         )
  67.         (if name
  68.           (progn
  69.             (xdl-clearcset)
  70.             (if        (findfile (strcat path name ".dwg"))
  71.               (progn
  72.                 (princ (strcat "\n" path name ".dwg 已存在!"))
  73.                 (initget 128 "S I")
  74.                 (setq key
  75.                        (getkword
  76.                          "\n已有重名文件,请选择[S - 另存/I - 忽略]<回车替换>:"
  77.                        )
  78.                 )
  79.                 (cond
  80.                   ((= key "S")
  81.                    (setq n 1)
  82.                    (while
  83.                      (findfile (strcat path name "同名" (itoa n) ".dwg")
  84.                      )
  85.                       (setq n (1+ n))
  86.                    )
  87.                    (setq name (strcat name "同名" (itoa n)))
  88.                    (princ (strcat "\n文件另存为" path name ".dwg"))
  89.                   )
  90.                   ((= key "I") (setq name nil))
  91.                   (t)
  92.                 )
  93.               )
  94.             )
  95.             (if        name
  96.               (progn
  97.                 (setq s1 (ssget "w" bp up))
  98.                 (vla-wblock
  99.                   thisdrawing
  100.                   (strcat path name)
  101.                   (vla-get-activeselectionset thisdrawing)
  102.                 )
  103.               )
  104.             )
  105.           )
  106.         )
  107.       )
  108.       (vla-endundomark thisdrawing)
  109.     )
  110.   )
  111.   (command ".zoom" "p")
  112.   (princ "\n归档完毕")
  113. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-7 14:32:35 | 显示全部楼层
最初由 雨箭风刀 发布
[B]提两条:
1.vla-getboundingbox  返回wcs点。如果图框有角度就不行了(有时候会碰到)
2.应对打开的图层解锁,否则以为选集已经包含了(尤其是全选的时候比较容易忽视),其实没有。 [/B]


有道理!图纸归档是不允许出错的,所以还要应加以改进.
1,有没有获得用户坐标系的函数或将世界坐标系的坐标转换为用户坐标系的函数呢?如果有,将取的坐标系转换该图框所在的坐标系坐标,这个选中的物体就不会错.
2,对于图层解销,eachy已做了改进,已不是问题了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-8 12:20:37 | 显示全部楼层
有一个问题,你用的是增强属性编辑器做图框,那么如果我用的是块做图框呢(block),那怎么样实现呢(当然图号不会做成块的) ,  而且归档的名称如何获取呢,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-8 12:29:57 | 显示全部楼层
最初由 aliu22 发布
[B]有一个问题,你用的是增强属性编辑器做图框,那么如果我用的是块做图框呢(block),那怎么样实现呢(当然图号不会做成块的) ,  而且归档的名称如何获取呢, [/B]



这个没有办法,只有用属性做成的图框,程序才能准确无误而且方便的进行判定.用属性做成的图框好处是不明自诩的,还准备开发一个套件,可以打量对选定的文件进行图纸日期和版次,甚至建设单位和工程名称的修改.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-9 16:14:53 | 显示全部楼层
请问如何做成强属性编辑器,我没有用过个功能,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-9 23:03:41 | 显示全部楼层
最初由 aliu22 发布
[B]请问如何做成强属性编辑器,我没有用过个功能,谢谢 [/B]



属性定义,在做块的时候用attdef定义属性.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-10 21:41:03 | 显示全部楼层
图框和图签必须是一个属性块才行吗?如果是2个不同的块呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-19 23:03:22 | 显示全部楼层 |阅读模式

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

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

×
在布局里面可用吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-22 13:20:12 | 显示全部楼层
偶为了用秋枫斑竹的BATCHPLOT,图框是外部引用的,另外加了个PUBTITLE层的边框。请教长老,为了能用长老的归档程序,偶应该怎么办呢?
是不是要把图框做成快插入,再把图号做成属性块啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-22 22:17:35 | 显示全部楼层
1.把图框做成块,再把图号做成属性块,秋枫的batchplt也可以用.
2.在布局里不能用,因为布局里没法选中模型空间的图形.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-23 07:54:18 | 显示全部楼层
请问程序能用吗,我这里好像不能用-
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-8-11 16:36:25 | 显示全部楼层
可以用吗?
测试没有?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-8-15 14:33:18 | 显示全部楼层
任何的管理都有制度成本,制度的约定,在不同的工作内容不同的单位规模等等情况下,有不同的要求。

分单张dwg归档应该是一个误区,虽然那些归档软件都是这样约定的。谁能告诉我这样做的原因?
如果说约定图名,约定归档内容等等,那是应该的,但剥成一张张的dwg,有何必要?
1.大多数的公司,资料室人员,是搞不清楚图纸内容的,剥成单张不见得他们就能看得出来;
2.网上打图管理,签批基本上也仅仅是手续,因为管理成本,你不可能叫所有的项目负责人去一张张对图——实际上基本是下面提出打印报告单,项总稍微核对就签出了;如果是担心外活内打,加强出入口的管理也是一个办法。现在的设计单位,很多已经个体化或者项目化,他们爱打几遍,似乎不用总院操心。
3.存档调阅也不见得方便,很少说一套图纸的调阅,只给大样,或者只给平面——就算如果真要这样,也花不了多少时间。除非是有密级要求的图纸,可以理解,民用院似乎都没必要。
4.再说修改,大多数的设计院,都是对修改图另外存档,不需要替换,所以和修改似乎没有多大关系。
5.既然是dwg归档,除了归档要求本身,还有一个目的是为了图纸的延续性,(有的公司直接用plt归档,还有的设计院干脆提出大型扫描仪扫描归档,图统一了,但不能延续使用了。)从调阅方便来说,分图可能有点好处,但成本不低。现在的机器速度很快了,除了大规划图等似乎痛苦些,图稍微大点,一般问题不太大。从这一点来说,我怀疑分图的思路是486时代的思想遗留。
6.设计人员一张张报图输入,再乘以几次存档次数,花的时间很多。难道管理的目是为了花掉一线的时间?还是想降低资料室人员的工作压力?(他们的压力是日常的图纸出入管理工作,不是在归档这一道程序,不管分图合图给他,他也是签收一次)。

其实太多的设计单位,连图纸的统一措施都贯彻不下去,图名线形字体混乱,制图水平不高,图纸里面垃圾很多(我见过一张电图,8m左右,打开一看就一个表格,wblock一下,只剩下百来k)。这些问题更多、影响更大。加强管理,是否应该更实实质一些。

总的一句话,486时代的习惯+国营一统的管理思路+密级控制的要求,似乎是分图归档的最好解释。

弟兄们有何高见欢迎指教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:25 , Processed in 0.424425 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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