本帖最后由 qcw911 于 2012-3-8 10:22 编辑

大家早上好
给大家推荐两个关于DCL的源码
不像某些人发一些垃圾帖子

  1. (defun c:dcl2lsp ( / fname1 fn1 fname2 fn2 k fn1l fn2l )
  2.   (setq fname1 (getfiled "Select DCL file" "" "dcl" 16))
  3.   (setq fn1 (open fname1 "r"))
  4.   (setq fname2 (getfiled "File to save" "" "lsp" 1))
  5.   (setq fn2 (open fname2 "w"))
  6.   (while (setq fn1l (read-line fn1))
  7.     (setq fn2l fn1l)
  8.     (setq k 0)
  9.     (while (setq k (vl-string-search """ fn2l k))
  10.       (setq fn2l (vl-string-subst "\\"" """ fn2l k))
  11.       (setq k (+ k 2))
  12.     )
  13.     (setq fn2l (strcat "(write-line "" fn2l "" fn)"))
  14.     (write-line fn2l fn2)
  15.   )
  16.   (close fn1)
  17.   (close fn2)
  18.   (princ)
  19. )

  1. (defun c:lsp2dcl ( / fname1 fn1 fname2 fn2 k fn1l fn2l )
  2.   (setq fname1 (getfiled "Select LSP file" "" "lsp" 16))
  3.   (setq fn1 (open fname1 "r"))
  4.   (setq fname2 (getfiled "File to save" "" "dcl" 1))
  5.   (setq fn2 (open fname2 "w"))
  6.   (while (setq fn1l (read-line fn1))
  7.     (setq fn2l fn1l)
  8.     (setq fn2l (substr fn2l (+ (vl-string-search """ fn2l) 2) (- (vl-string-position (ascii """) fn2l nil T) (+ (vl-string-search """ fn2l) 1))))
  9.     (setq k 0)
  10.     (while (setq k (vl-string-search "\\"" fn2l k))
  11.       (setq fn2l (vl-string-subst """ "\\"" fn2l k))
  12.       (setq k (+ k 1))
  13.     )
  14.     (write-line fn2l fn2)
  15.   )
  16.   (close fn1)
  17.   (close fn2)
  18.   (princ)
  19. )


  1. ;实例

  2. (defun c:TestDialog ( / fname fn dclid lin return# )
  3.   (setq fname (vl-filename-mktemp nil nil ".dcl"))
  4.   (setq fn (open fname "w"))

  5. (write-line "TestDialog : dialog {" fn)
  6. (write-line "  label = "Testing \\\\ DCL2LSP";" fn)
  7. (write-line "  : edit_box {" fn)
  8. (write-line "    key = "ser";" fn)
  9. (write-line "    label = "Edit box";" fn)
  10. (write-line "    width = 50;" fn)
  11. (write-line "  }" fn)
  12. (write-line "  : list_box {" fn)
  13. (write-line "    key = "key";" fn)
  14. (write-line "    label = "List Box";" fn)
  15. (write-line "    tabs = "20 35";" fn)
  16. (write-line "    multiple_select = true;" fn)
  17. (write-line "    list = "One\\t1\\nTwo\\t2\\nThree\\t3";" fn)
  18. (write-line "    value = "1 2";" fn)
  19. (write-line "  }" fn)
  20. (write-line "  : text {" fn)
  21. (write-line "    key = "txt";" fn)
  22. (write-line "    height = 3;" fn)
  23. (write-line "    value = "My long line of text\\nhas a second line";" fn)
  24. (write-line "  }" fn)
  25. (write-line "  ok_cancel;" fn)
  26. (write-line "}" fn)
  27.   
  28.   (close fn)
  29.   (setq fn (open fname "r"))
  30.   (setq dclid (load_dialog fname))
  31.   (while (or (eq (substr (setq lin (vl-string-right-trim "" fn)" (vl-string-left-trim "(write-line "" (read-line fn)))) 1 2) "//") (eq (substr lin 1 (vl-string-search " " lin)) "") (not (eq (substr lin (+ (vl-string-search " " lin) 1) 9) " : dialog"))))
  32.   (new_dialog (substr lin 1 (vl-string-search " " lin)) dclid)
  33.   (action_tile "accept" "(done_dialog 1)")
  34.   (action_tile "cancel" "(done_dialog 0)")
  35.   (setq return# (start_dialog))
  36.   (princ return#)
  37.   (unload_dialog dclid)
  38.   (close fn)
  39.   (vl-file-delete fname)
  40.   (princ)
  41. )

  1. (defun c:viewdcl ( / dclid return# filen fn lin )
  2.   (setq dclid (load_dialog (setq filen (getfiled "" "" "dcl" 16))))
  3.   (setq fn (open filen "r"))
  4.   (while (or (eq (substr (setq lin (read-line fn)) 1 2) "//") (eq (substr lin 1 (vl-string-search " " lin)) "") (not (eq (substr lin (+ (vl-string-search " " lin) 1) 9) " : dialog"))))
  5.   (new_dialog (substr lin 1 (vl-string-search " " lin)) dclid)
  6.   (action_tile "accept" "(done_dialog 1)")
  7.   (action_tile "cancel" "(done_dialog 0)")
  8.   (setq return# (start_dialog))
  9.   (princ return#)
  10.   (unload_dialog dclid)
  11.   (princ)
  12. )







网友答: 收藏了,好好研究研究。谢谢!

网友答:
back 发表于 2020-5-16 23:18
樓主,請問一下,你的源碼似乎不行執行,您要不要說一下呢

如果你是写程序员
在VLIDE写代码时其实可以改换DCL环境,直接将DCL写入LISP(以同样建立DCL文件
write-line字串表方式)

为何要麻烦写好DCL文件再用dcl2lsp转为LISP不是多此一举吗?

网友答:
lisperado 发表于 2020-5-17 11:36
如果你是写程序员
在VLIDE写代码时其实可以改换DCL环境,直接将DCL写入LISP(以同样建立DCL文件
write- ...

了解,謝謝你
我再試試看

网友答: 先下载,收藏,有时间慢慢消化

网友答: 先下载

网友答: 做什么用的呢

网友答: 收藏了,谢谢楼主分享

网友答: 谢谢楼主,先下了学习下


网友答: 下了,谢谢分享!!

网友答: 请问楼主这个是做什么用的,能不能讲细点,谢谢

网友答: 支持下,

网友答: 我是菜鸟,能给做个说明好吗
  • 上一篇:多边形 多段线 批量优化程序,给需要的朋友
  • 下一篇:没有了