乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 2|回复: 1

[编程交流] 多行DCL自动代码生成器

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:46:13 | 显示全部楼层 |阅读模式
很多时候,我在lisp中看到多个问题,并认为一个好的dcl会更好,但编写dcl和接口LSP很耗时,所以我试图通过加载一个单独的lisp和几行代码,将两者基本结合起来,从一行输入到dcl支持的尽可能多的代码。
 
无论如何,它如此接近,所以我在这里发布了代码,它自动生成dcl和运行它所需的lsp。我只是有一个作家块和它如此接近。所以,对所有人来说,都很感激。
 
  1. ;; writes a multiline input dcl file from generic input
  2. ;; By BIG AL May 2015
  3. (defun AH:write-items (keynum title / )
  4. (write-line ": edit_box {" f1)
  5. (write-line (strcat "    key = "  (chr 34) Keynum (chr 34) ";") f1)
  6. (write-line  (strcat " label = "  (chr 34) title (chr 34) ";"  )   f1)
  7. ; these can be replaced with shorter value etc
  8. (write-line "     edit_width = 18;" f1)
  9. (write-line "     edit_limit = 15;" f1)
  10. (write-line "   is_enabled = true;" f1)        
  11. (write-line "    }" f1)
  12. (if (= AHnum nil)(setq AHnum 0))
  13. (write-line (strcat "(action_tile " (chr 34) keynum (chr 34) " " (chr 34) "(setq item" (rtos (setq AHnum (+ AHnum 1)) 2 0) " $value)" (chr 34) ")" ) f2)
  14. )
  15. ; this defun writes the first few lines of the lsp and dcl files
  16. (defun AH:openfiles ()
  17. (setq f1 (open "C://acadtemp//getval.dcl" "w"))
  18. (setq f2 (open "C://acadtemp//getvals2.lsp" "w"))
  19. ; dcl
  20. (write-line "ddgetval : dialog {" f1)
  21. (write-line (strcat "label = " (chr 34) "Enter values" (chr 34) ";") f1)
  22. (write-line ": column {" f1)
  23. ;lsp
  24. (write-line (strcat "(setq dcl_id (load_dialog " (chr 34) "c:\\acadtemp\\getval" (chr 34) "))" ) f2)
  25. (write-line (strcat "(if (not (new_dialog " (chr 34) "ddgetval" (chr 34) " dcl_id))" ) f2)
  26. (write-line "(exit))" f2)
  27. ) ; defun
  28. ; closes files
  29. ;dcl
  30. (defun AH:closefiles ()
  31. (write-line "spacer_1 ;" f1)
  32. (write-line "ok_cancel;}" f1)
  33. (write-line "}" f1)
  34. (close f1)
  35. ;lsp
  36. (write-line "(START_DIALOG)" f2)
  37. (write-line "(done_dialog)" f2)
  38. (close f2)
  39. (setq num nil)
  40. )
  41. ; this is test code which would be added to a seperate routine asking 4 questions
  42. (AH:openfiles)
  43. (AH:write-items "key1" "Title1") ; (setq ans1 key1)
  44. (AH:write-items "key2" "Title2") ; (setq var1 key2)
  45. (AH:write-items "key3" "Title3") ; (setq var2 key3)
  46. (AH:write-items "key4" "Title4") ; (setq xx key4)
  47. (AH:closefiles)
  48. ;(load "C:\\acadtemp\\getvals2") ; it should return 4 values item1 item2 item3 item4
  49. ;(alert (strcat item1 "\n" item2 \n item3 \n item4)) ; just a test line
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:36:21 | 显示全部楼层
以上代码已更新
 
最终结果是DCl具有所需的更少或尽可能多的行,而不是编写或编辑多个DCl
 
204613blt6sotzjxr3gyas.jpg
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 01:03 , Processed in 0.810501 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表