乐筑天下

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

[编程交流] 打印字段公式内容

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 16:13:14 | 显示全部楼层 |阅读模式
你好
 
使用acad 2017
 
我得到了一个简单的公式,可以进行数学运算并打印出结果,
但我希望它能打印出整个公式和结果。
 
怎么做?
 
见附件
171316y0wiie00e5azqg04.jpg
field_frml。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:33:54 | 显示全部楼层
可以这样做,例如对于使用cond类型的字符串4.83 x 7.05的4个简单计算,查找x-+/然后将文本拆分为num1 num2和数学。
 
  1. definatley not tested
  2. (setq num1 (getreal "enter 1st value"))
  3. (setq num2 (getreal "enter 2nd value"))
  4. (setq math (getstring "enter math value"))
  5. (cond
  6. ((= (strcase math) "X")(setq ans (strcat (rtos num1 2 2 ) " " math " " (rtos num2 2 2) " = " (rtos (* num1 num2) 2 2 )))))
  7. ... same for + - /
  8. )
  9. (command "Text" pt "" "" ans)
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 16:37:51 | 显示全部楼层
谢谢比格尔。我希望用更友好的方式来做,但Lisp程序是一个真正的解决方案,
毕竟,Feilds是为非程序员服务的
再次感谢
 
Lisp我来了
 
谢伊
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:49:56 | 显示全部楼层
这是一个dcl前端,第三行是*/-+
 
