明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1797|回复: 7

文件夹的建立与文件的储存

[复制链接]
发表于 2005-10-27 18:07 | 显示全部楼层 |阅读模式

请教各位高手,小弟想用AutoLisp编一个快捷指令,把画好的图储存到指定的磁盘,指定的文件夹下面,如果没有这个文件夹就新建一个,有的话就直接储存,但所存的文件名如果与文件夹内的某个文件相同就给予提示。谢谢!!!

 楼主| 发表于 2005-10-27 18:58 | 显示全部楼层

Alt+F11,Visual Basic 编辑器(B) ,ACAD,工具(T) 菜单
Alt+F8,宏(M),ACAD,工具(T) 菜单
Ctrl+0,清除屏幕(C),ACAD,视图(V) 菜单
Ctrl+1,特性,ACAD,标准 工具栏
Ctrl+2,设计中心,ACAD,标准 工具栏
Ctrl+3,工具选项板窗口(P),ACAD,工具(T) 菜单
Ctrl+6,数据库连接(D),ACAD,工具(T) 菜单
Ctrl+A,全部选择(L),ACAD,编辑(E) 菜单
Ctrl+B,切换捕捉,,AutoCAD 内部
Ctrl+C,复制到剪贴板,ACAD,标准 工具栏
Ctrl+D,切换坐标显示,,AutoCAD 内部
Ctrl+E,在等轴测平面之间循环,,AutoCAD 内部
Ctrl+F,切换执行对象捕捉,,AutoCAD 内部
Ctrl+G,切换栅格,,AutoCAD 内部
Ctrl+H,_setvar;pickstyle;$M= ,ACAD,AutoCAD 命令
Ctrl+J,执行上一个命令,,AutoCAD 内部
Ctrl+K,超链接(H),ACAD,插入(I) 菜单
Ctrl+L,^O,ACAD,AutoCAD 命令
Ctrl+N,新建(N),ACAD,文件(F) 菜单
Ctrl+O,打开,ACAD,标准 工具栏
Ctrl+P,打印,ACAD,标准 工具栏
Ctrl+Q,退出,ACAD,AutoCAD 命令
Ctrl+R,^V,ACAD,AutoCAD 命令
Ctrl+S,保存,ACAD,标准 工具栏
Ctrl+Shift+C,带基点复制(B),ACAD,编辑(E) 菜单
Ctrl+Shift+S,另存为(A),ACAD,文件(F) 菜单
Ctrl+Shift+V,粘贴为块(K),ACAD,编辑(E) 菜单
Ctrl+T,切换数字化仪模式,,AutoCAD 内部
Ctrl+V,从剪贴板粘贴,ACAD,标准 工具栏
Ctrl+X,剪切到剪贴板,ACAD,标准 工具栏
Ctrl+Y,重做,ACAD,编辑(E) 菜单
Ctrl+Z,放弃,ACAD,编辑(E) 菜单
F2,切换文本屏幕,,AutoCAD 内部
F3,切换执行对象捕捉,,AutoCAD 内部
F4,切换数字化仪模式,,AutoCAD 内部
F5,在等轴测平面之间循环,,AutoCAD 内部
F6,切换坐标显示,,AutoCAD 内部
F7,切换栅格,,AutoCAD 内部
F8,切换正交模式,,AutoCAD 内部
F9,切换捕捉,,AutoCAD 内部

 楼主| 发表于 2005-10-27 19:04 | 显示全部楼层

各位顶一下嘛,小弟在线等啊~~~~~~~~~~~~~~~

发表于 2005-10-27 19:05 | 显示全部楼层

(defun c:test()
;做图,在CAD中
;
 (setq str (getstring "\n输入要存文件的路径及文件名"));输入路径及文件名
 
  (command "save" str)
   (princ)
 )

;初学者,抛砖引玉,不足之处请多多指点

发表于 2005-10-27 19:50 | 显示全部楼层

看看下面别人的,生成目录的方法,这个本论坛有下,找找吧。

