You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AutoCAD技术问题:修改AutoLISP代码将DWG内容存至CNC Parts子文件夹DXF

修改AutoLISP代码以保存到指定子文件夹

嘿,我来帮你调整这段AutoLISP代码,让选中的内容自动存到CNC Parts子文件夹里!

需要修改的核心逻辑

原代码里决定保存路径的是这一行的末尾部分:

(strcat (getvar "dwgprefix") dxfname)

(getvar "dwgprefix")会获取当前DWG文件所在的文件夹路径。我们需要把路径指向这个文件夹下的CNC Parts子目录,同时还要确保这个子目录存在(否则AutoCAD会报错无法保存)。

修改后的完整代码

;save selection as dxf
(defun c:DQ ()
  ;; 加载VLISP扩展,确保创建文件夹的函数可用
  (vl-load-com)
  (setq dxfname (getstring 1 "\nFilename="))
  ;; 定义CNC Parts子文件夹的完整路径
  (setq cnc-folder (strcat (getvar "dwgprefix") "CNC Parts\\"))
  ;; 如果文件夹不存在,自动创建它
  (if (not (findfile cnc-folder))
    (vl-mkdir cnc-folder)
  )
  ;; 修改保存路径为CNC Parts子文件夹
  (command "SAVEAS" "DXF" "VERSION" "2010" "OBJECTS" "CROSSING" "\\" "\\" "" "16" (strcat cnc-folder dxfname) "FILEDIA" "1")
)

关键修改点说明

  • 新增(vl-load-com):加载AutoCAD的VLISP扩展库,这样我们才能用vl-mkdir函数创建文件夹。
  • 新增cnc-folder变量:拼接出CNC Parts子文件夹的完整路径,比如当前DWG在D:\MyProjects\下,这个变量就会变成D:\MyProjects\CNC Parts\
  • 新增文件夹检查逻辑:用(findfile cnc-folder)判断文件夹是否存在,如果不存在就调用vl-mkdir创建它,避免保存时因路径不存在失败。
  • 修改SAVEAS命令的路径参数:把原来的直接拼接DWG前缀和文件名,改成拼接cnc-folder和文件名,这样文件就会自动存入目标子文件夹。

这样修改后,你运行DQ命令输入文件名后,选中的内容就会乖乖保存到当前DWG所在文件夹下的CNC Parts子文件夹里啦!

内容的提问来源于stack exchange,提问作者Jeff Miller

火山引擎 最新活动