下山学CAD 发表于 2024-9-2 16:52:53

DCL文件转LISP格式小程序

论坛上找的都不太好用,自己改了一下;源码;


[*];部分代码采用明经 qcw911---"DCL2LSP"
[*];功能:将DCL文件转换成LSP格式
[*];转换完成后将DCL子程序复制到LSP中
[*];把(setq dcl_id (load_dialog"C:\\Users\\HA-ED\\Desktop\\NP_DCL"))
[*];替换成
[*];(setq dcl_id (load_dialog (setq Dcl_File (NP_DCL))))
[*];(vl-file-delete Dcl_File)
[*];倪平2024.9.2
[*](defun c:NP_DCL2LSP ( / fname1 fn1 fname2 fn2 k fn1l fn2l )
[*](setq fname1 (getfiled "Select DCL file" "" "dcl" 16))
[*](setq fn1 (open fname1 "r"))
[*](setq fname2 (getfiled "File to save" "" "lsp" 1))
[*](setq fn2 (open fname2 "w"))
[*](write-line "(defun NP_DCL(/ Dcl_File file str)" fn2)
[*](write-line "(setq file (open (setq tmp-dcl-file-name (vl-filename-mktemp nil nil\".DCL\")) \"w\"))" fn2)
[*](write-line "(foreach str '(" fn2)
[*](while (setq fn1l (read-line fn1))
[*]    (setq fn2l fn1l)
[*]    (setq k 0)
[*]    (while
[*]      (setq k (vl-string-search "\"" fn2l k))
[*]      (setq fn2l (vl-string-subst (strcat "\\" "\"") "\"" fn2l k))
[*]      (setq k (+ k 2))
[*]    )
[*]    (setq fn2l (strcat "\"" fn2l "\""))
[*]    (write-line fn2l fn2)
[*])
[*](write-line ")" fn2)
[*](write-line "(write-line str file)" fn2)
[*](write-line ")" fn2)
[*](write-line "(close file)" fn2)
[*](write-line "tmp-dcl-file-name" fn2)
[*](write-line ")" fn2)
[*](close fn1)
[*](close fn2)
[*](princ)
[*])

飞雪神光 发表于 2024-9-2 16:54:24

这是用的飞诗编辑器?

下山学CAD 发表于 2024-9-2 22:08:23

飞雪神光 发表于 2024-9-2 16:54
这是用的飞诗编辑器?

对哦,蛮好用的。

moranyuyan 发表于 2024-9-2 22:15:00

飞诗编辑器能共享下吗

飞雪神光 发表于 2024-9-2 22:30:29

下山学CAD 发表于 2024-9-2 22:08
对哦,蛮好用的。

以前我也这样 后来发现 复制后在编辑器里 Ctrl+shift+v就可以的

jun470 发表于 2024-9-3 17:30:58

以前我不太会lisp的时候,用excel写过lisp转DCL,就只要把引号加转义符,头尾加引号就行了

qazxswk 发表于 2024-9-3 18:52:52

支持发源码的。

下山学CAD 发表于 2024-9-4 15:22:08

jun470 发表于 2024-9-3 17:30
以前我不太会lisp的时候,用excel写过lisp转DCL,就只要把引号加转义符,头尾加引号就行了

条条道路通罗马:lol

火龙果2022 发表于 2024-10-2 20:34:03

这个思路挺好用的,谢谢分享!

13763815647 发表于 2024-10-3 16:58:42

好帖子顶一下好帖子顶一下好帖子顶一下好帖子顶一下好帖子顶一下好帖子顶一下好帖子顶一下
页: [1] 2
查看完整版本: DCL文件转LISP格式小程序