明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2568|回复: 20

[提问] 求DXF输出路径 LISP

[复制链接]
发表于 2021-2-28 16:07:35 | 显示全部楼层 |阅读模式
请问各位大大们~小弟想框选物件~略过DIM,TEMP图层后DXFOUT转存于C:\2dTO3d\ 目录之下~请大大帮忙感谢
发表于 2024-3-13 14:23:28 | 显示全部楼层
vitalgg 发表于 2021-3-6 19:16
把函数整合了。你试下。

(getvar "DWGNAME")   这里,如何改成手动命名;有时候自定义名称可能灵活些
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-6 19:16:02 | 显示全部楼层
把函数整合了。你试下。

  1. (defun string:from-lst        (lst Separator)
  2.   "列表转成字符串"
  3.   (if        (cdr lst)
  4.         (strcat (car lst) Separator (string:from-lst (cdr lst) Separator))
  5.         (car lst)
  6.         )
  7.   )

  8. (defun string:to-lst        (str Separator / pos)
  9.   "字符串转成列表"
  10.   (if        (setq pos (vl-string-search Separator str))
  11.         (cons (substr str 1 pos)
  12.               (string:to-lst (substr str (+ pos 1 (strlen Separator))) Separator)
  13.               )
  14.         (list str)
  15.         )
  16.   )

  17. (defun at-pm:saveas-dxf (file-name file-path ss)
  18.   "save selected entity to dxf"
  19.   (if (and (= 'str (type file-name))
  20.            (/= "" file-name)
  21.            (vl-file-directory-p file-path)
  22.            (> (sslength ss) 0))
  23.       (progn
  24.         ;;(push-var)
  25.         (setq file-name
  26.               (string:from-lst
  27.                (reverse (cdr (reverse (string:to-lst file-name "."))))
  28.                "."))
  29.         (setvar "cmdecho" 0)
  30.         (setvar "filedia" 0)
  31.         (vl-cmdf "_.dxfout" (strcat file-path "\\" file-name)  "O" ss "" "16" )
  32.         ;;(pop-var)
  33.         T)
  34.       nil
  35.       )
  36.   (setvar "filedia" 1)
  37.   )

  38. (defun c:mj-req ()
  39.   (at-pm:saveas-dxf
  40.    (getvar "DWGNAME")
  41.    "C:\\2dTO3d"
  42.    (ssget '((-4 . "<NOT") (8 . "DIM,TEMP")(-4 . "NOT>")))))

回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-1 08:35:30 | 显示全部楼层
本帖最后由 htlaser 于 2021-3-3 08:35 编辑

(defun c:dxf (/ date getv getv2 getv3 path str)
(setvar "cmdecho" 0)
(princ "\n功能 [自动存DXF档]") (vl-mkdir "C:\\2dTO3d\\ " ) ;创建目录
(setq getv3 (getvar "FILEDIA"))
(setq date (getvar "DWGNAME")) (setq date  (substr date 1 (- (strlen date ) 4)));去后缀
(setq path "C:\\2dTO3d\\ ")   
(setq str (strcat path  date))  
(setvar "FILEDIA" 0)
(vl-cmdf "_.dxfout" str "O" (ssget '((8 . "TEMP"))) "" "")
(setvar "FILEDIA" getv3)  
(princ)
)


 楼主| 发表于 2021-3-3 00:37:03 | 显示全部楼层
htlaser 发表于 2021-3-1 08:35
(defun c:dxf (/ date getv getv2 getv3 path str)
(setvar "cmdecho" 0)
(princ "\n功能 [自动存DXF档]" ...

大大测试后显示错误~不知哪边出错~
C:\2dTO3d\ CM1472240_A02-099.dwg.dxf": 无法开启档案
没有建立任何的dxf~同时filedia也回不到1
发表于 2021-3-3 07:51:48 | 显示全部楼层
本帖最后由 vitalgg 于 2021-3-4 21:18 编辑

CAD命令 mj-req
其它未定义的函数 请安装 http://atlisp.cn @lisp 基础函数库

  1. (defun at-pm:saveas-dxf (file-name file-path ss)
  2.   "保存选中的图素到dxf"
  3.   (if (and (= 'str (type file-name))
  4.            (/= "" file-name)
  5.            (vl-file-directory-p file-path)
  6.            (> (sslength ss) 0))
  7.       (progn
  8.         (push-var)
  9.         (setq file-name
  10.               (string:from-lst
  11.                (reverse (cdr (reverse (string:to-lst file-name "."))))
  12.                "."))
  13.         (setvar "cmdecho" 0)
  14.         (setvar "filedia" 0)
  15.         (vl-cmdf "_.dxfout" (strcat file-path "\\" file-name)  "O" ss "" "16" )
  16.         (pop-var)
  17.         T)
  18.       nil
  19.       )
  20.   )
  21. (@:add-menu "输出打印" "局部导DXF" "(at-pm:menu-saveas-dxf)")
  22. (defun at-pm:menu-saveas-dxf (/ folder ss)
  23.   (@:help "保存选中的图素到同名的 dxf 文件")
  24.   (prompt  "请选要导出dxf文件的图素:")
  25.   (setq ss (ssget))
  26.   (setq folder (system:get-folder "请选要dxf文件输出的目录:"))
  27.   (at-pm:saveas-dxf
  28.    (getvar "DWGNAME")
  29.    folder ss))

  30. (defun c:mj-req ()
  31.   (at-pm:saveas-dxf
  32.    (getvar "DWGNAME")
  33.    "C:\\2dTO3d"
  34.    (ssget '((-4 . "<NOT") (8 . "DIM,TEMP")(-4 . "NOT>")))))
发表于 2021-3-3 08:31:51 | 显示全部楼层
wuwubaibai 发表于 2021-3-3 00:37
大大测试后显示错误~不知哪边出错~
C:\2dTO3d\ CM1472240_A02-099.dwg.dxf": 无法开启档案
没有建立任 ...

已修改  再试试
 楼主| 发表于 2021-3-3 22:50:50 | 显示全部楼层
vitalgg 发表于 2021-3-3 07:51
CAD命令 mj-req
其它未定义的函数 请安装 http://atlisp.cn @lisp 基础函数库

大大~出现了~
感谢大大的帮忙
错误: no function definition: PUSH-VAR
 楼主| 发表于 2021-3-3 22:51:43 | 显示全部楼层
本帖最后由 wuwubaibai 于 2021-3-3 22:57 编辑
htlaser 发表于 2021-3-3 08:31
已修改  再试试

修改后确认ok谢谢大大帮忙~感谢
抱歉~再麻煩大大轉出後的檔名可以批量下去~如 檔名-p1檔名-p2~不知會不會非常麻煩~因為一個檔案太多圖檔~變成要人工編號~感謝
发表于 2021-3-4 09:42:35 | 显示全部楼层
wuwubaibai 发表于 2021-3-3 22:51
修改后确认ok谢谢大大帮忙~感谢
抱歉~再麻煩大大轉出後的檔名可以批量下去~如 檔名-p1檔名-p2~不知會不 ...

这个我就真不会了   我也是乱拼的代码
发表于 2021-3-4 10:04:10 | 显示全部楼层
wuwubaibai 发表于 2021-3-3 22:50
大大~出现了~
感谢大大的帮忙
错误: no function definition: PUSH-VAR

http://atlisp.cn   @lisp 基础函数库
 楼主| 发表于 2021-3-4 20:44:25 | 显示全部楼层
htlaser 发表于 2021-3-4 09:42
这个我就真不会了   我也是乱拼的代码

好的~大大能帮我第一个已经很好了~谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:31 , Processed in 1.088220 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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