(ah:getval3“1st number”5 4“1”“2nd number”8 7“2”“数学运算+-/*”6 4“*”)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:01:40 | 显示全部楼层
这是一个更新版本需要getvals3。lsp
 
  1. ; Formula as text .lsp
  2. ; By Alan H July 2017
  3. (defun mathtxt ( / num1 num2 val1 val2 val3)
  4. (setq decpl 2)
  5. (if (not Ah:getval3)(load "getvals3"))
  6. (ah:getval3 "1st number " 5 4 "1" "2nd number " 8 7 "2" "Math operation + - / *" 6 4 "X")
  7. (setq num1 (atof val1))
  8. (setq num2 (atof val2))
  9. (if  (= (strcase val3) "X") (setq ans (strcat val1 " " val3 " " val2 " = " (rtos (* num1 num2) 2 decpl ))))
  10. (if (=  val3 "-")(setq ans (strcat val1 " " val3 " "  val2 " = " (rtos (- num1 num2) 2 decpl ))))
  11. (if (= val3 "+")(setq ans (strcat val1 " " val3 " "  val2  " = " (rtos (+ num1 num2) 2 decpl ))))
  12. (if (= val3 "/")(setq ans (strcat val1 " " val3 " "  val2  " = " (rtos (/ num1 num2) 2 decpl ))))
  13. (command "Text" (getpoint) "" ans) ; text with preset height
  14. ;(command "Text" (getpoint) "" "" ans) ;text with no height set
  15. (mathtxt)

 
  1. ; Input  Dialog box with variable title
  2. ; multiple lines of dcl input supported
  3. ; add extra lines if required by copying code defun
  4. ; By Alan H 2015
  5. (vl-load-com)
  6. ; 1 line dcl
  7. ; sample code (ah:getval1 "Line 1" 5 4 "-")
  8. (defun AH:getval1 (title width limit def1 / fo fname)
  9. ; you can hard code a directory if you like for dcl file
  10. (setq fo (open (setq fname (vl-filename-mktemp "" "" ".dcl")) "w"))
  11. ;(setq fo (open (setq fname "c:\\acadtemp\\getval.dcl") "w"))
  12. (write-line "ddgetval : dialog {" fo)
  13. (write-line " : row {" fo)
  14. (write-line ": edit_box {" fo)
  15. (write-line (strcat "    key = "  (chr 34) "key1" (chr 34) ";") fo)
  16. (write-line  (strcat " label = "  (chr 34) title (chr 34) ";"  )   fo)
  17. ; these can be replaced with shorter value etc
  18. (write-line (strcat "     edit_width = " (rtos width 2 0) ";" ) fo)
  19. (write-line (strcat "     edit_limit = " (rtos limit 2 0) ";" ) fo)
  20. (write-line "   is_enabled = true;" fo)
  21. (write-line "    }" fo)
  22. (write-line "  }" fo)
  23. (write-line "ok_only;}" fo)
  24. (close fo)
  25. (setq dcl_id (load_dialog  fname))
  26. ; pt is a list 2 numbs -1 -1 centre ('(20 20))
  27. ;(not (new_dialog "test" dch "" *screenpoint*))
  28. (if (not (new_dialog "ddgetval" dcl_id))
  29. (exit))
  30. (set_tile "key1" (setq val1 def1))
  31. (action_tile "key1" "(setq val1 $value)")
  32. (mode_tile "key1" 3)
  33. (start_dialog)
  34. (done_dialog)
  35. (unload_dialog dcl_id)
  36. ; returns the value of val1 as a string
  37. (vl-file-delete fname)
  38. ) ; defungetval1
  39. ; 2 line dcl
  40. ; sample code (ah:getval2 "Line 1" 5 4 "1" "Line2" 8 7 "2")
  41. (defun AH:getval2 (title1 width1 limit1 def1 title2 width2 limit2 def2 / fo fname)
  42. (setq fo (open (setq fname "c:\\acadtemp\\getval.dcl") "w"))
  43. (write-line "ddgetval2 : dialog {" fo)
  44. (write-line " : column {" fo)
  45. (write-line ": edit_box {" fo)
  46. (write-line (strcat "    key = " (chr 34) "key1" (chr 34) ";") fo)
  47. (write-line  (strcat " label = "  (chr 34) title1 (chr 34) ";" ) fo)
  48. (write-line (strcat "     edit_width = " (rtos width1 2 0) ";" ) fo)
  49. (write-line (strcat "     edit_limit = " (rtos limit1 2 0) ";" ) fo)
  50. (write-line "   is_enabled = true ;" fo)
  51. (write-line "    }" fo)
  52. (write-line "spacer_1 ;" fo)
  53. (write-line ": edit_box {" fo)
  54. (write-line (strcat "    key = " (chr 34) "key2" (chr 34) ";") fo)
  55. (write-line (strcat " label = "  (chr 34) title2 (chr 34) ";"  ) fo)
  56. (write-line (strcat "     edit_width = " (rtos width2 2 0) ";" ) fo)
  57. (write-line (strcat "     edit_limit = " (rtos limit2 2 0) ";" ) fo)
  58. (write-line "   is_enabled = true ;" fo)
  59. (write-line "    }" fo)
  60. (write-line "    }" fo)
  61. (write-line "spacer_1 ;" fo)
  62. (write-line "ok_only;}" fo)
  63. (close fo)
  64. ; code part
  65. (setq dcl_id (load_dialog  fname))
  66. (if (not (new_dialog "ddgetval2" dcl_id))
  67. (exit))
  68. (mode_tile "key1" 3)
  69. (set_tile "key1" (setq val1 def1))
  70. (action_tile "key1" "(setq val1 $value)")
  71. (mode_tile "key2" 3)
  72. (set_tile "key2" (setq val2 def2))
  73. (action_tile "key2" "(setq val2 $value)")
  74. (start_dialog)
  75. (done_dialog)
  76. (unload_dialog dcl_id)
  77. ; returns the value of val1 and val2 as strings
  78. (vl-file-delete fname)
  79. ) ; defungetval2
  80. ; 3 line dcl
  81. ; sample code (ah:getval3 "Line 1" 5 4 "0.9" "Line 2" 8 7 "wow" "Line 3" 6 4 "123")
  82. (defun AH:getval3 (title1 width1 limit1 def1 title2 width2 limit2 def2 title3 width3 limit3 def3 / fo fname)
  83. (setq fo (open (setq fname "c:\\acadtemp\\getval.dcl") "w"))
  84. (write-line "ddgetval3 : dialog {" fo)
  85. (write-line " : column {" fo)
  86. (write-line ": edit_box {" fo)
  87. (write-line (strcat "    key = " (chr 34) "key1" (chr 34) ";") fo)
  88. (write-line  (strcat " label = "  (chr 34) title1 (chr 34) ";" ) fo)
  89. (write-line (strcat "     edit_width = " (rtos width1 2 0) ";" ) fo)
  90. (write-line (strcat "     edit_limit = " (rtos limit1 2 0) ";" ) fo)
  91. (write-line "   is_enabled = true ;" fo)
  92. (write-line "    }" fo)
  93. (write-line "spacer_1 ;" fo)
  94. (write-line ": edit_box {" fo)
  95. (write-line (strcat "    key = " (chr 34) "key2" (chr 34) ";") fo)
  96. (write-line (strcat " label = "  (chr 34) title2 (chr 34) ";"  ) fo)
  97. (write-line (strcat "     edit_width = " (rtos width2 2 0) ";" ) fo)
  98. (write-line (strcat "     edit_limit = " (rtos limit2 2 0) ";" ) fo)
  99. (write-line "   is_enabled = true ;" fo)
  100. (write-line "    }" fo)
  101. (write-line "spacer_1 ;" fo)
  102. (write-line ": edit_box {" fo)
  103. (write-line (strcat "    key = " (chr 34) "key3" (chr 34) ";") fo)
  104. (write-line (strcat " label = "  (chr 34) title3 (chr 34) ";"  ) fo)
  105. (write-line (strcat "     edit_width = " (rtos width3 2 0) ";" ) fo)
  106. (write-line (strcat "     edit_limit = " (rtos limit3 2 0) ";" ) fo)
  107. (write-line "   is_enabled = true ;" fo)
  108. (write-line "    }" fo)
  109. (write-line "    }" fo)
  110. (write-line "spacer_1 ;" fo)
  111. (write-line "ok_only;}" fo)
  112. (close fo)
  113. ; code part
  114. (setq dcl_id (load_dialog  fname))
  115. (if (not (new_dialog "ddgetval3" dcl_id))
  116. (exit))
  117. (mode_tile "key1" 3)
  118. (set_tile "key1" (setq val1 def1))
  119. (action_tile "key1" "(setq val1 $value)")
  120. (mode_tile "key2" 3)
  121. (set_tile "key2" (setq val2 def2))
  122. (action_tile "key2" "(setq val2 $value)")
  123. (mode_tile "key3" 3)
  124. (set_tile "key3" (setq val3 def3))
  125. (action_tile "key3" "(setq val3 $value)")
  126. (start_dialog)
  127. (done_dialog)
  128. (unload_dialog dcl_id)
  129. ; returns the value of val1 val2 and val3 as strings
  130. (vl-file-delete fname)
  131. ) ; defungetval3
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 17:24:46 | 显示全部楼层
看看李的http://www.lee-mac.com/fieldmath.html
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:06 , Processed in 0.412171 second(s), 67 queries .

© 2020-2025 乐筑天下

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