乐筑天下

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

[编程交流] 分配Tog的组合键

[复制链接]

14

主题

75

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 17:53:46 | 显示全部楼层 |阅读模式
分配切换OSMODE和3DOSMODE开/关的组合键。可能吗???
 
不仅将其分配给“F3”和“F4”,还将其分配给CTRL+F作为OSMODE开/关,CTRL+SHIFT+F作为3DOSMODE开/关。谁能帮帮我???
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:58:57 | 显示全部楼层
你好
我知道,使用lisp可以将这些切换指定为commad定义。
但是我不知道如何分配这些与您需要的快捷方式相同的命令(我在您的示例中讨论的是组合键)。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:02:45 | 显示全部楼层
因为我使用的一些版本在windows和一些键盘之间没有很好的界面,所以我将其用作sysvar切换。
 
  1. [color=#8b4513];;;TOGGLE SYSVARS[/color]
  2. [b][color=BLACK]([/color][/b]defun c:tg [b][color=FUCHSIA]([/color][/b]/ v[b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]while
  4.   [b][color=NAVY]([/color][/b]or
  5.     [b][color=MAROON]([/color][/b]initget [color=#2f4f4f]"Blipmode Cmddia Gridmode Highlight splFrame Orthomode Tilemode Snapmode"[/color][b][color=MAROON])[/color][/b]
  6.     [b][color=MAROON]([/color][/b]setq v [b][color=GREEN]([/color][/b]getkword [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"\nToggle - "[/color]
  7.                               [color=#2f4f4f]"Blipmode"[/color]
  8.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"BLIPMODE"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  9.                               [color=#2f4f4f]"/Cmddia"[/color]
  10.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"CMDDIA"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  11.                               [color=#2f4f4f]"/Gridmode"[/color]
  12.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"GRIDMODE"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  13.                               [color=#2f4f4f]"/Highlight"[/color]
  14.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"HIGHLIGHT"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  15.                               [color=#2f4f4f]"/splFrame"[/color]
  16.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"SPLFRAME"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  17.                               [color=#2f4f4f]"/Orthomode"[/color]
  18.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"ORTHOMODE"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  19.                               [color=#2f4f4f]"/Tilemode"[/color]
  20.                               [color=#2f4f4f]"/Snapmode"[/color]
  21.                               [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"SNAPMODE"[/color][b][color=TEAL])[/color][/b] 1[b][color=PURPLE])[/color][/b] [color=#2f4f4f]"^"[/color] [color=#2f4f4f]""[/color][b][color=RED])[/color][/b]
  22.                               [color=#2f4f4f]":   "[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  23.   [b][color=NAVY]([/color][/b]setvar v [b][color=MAROON]([/color][/b]- 1 [b][color=GREEN]([/color][/b]getvar v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  24.   [b][color=NAVY]([/color][/b]princ v[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  25. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
crtl+ascii字符通常有效,功能键被击中或未击中,即切换snapmode
 
您可能可以将其修改为使用0/1位值的任何sysvar
 
-大卫
回复

使用道具 举报

14

主题

75

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 18:06:15 | 显示全部楼层
AhrrrhgHgrk'K'。。。我一点也不能尝试arround,因为你给我的建议是,我目前的问题已经解决了,还没有解决。这是一个重要的问题,应该首先解决的优先情况,现在在我的帖子在另一个页面在同一个论坛。给你,http://www.cadtutor.net/forum/showthread.php?96115-I-get-an-error-when-I-try-to-convert-the-solid-object-to-quot-NURB-quot
 
再见,谢谢你的建议,我很快就会给你答复。我真的非常感谢你们,很抱歉我说的话不够好。。。
回复

使用道具 举报

14

主题

75

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 18:07:33 | 显示全部楼层
嗨,大卫·贝瑟尔!这是很好的Lisp程序非常好!但是我在“Snapmode”的下一个代码下面插入“osMode&3Dosmode”代码时失败了。这是我的!
 
  1. (defun c:3SS (/ v)
  2. (while
  3.   (or
  4.     (initget "Blipmode Cmddia Gridmode Highlight splFrame Orthomode Tilemode Snapmode [b][color=red]osMode 3Dosmode[/color][/b]")
  5.     (setq v (getkword (strcat "\nToggle - "
  6.                               "Blipmode"
  7.                               (if (= (getvar "BLIPMODE") 1) "^" "")
  8.                               "/Cmddia"
  9.                               (if (= (getvar "CMDDIA") 1) "^" "")
  10.                               "/Gridmode"
  11.                               (if (= (getvar "GRIDMODE") 1) "^" "")
  12.                               "/Highlight"
  13.                               (if (= (getvar "HIGHLIGHT") 1) "^" "")
  14.                               "/splFrame"
  15.                               (if (= (getvar "SPLFRAME") 1) "^" "")
  16.                               "/Orthomode"
  17.                               (if (= (getvar "ORTHOMODE") 1) "^" "")
  18.                               "/Tilemode"
  19.                               "/Snapmode"
  20.                               (if (= (getvar "SNAPMODE") 1) "^" "")[b][color=red]
  21.                               "/osMode"
  22.                               (if (= (getvar "OSMODE") 1) "^" "")
  23.                               "/3Dosmode"
  24.                               (if (= (getvar "3DOSMODE") 1) "^" "")[/color][/b]
  25.                               ":   "))))
  26.   (setvar v (- 1 (getvar v)))
  27.   (princ v))
  28. (prin1))
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:10:07 | 显示全部楼层
好的,试试这个:
  1. (defun c:test (/ )
  2. (if (not *ans*) (setq *ans* "osmode"))
  3. (initget "osmode 3dosmode")
  4. (setq *ans* (cond ( (getkword (strcat "\nToggle [osmode/3dosmode] <" *ans* ">: "))) ( *ans* )))
  5. (cond
  6.   ((= *ans* "osmode")
  7.      (if (= (getvar 'osmode ) 0)
  8.      (progn
  9.      (setvar "osmode" 15359)
  10.      (princ (strcat "\nOSMODE is set to "" (rtos(getvar "osmode") 2 0) "" (ON)"  ))
  11.      );progn true
  12.      (progn
  13.      (setvar "osmode" 0)
  14.      (princ (strcat "\nOSMODE is set to "" (rtos(getvar "osmode") 2 0) "" (OFF)"  ))
  15.      );progn false
  16.      );if
  17.    )
  18.   ((= *ans* "3dosmode")
  19.      (if (= (getvar '3dosmode ) 0)
  20.      (progn
  21.      (setvar "3dosmode" 1022)
  22.      (princ (strcat "\n3D-osmode is set to "" (rtos(getvar "3dosmode") 2 0) "" (ON)"  ))
  23.      );progn true
  24.      (progn
  25.      (setvar "3dosmode" 0)
  26.      (princ (strcat "\n3D-osmode is set to "" (rtos(getvar "3dosmode") 2 0) "" (OFF)"  ))
  27.      );progn false
  28.      );if
  29.    )
  30. );cond
  31. (princ)
  32. );defun

调整osmode和的15359值
3dosmode的1022值可满足您的需求。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:14:09 | 显示全部楼层
正如Grrr所指出的,这两个系统变量不是基于0/1的值。因此,它们不能简单地切换开/关。
 
-大卫
回复

使用道具 举报

14

主题

75

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 18:16:43 | 显示全部楼层
哇@Grr。。。这是一个很棒的代码,但是当我的代码构建修改失败时,你能帮我@Grr?
 
  1. (defun c:[color=red][b]TGG[/b][/color] (/ )
  2. (if (not *ans*) (setq *ans* "osmode"))
  3. (initget "Osmode 3dosmode [b][color=red]Lwdisplay[/color][/b]")
  4. (setq *ans* (cond ( (getkword (strcat "\nToggle [Osmode/3dosmode[b][color=red]/Lwdisplay[/color][/b]] <" *ans* ">: "))) ( *ans* )))
  5. (cond
  6.   ((= *ans* "osmode")
  7.      (if (= (getvar 'osmode ) 0)
  8.      (progn
  9.      (setvar "osmode" [color=red][b]8367[/b][/color])
  10.      (princ (strcat "\nOSMODE is set to "" (rtos(getvar "osmode") 2 0) "" (ON)"  ))
  11.      );progn true
  12.      (progn
  13.      (setvar "osmode" [b][color=red]24751[/color][/b])
  14.      (princ (strcat "\nOSMODE is set to "" (rtos(getvar "osmode") 2 0) "" (OFF)"  ))
  15.      );progn false
  16.      );if
  17.    )
  18.   ((= *ans* "3dosmode")
  19.      (if (= (getvar '3dosmode ) 0)
  20.      (progn
  21.      (setvar "3dosmode" [b][color=red]62[/color][/b])
  22.      (princ (strcat "\n3D-osmode is set to "" (rtos(getvar "3dosmode") 2 0) "" (ON)"  ))
  23.      );progn true
  24.      (progn
  25.      (setvar "3dosmode" [color=red][b]63[/b][/color])
  26.      (princ (strcat "\n3D-osmode is set to "" (rtos(getvar "3dosmode") 2 0) "" (OFF)"  ))
  27.      );progn false
  28.      );if
  29.    )[color=red][b]
  30.   ((= *ans* "LWDISPLAY")
  31.      (if (= (getvar 'LWDISPLAY ) 0)
  32.      (progn
  33.      (setvar "LWDISPLAY" ON)
  34.      (princ (strcat "\nLWDISPLAY is set to "" (rtos(getvar "LWDISPLAY") 2 0) "" (ON)"  ))
  35.      );progn true
  36.      (progn
  37.      (setvar "LWDISPLAY" OFF)
  38.      (princ (strcat "\nLWDISPLAY is set to "" (rtos(getvar "LWDISPLAY") 2 0) "" (OFF)"  ))
  39.      );progn false
  40.      );if
  41.    )[/b][/color]
  42. );cond
  43. (princ)
  44. );defun

 
 
在红线中,颜色由我修改,它不起作用。。
 
再次提前感谢!
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:19:49 | 显示全部楼层
至于您在initget中的输入:Lwdisplay
 
您必须在cond语句中提供足够的字符串:
[更改:
(=*ans*“LWDISPLAY”)
...
]
[为此:
(=*ans*“Lwdisplay”)
...
]
 
[编辑:引用相同内容,对于“Osmode”-将((=*ans*“Osmode”)…)更改为((=*ans*“Osmode”)…)]
[编辑2:这一行:(if(not*ans*)(setq*ans*“osmode”)),应该是:(if(not*ans*)(setq*ans*“osmode”))]
回复

使用道具 举报

14

主题

75

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 18:22:25 | 显示全部楼层
它仍然不起作用@marko_ribar!我哪里有错?这是我尝试应用你所说的。。。
 
 
  1. (defun c:TGG (/ )
  2. (if (not *ans*) (setq *ans* "[color=red][b]Osmode[/b][/color]"))
  3. (initget "[b][color=red]Osmode 3dosmode Lwdisplay[/color][/b]")
  4. (setq *ans* (cond ( (getkword (strcat "\nToggle [[color=red][b]Osmode[/b][/color]/[color=red][b]3dosmode[/b][/color]/[color=red][b]Lwdisplay[/b][/color]] <" *ans* ">: "))) ( *ans* )))
  5. (cond
  6.   ((= *ans* "[color=red][b]Osmode[/b][/color]")
  7.      (if (= (getvar '[color=red][b]Osmode [/b][/color]) 0)
  8.      (progn
  9.      (setvar "[color=red][b]Osmode[/b][/color]" [color=red][b]8367[/b][/color])
  10.      (princ (strcat "\nOSMODE is set to "" (rtos(getvar "[color=red][b]Osmode[/b][/color]") 2 0) "" (ON)"  ))
  11.      );progn true
  12.      (progn
  13.      (setvar "[color=red][b]Osmode[/b][/color]" [b][color=red]24751[/color][/b])
  14.      (princ (strcat "\nOSMODE is set to "" (rtos(getvar "[color=red][b]Osmode[/b][/color]") 2 0) "" (OFF)"  ))
  15.      );progn false
  16.      );if
  17.    )
  18.   ((= *ans* "[color=red][b]3dosmode[/b][/color]")
  19.      (if (= (getvar '[b][color=red]3dosmode [/color][/b]) 0)
  20.      (progn
  21.      (setvar "[color=red][b]3dosmode[/b][/color]" [color=red][b]62[/b][/color])
  22.      (princ (strcat "\n3D-osmode is set to "" (rtos(getvar "[b][color=red]3dosmode[/color][/b]") 2 0) "" (ON)"  ))
  23.      );progn true
  24.      (progn
  25.      (setvar "[b][color=red]3dosmode[/color][/b]" [color=red][b]63[/b][/color])
  26.      (princ (strcat "\n3D-osmode is set to "" (rtos(getvar "[b][color=red]3dosmode[/color][/b]") 2 0) "" (OFF)"  ))
  27.      );progn false
  28.      );if
  29.    )[b][color=dimgray]
  30.   ((= *ans* "[color=red]Lwdisplay[/color]")
  31.      (if (= (getvar '[color=red]Lwdisplay [/color]) 0)
  32.      (progn
  33.      (setvar "[/color][/b][b][color=dimgray][b][color=dimgray][color=red]Lwdisplay[/color][/color][/b]" [color=red]ON[/color])
  34.      (princ (strcat "\nLWDISPLAY is set to "" (rtos(getvar "[color=red]Lwdisplay[/color]") 2 0) "" (ON)"  ))
  35.      );progn true
  36.      (progn
  37.      (setvar "[/color][/b][b][color=dimgray][b][color=dimgray][color=red]Lwdisplay[/color][/color][/b]" [color=red]OFF[/color])
  38.      (princ (strcat "\nLWDISPLAY is set to "" (rtos(getvar "[color=red]Lwdisplay[/color]") 2 0) "" (OFF)"  ))
  39.      );progn false
  40.      );if
  41.    )
  42. );cond
  43. (princ)
  44. );defun[/color][/b]
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 01:08 , Processed in 0.412209 second(s), 72 queries .

© 2020-2025 乐筑天下

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