乐筑天下

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

[编程交流] Kword选择变量/错误

[复制链接]

28

主题

87

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
167
发表于 2022-7-5 18:45:56 | 显示全部楼层 |阅读模式
  1. (Defun C:test ()
  2. (initget 1 "Repeat-X New-X")
  3. (if(setq XSelection (getkword "\nX Selection: [Repeat-X,New-X] :"))
  4. (setq XSelection (strcase XSelection))
  5.    )
  6. (if(= XSelection New-X)
  7. (initget 1 "1 2")
  8.   (if (tblsearch "block" (setq X (getkword "\nEnter Property Name [1,2] :")))
  9.       (setq X (strcase X))
  10. (if(= XSelection Repeat-X)
  11. (...??...)
  12. )     
  13.   )
  14. )
  15. )

 
 
由于某些原因,当选择1或2时,X kword选择表示无效kword。。。有人能告诉我为什么吗?
 
 
如果选择了Repeat-X,我还希望重复上次执行代码中的选择。那么,我如何全局设置它,以便在第二次运行代码时不需要提示我选择X呢?
回复

使用道具 举报

28

主题

87

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
167
发表于 2022-7-5 18:56:06 | 显示全部楼层
更好的是,如果有人能告诉我如何自动重复X值,除非选择新的X,那将不胜感激
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 19:09:05 | 显示全部楼层
虽然我不完全理解这个请求,但这里有一个清理过的片段:
  1. [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ XSelection x[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]initget 1 [color=#2f4f4f]"Repeat New"[/color][b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]setq XSelection [b][color=NAVY]([/color][/b]strcase [b][color=MAROON]([/color][/b]getkword [color=#2f4f4f]"\nX Selection: [Repeat,New] :"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  4. [b][color=FUCHSIA]([/color][/b]cond[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]= XSelection [color=#2f4f4f]"NEW"[/color][b][color=MAROON])[/color][/b]
  5.        [b][color=MAROON]([/color][/b]initget 1 [color=#2f4f4f]"1 2"[/color][b][color=MAROON])[/color][/b]
  6.        [b][color=MAROON]([/color][/b]setq x [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nEnter Property Name [1,2] :"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  7.        [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"block"[/color] x[b][color=GREEN])[/color][/b]
  8.            [b][color=GREEN]([/color][/b]yadayada[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  9.       [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]= XSelection [color=#2f4f4f]"REPEAT"[/color][b][color=MAROON])[/color][/b]
  10.     [b][color=MAROON]([/color][/b]yodayoda[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

28

主题

87

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
167
发表于 2022-7-5 19:19:05 | 显示全部楼层
谢谢你大卫。。。现在,如果单击鼠标左键或enter键,我如何重复该选项?
 
 
另外,我如何使它在第一次执行命令时存储为X选择的值?
 
 
因此可以在重复选项中引用
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 19:23:11 | 显示全部楼层
我想我更明白一点
 
我使用前缀gv_表示全局变量名:
 
  1. [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ XSelection x[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]cond [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]not gv_x[b][color=MAROON])[/color][/b]
  3.         [b][color=MAROON]([/color][/b]initget 1 [color=#2f4f4f]"Repeat New"[/color][b][color=MAROON])[/color][/b]
  4.         [b][color=MAROON]([/color][/b]setq XSelection [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nX Selection - Repeat/New :"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.        [b][color=NAVY]([/color][/b]T
  6.         [b][color=MAROON]([/color][/b]initget [color=#2f4f4f]"Repeat New"[/color][b][color=MAROON])[/color][/b]
  7.         [b][color=MAROON]([/color][/b]setq XSelection [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nX Selection - Repeat/New <R>:"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  8.         [b][color=MAROON]([/color][/b]or XSelection [b][color=GREEN]([/color][/b]set XSelection [color=#2f4f4f]"Repeat"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]cond [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]= XSelection [color=#2f4f4f]"New"[/color][b][color=MAROON])[/color][/b]
  10.         [b][color=MAROON]([/color][/b]initget 1 [color=#2f4f4f]"1 2"[/color][b][color=MAROON])[/color][/b]
  11.         [b][color=MAROON]([/color][/b]setq x [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nEnter Property Name - 1/2 :"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  12.         [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] x[b][color=GREEN])[/color][/b]
  13.              [b][color=GREEN]([/color][/b]setq gv_x x[b][color=GREEN])[/color][/b]
  14.              [b][color=GREEN]([/color][/b]yadayada[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  15.        [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]= XSelection [color=#2f4f4f]"Repeat"[/color][b][color=MAROON])[/color][/b]
  16.         [b][color=MAROON]([/color][/b]setq x gv_x[b][color=MAROON])[/color][/b]
  17.         [b][color=MAROON]([/color][/b]yodayoda[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  18. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
全局变量仅在当前会话中有效
 
HTH-David
回复

使用道具 举报

28

主题

87

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
167
发表于 2022-7-5 19:32:33 | 显示全部楼层
谢谢大卫。。。
 
 
那么你为什么决定使用/和逗号呢?
 
 
这又意味着什么?
 
 
最后,出于某种原因,引用gv\u x的重复获取了错误的值,知道为什么吗?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 19:43:42 | 显示全部楼层
我不知道是谁提出了这个标准,但25年多以来,getkword关键字使用了/分隔符。通常用括号括起来。这遵循ACAD标准输入(至少在我的版本中)
 
  1. (initget "Yes No")
  2. (if (/= "No" (getkword "\nContinue - (Yes/No) <Y>:   ))
  3.    (run_continue_call))

 
括号中的关键字助记符通常表示默认值
 
在这种情况下,如果XSelection为nil,则默认操作为Repeat
 
 
试试这个,看看结果是什么
 
  1. [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ XSelection x[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]cond [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]not gv_x[b][color=MAROON])[/color][/b]
  3.         [b][color=MAROON]([/color][/b]initget 1 [color=#2f4f4f]"Repeat New"[/color][b][color=MAROON])[/color][/b]
  4.         [b][color=MAROON]([/color][/b]setq XSelection [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nX Selection - Repeat/New :   "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.        [b][color=NAVY]([/color][/b]T
  6.         [b][color=MAROON]([/color][/b]initget [color=#2f4f4f]"Repeat New"[/color][b][color=MAROON])[/color][/b]
  7.         [b][color=MAROON]([/color][/b]setq XSelection [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nX Selection - Repeat/New <R>:   "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  8.         [b][color=MAROON]([/color][/b]or XSelection [b][color=GREEN]([/color][/b]set XSelection [color=#2f4f4f]"Repeat"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]cond [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]= XSelection [color=#2f4f4f]"New"[/color][b][color=GREEN])[/color][/b]
  10.             [b][color=GREEN]([/color][/b]not gv_x[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  11.         [b][color=MAROON]([/color][/b]initget 1 [color=#2f4f4f]"1 2"[/color][b][color=MAROON])[/color][/b]
  12.         [b][color=MAROON]([/color][/b]setq x [b][color=GREEN]([/color][/b]getkword [color=#2f4f4f]"\nEnter Property Name - 1/2 :"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  13.         [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] x[b][color=GREEN])[/color][/b]
  14.              [b][color=GREEN]([/color][/b]setq gv_x x[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  15.         [b][color=MAROON]([/color][/b]alert [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"XSelction = "[/color] XSelection [color=#2f4f4f]"\nX = "[/color] x  [color=#2f4f4f]"\ngv_x = "[/color] gv_x[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  16.        [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]= XSelection [color=#2f4f4f]"Repeat"[/color][b][color=MAROON])[/color][/b]
  17.         [b][color=MAROON]([/color][/b]setq x gv_x[b][color=MAROON])[/color][/b]
  18.         [b][color=MAROON]([/color][/b]alert [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"XSelction = "[/color] XSelection [color=#2f4f4f]"\nX = "[/color] x  [color=#2f4f4f]"\ngv_x = "[/color] gv_x[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  19. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
我仍然不确定最终结果会是什么-大卫
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 19:52:48 | 显示全部楼层
关键字由空格分隔。想出一些财产名称。 
 
 
使用
  1. (Defun C:test (/  notnil)
  2. (initget "Repeat-X New-X")
  3. (if(= XSelection nil)(setq XSelection "Repeat-X"))
  4. (if(setq notnil (getkword (strcat "[Repeat-X/New-X] <" XSelection ">: ")))(setq XSelection notnil))
  5. )

XSelection第一次运行代码时的默认值,之后的前一个值将是默认值。不需要带类型选择的strcat。无论如何,用鼠标从命令行或右键单击菜单更容易选择。所有选项都需要使用[]not()和/以及getkword。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:18 , Processed in 0.405131 second(s), 68 queries .

© 2020-2025 乐筑天下

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