;;;          ****Writen by 郑 现 民****    2004.09                  
;;;------------------------------------------------------------------
;;;  att2txt: 将当前文件中名为"S&A-Tag"的属性块中的属性提取到一个文本
;;;  文件:ml.tag,以备用.                                            
;;;  mll: 将由att2txt生成的ml.tag文件当中的数据读取出来,用以生成图纸
;;;  目录。                                                         
;;;--att2txt变量表---------------------------------------------------
;;;  ent-s ----- 由S&A-Tag图块组成的选择集                          
;;;  n --------- 计数器                                             
;;;  fn -------- 指向文件ml.tag的指针                               
;;;  ent-name -- S&A-Tag图块的主实体名                              
;;;  ent-date -- S&A-Tag图块的主实体数据表                          
;;;--mll变量表-------------------------------------------------------
;;;  ent-name -- ml-item图块的主实体名                              
;;;  ss -------- 选择集,临时变量                                    
;;;  n-list ---- 临时函数,指明ml-item图块子实体的顺序               
;;;  n --------- 计数器                                             
;;;  fn -------- 指向文件ml.tag的指针                               
;;;  sub-name -- ml-item图块子实体名                                
;;;  fn-item --- 从文件ml.tag中读出的数据                           
;;;  sub-dat --- ml-item图块子实体数据表                            
;;;------------------------------------------------------------------
;;;  装入文件,在Utility下拉菜单里选“提取标签”,然后按照“图号”的顺
;;;  序依次选取标签图块;切换到目录文件,再选“生成目录”。         
;;;==================================================================
;;;
;;;------------------------------------------------------------------
(defun c:att2tag (/ ent-s n ent-name ent-date ent-n fn)
  (SetErr)
  (alert "请按“图号”的顺序依次点取标签图块!")
  (setq ent-s (ssadd))
  (setq n 1)
  (while (setq ent-name (car (entsel "\n选择图纸标签<退出>:")))
    (setq ent-date (entget ent-name))
    (if (and (= (cdr (assoc 0 ent-date)) "INSERT")
      (= (cdr (assoc 2 ent-date)) "S&A-Tag")
 ) ;_end and
      (progn
 (princ (strcat "找到1个,共" (itoa n) "个!"))
 (ssadd ent-name ent-s)
        (setq n (1+ n))
      ) ;_end progn
      (princ "\n不是图纸标签,重选!")
    ) ;_end if
  ) ;_end while
  (if (/= 0 (setq ent-n (sslength ent-s)))
    (progn
      (setq n 0)
      (setq fn (open (strcat (getvar "dwgprefix") "ml.tag") "a"))
      (repeat ent-n
 (write-line "****" fn)
 (setq ent-name (ssname ent-s n))
 (repeat 14
   (setq ent-date (entget (setq ent-name (entnext ent-name))))
   (if (or (= (cdr (assoc 2 ent-date)) "图幅")
    (= (cdr (assoc 2 ent-date)) "日期")
    (= (cdr (assoc 2 ent-date)) "比例")
    (= (cdr (assoc 2 ent-date)) "图号")
    (= (cdr (assoc 2 ent-date)) "图名")
       ) ;_end or
     (write-line (strcat (cdr (assoc 1 ent-date))) fn)
   ) ;_end if
 ) ;_end repeat 14
 (setq n (1+ n))
      ) ;_end repeat
      (close fn)
      (princ (strcat "\n图纸标签已经添加到文件 "
       (getvar "dwgprefix")
       "ml.tag 当中。"
      )
      )
      (princ)
    ) ;_end progn
    (princ "\n没有选到图纸标签,退出!")
  ) ;_end if
  (ReErr)
  (princ)
) ;_end defun
;;;------------------------------------------------------------------
(defun c:mll (/ old-cmd   ent-name  ent-date  ss   n-list   n fn
     sub-name  fn-item   sub-date)
  (SetErr)
  (store-var)
  (setq ss (ssadd))
  (setq n-list (list 2 4 5 6 7)
 n      0)
  (if (setq ent-name (car (entsel "\n请选择一个目录项<退出>:")))
    (progn
      (setq ent-date (entget ent-name))
      (if (and (= (cdr (assoc 0 ent-date)) "INSERT")
        (or (= (cdr (assoc 2 ent-date)) "ml-item1")
     (= (cdr (assoc 2 ent-date)) "ml-item2")
        )
   )
 (progn
   (if
     (setq fn (open (strcat (getvar "dwgprefix") "ml.tag") "r"))
      (progn
        (while (read-line fn)
   (ssadd ent-name ss)
   (repeat (vl-list-length n-list)
     (setq sub-name ent-name)
     (setq fn-item (read-line fn))
     (repeat (nth n n-list)
       (setq sub-date
       (entget (setq sub-name (entnext sub-name)))
       )
     ) ;_end repeat
     (setq sub-date
     (subst (cons 1 fn-item) (assoc 1 sub-date) sub-date)
     )
     (entmod sub-date)
     (setq sub-name ent-name)
     (setq n (1+ n))
   ) ;_end repeat 5
   (entupd ent-name)
   (vl-cmdf "copy" ss "" "0,0" "0,-7")
   (setq n 0)
   (setq ent-name (entlast))
   (setq ss (ssadd))
        ) ;_end while
        (entdel ent-name)
        (close fn)
        (vl-file-delete (strcat (getvar "dwgprefix") "ml.tag"))
        (reset-var)
        (alert "目录已经生成,请手动填入序号!")
        (princ)
      ) ;_end progn
      (progn
        (princ "\n找不到 ml.tag 文件,退出!")
        (exit)
      )
   ) ;_end if
 ) ;_end progn
 (progn
   (reset-var)
   (princ "\n不是目录项,重选!")
 ) ;_end progn
      ) ;_end if
    ) ;_end progn
    (princ "\n没选到目录项,退出!")
  ) ;_end if
  (ReErr)
  (princ)
) ;_end defun

发表于 2005-10-27 20:23 | 显示全部楼层
为什么不用saveas命令?
 楼主| 发表于 2005-10-27 20:36 | 显示全部楼层

能不能详细一点啊,好像不能达到要求啊

 

发表于 2005-11-15 14:14 | 显示全部楼层
这些都是用户让操作系统来作的事啊...
何必要写程序呢?

而且AutoCAD 的文件选择对话框 左边的侧栏是可以直接添常用文件夹的(可惜MS Windows系统一直以来的文件选择对话框都没有linux KDE那样的"收藏夹",目前之好用 FileBX来补足.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 06:14 , Processed in 0.154724 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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