乐筑天下

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

[编程交流] getstring问题

[复制链接]

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:49:02 | 显示全部楼层 |阅读模式
我目前正在编写一个lisp,它使用(getstring)从大约48个值中进行选择。我知道很多。然而,我已经设置了lisp以利用动态输入菜单,这样您就可以点击而不是键入长字符串。我的问题是,它只是抓住了绳子的第一部分。第一个空格之后的任何内容都将被忽略。如果我手动键入其中一个选项,lisp将继续,就像什么都没发生一样。最初我使用的是getkword,但也是同一个问题。
 
我已经附上了现在编写的代码,并感谢任何帮助。我正想弄清楚这件事。
 
编辑:抱歉格式化。如果你想像我写的那样查看,我使用记事本++和2的标签缩进和ZenBurn主题。
命令CopyPlotConfigs。lsp
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:55:59 | 显示全部楼层
您可以用T填充getstring的可选参数,它将接受带空格的字符串(getstring T“\n say it:”)。然而,在你的情况下,我要么使用DCL列表框,要么使用getkword。
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:59:41 | 显示全部楼层
 
我确实使用了getstring T,所以我可以手动输入页面设置,效果很好。实际上,通过DYN输入点击它并没有。
 
在这种情况下,我将如何使用getkword?我还没有完全弄清楚它的细微差别(我刚刚开始回顾我所有的代码来使用getkword,所以它对我来说相对较新)。我试着做了A)页面设置1,B)页面设置2,等等。第一种是A,第二种是B,等等。但这似乎也不起作用。我试图避免使用DCL来安抚公司里的键盘骑师(像我一样),并计划创建一个功能区选项卡,利用lisp进行点击类型。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:02:17 | 显示全部楼层
  1. (defun c:test (/)
  2. (initget 0 "Yes No")
  3. (getkword "\nDo you understand now? [Yes/No]: ")
  4. )
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:06:26 | 显示全部楼层
我用initget和getkword尝试了以下方法:
 
  1. (setq V:Plot01 "Page Setup 01")
  2. (setq V:Plot02 "Page Setup 02")
  3. (setq V:Plot03 "Page Setup 03")
  4. (setq V:PlotList (strcat "[" V:Plot01 "/" V:Plot02 "/" V:Plot03 "]"))
  5. (initget 0 V:PlotList)
  6. (if (= nil V:Plot)
  7.    (setq V:Plot (getkword (strcat "\nEnter page setup: " V:PlotList)))
  8.    (setq V:Plot (getkword (strcat "\nEnter page setup: " VPlotList "<" V:Plot "> ")))
  9. )
  10. (if (= V:Plot V:Plot01)
  11.    (progn
  12.        // (command "._-PSetupIN" "D:/AutoCAD/Templates/Page Setups - 64bit.dwt" "*")
  13.        // (command "-Plot" "No" "" V:Plot01 "" "No" "Yes" "No")
  14.        (PurgeUnused)
  15.        (princ (strcat "/n" V:Plot " page setup has been imported and set."))
  16.        (princ)
  17.    )
  18. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:10:05 | 显示全部楼层
你的initget是错误的。
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 10:11:22 | 显示全部楼层
为什么呢我的印象是initget 0只允许有人点击enter。还是我必须这样做?
 
(initget 1“页面设置01页面设置02页面设置03”)
 
那么,在那个时候,我该如何计算每个选项中的空格呢?
 
编辑:废话,刚刚看到这个帖子:http://www.cadtutor.net/forum/showthread.php?48047-初始化
 
所以,我想使用getstring可能是最好的选择,因为我的选项中有空格,这让我回到了我最初的问题。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:14:50 | 显示全部楼层
是的,我真的看了你的“名单”。getkword在这种情况下是行不通的。然而,我的意思是,你不能给initget一个像(initget 0“[是/否]”)这样的字符串,它必须是(initget 0“是/否”)。
你要么要走可怕的getstring路线,要么要使用列表框(我的建议)。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:18:08 | 显示全部楼层
如果你不想做列表框,你可以试试这个。。。
 
  1. (defun c:TEst (/ lst int choice)
  2. ((lambda (i)
  3.     (setq lst (mapcar (function (lambda (x) (cons (setq i (1+ i)) x)))
  4.                       '("PDF - 11 x 17" "PDF - 11 x 17 - ByLayer" "PDF - 17 x 22"
  5.                         "PDF - 17 x 22 - ByLayer" "PDF - 18 x 24" "PDF - 18 x 24 - ByLayer"
  6.                         "PDF - 22 x 34" "PDF - 22 x 34 - ByLayer" "PDF - 24 x 36"
  7.                         "PDF - 24 x 36 - ByLayer" "PDF - 30 x 42" "PDF - 30 x 42 - ByLayer"
  8.                         "PDF - 34 x 44" "PDF - 34 x 44 - ByLayer" "PDF - 36 x 48"
  9.                         "PDF - 36 x 48 - ByLayer" "Xerox 6204 - 17 x 22 - STF"
  10.                         "Xerox 6204 - 17 x 22 - STF - ByLayer" "Xerox 6204 - 18 x 24 - STF"
  11.                         "Xerox 6204 - 18 x 24 - STF - ByLayer" "Xerox 6204 - 22 x 34"
  12.                         "Xerox 6204 - 22 x 34 - ByLayer" "Xerox 6204 - 22 x 34 - STF"
  13.                         "Xerox 6204 - 22 x 34 - STF - ByLayer" "Xerox 6204 - 24 x 36"
  14.                         "Xerox 6204 - 24 x 36 - ByLayer" "Xerox 6204 - 24 x 36 - STF"
  15.                         "Xerox 6204 - 24 x 36 - STF - ByLayer" "Xerox 6204 - 30 x 42"
  16.                         "Xerox 6204 - 30 x 42 - ByLayer" "Xerox 6204 - 30 x 42 to 18 x 24"
  17.                         "Xerox 6204 - 30 x 42 to 24 x 36" "Xerox 6204 - 34 x 44"
  18.                         "Xerox 6204 - 34 x 44 - ByLayer" "Xerox 6204 - 36 x 48"
  19.                         "Xerox 6204 - 36 x 48 - ByLayer" "Sharp Color - 8.5 x 11"
  20.                         "Sharp Color - 8.5 x 11 - ByLayer" "Sharp Color - 11 x 17"
  21.                         "Sharp Color - 11 x 17 - ByLayer" "Sharp Color - 11 x 17 - STF"
  22.                         "Sharp Color - 11 x 17 - STF - ByLayer" "HP LaserJet 8150N - 8.5 x 11"
  23.                         "HP LaserJet 8150N - 8.5 x 11 - ByLayer" "HP LaserJet 8150N - 11 x 17"
  24.                         "HP LaserJet 8150N - 11 x 17 - ByLayer" "HP LaserJet 8150N - 11 x 17 - STF"
  25.                         "HP LaserJet 8150N - 11 x 17 - STF - ByLayer"
  26.                        )
  27.               )
  28.     )
  29.   )
  30.    -1
  31. )
  32. (textscr)
  33. (mapcar (function print) lst)
  34. (if (setq int (getint "\nSpecify number for Page Setup option: "))
  35.    (if (setq choice (cdr (assoc int lst)))
  36.      (progn
  37.        (command
  38.          "._-PSetupIN"
  39.          "C:/Users/TAbel/AppData/Roaming/PortableApps/Dropbox/Dropbox/AutoCAD/Templates/Page Setups - 64bit.dwt"
  40.          "*"
  41.        )
  42.        (command "-Plot" "No" "" choice "" "No" "Yes" "No")
  43.      )
  44.      (princ "\nInvalid selection.")
  45.    )
  46. )
  47. (princ)
  48. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:24:18 | 显示全部楼层
完全不切实际(将挤满屏幕)。。。
 
  1. (defun c:TEst (/ lst choice)
  2. ((lambda (i)
  3.     (setq lst (mapcar (function (lambda (x) (list (setq i (1+ i)) x)))
  4.                       '("PDF - 11 x 17" "PDF - 11 x 17 - ByLayer" "PDF - 17 x 22"
  5.                         "PDF - 17 x 22 - ByLayer" "PDF - 18 x 24" "PDF - 18 x 24 - ByLayer"
  6.                         "PDF - 22 x 34" "PDF - 22 x 34 - ByLayer" "PDF - 24 x 36"
  7.                         "PDF - 24 x 36 - ByLayer" "PDF - 30 x 42" "PDF - 30 x 42 - ByLayer"
  8.                         "PDF - 34 x 44" "PDF - 34 x 44 - ByLayer" "PDF - 36 x 48"
  9.                         "PDF - 36 x 48 - ByLayer" "Xerox 6204 - 17 x 22 - STF"
  10.                         "Xerox 6204 - 17 x 22 - STF - ByLayer" "Xerox 6204 - 18 x 24 - STF"
  11.                         "Xerox 6204 - 18 x 24 - STF - ByLayer" "Xerox 6204 - 22 x 34"
  12.                         "Xerox 6204 - 22 x 34 - ByLayer" "Xerox 6204 - 22 x 34 - STF"
  13.                         "Xerox 6204 - 22 x 34 - STF - ByLayer" "Xerox 6204 - 24 x 36"
  14.                         "Xerox 6204 - 24 x 36 - ByLayer" "Xerox 6204 - 24 x 36 - STF"
  15.                         "Xerox 6204 - 24 x 36 - STF - ByLayer" "Xerox 6204 - 30 x 42"
  16.                         "Xerox 6204 - 30 x 42 - ByLayer" "Xerox 6204 - 30 x 42 to 18 x 24"
  17.                         "Xerox 6204 - 30 x 42 to 24 x 36" "Xerox 6204 - 34 x 44"
  18.                         "Xerox 6204 - 34 x 44 - ByLayer" "Xerox 6204 - 36 x 48"
  19.                         "Xerox 6204 - 36 x 48 - ByLayer" "Sharp Color - 8.5 x 11"
  20.                         "Sharp Color - 8.5 x 11 - ByLayer" "Sharp Color - 11 x 17"
  21.                         "Sharp Color - 11 x 17 - ByLayer" "Sharp Color - 11 x 17 - STF"
  22.                         "Sharp Color - 11 x 17 - STF - ByLayer" "HP LaserJet 8150N - 8.5 x 11"
  23.                         "HP LaserJet 8150N - 8.5 x 11 - ByLayer" "HP LaserJet 8150N - 11 x 17"
  24.                         "HP LaserJet 8150N - 11 x 17 - ByLayer" "HP LaserJet 8150N - 11 x 17 - STF"
  25.                         "HP LaserJet 8150N - 11 x 17 - STF - ByLayer"
  26.                        )
  27.               )
  28.     )
  29.   )
  30.    -1
  31. )
  32. (initget
  33.    0
  34.    (vl-list->string
  35.      (cdr (apply (function append)
  36.                  (mapcar (function (lambda (x) (cons 32 (vl-string->list (itoa (car x)))))) lst)
  37.           )
  38.      )
  39.    )
  40. )
  41. (if (setq choice
  42.             (getkword
  43.               (strcat
  44.                 "\nSpecify number for Page Setup option ["
  45.                 (substr
  46.                   (apply
  47.                     'strcat
  48.                     (mapcar (function (lambda (x) (strcat "/" (itoa (car x)) " = " (cadr x)))) lst)
  49.                   )
  50.                   2
  51.                 )
  52.                 "]: "
  53.               )
  54.             )
  55.      )
  56.    (progn
  57.      (command
  58.        "._-PSetupIN"
  59.        "C:/Users/TAbel/AppData/Roaming/PortableApps/Dropbox/Dropbox/AutoCAD/Templates/Page Setups - 64bit.dwt"
  60.        "*"
  61.      )
  62.      (command "-Plot" "No" "" (cadr (nth (atoi choice) lst)) "" "No" "Yes" "No")
  63.    )
  64. )
  65. (princ)
  66. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:04 , Processed in 1.108908 second(s), 72 queries .

© 2020-2025 乐筑天下

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