乐筑天下

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

[编程交流] Exit from (while...

[复制链接]
GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 07:42:52 | 显示全部楼层 |阅读模式
Hi,
I can exit with ESC, but not very elegant.
How to exit with right click?
 
Thanks.
 
 
  1. [color=red]([/color][color=blue]defun[/color] [color=black]c:Test1[/color] [color=red]([/color][color=blue]/[/color][color=black] i [/color][color=red])[/color]   [color=red]([/color][color=blue]if[/color] [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]getint[/color] [color=#a52a2a]"\nSpecify start number: "[/color][color=red]))[/color]       [color=red]([/color][color=blue]while[/color]            [color=red]([/color][color=blue]entmake[/color] [color=darkred]'[/color][color=red](([/color][color=#009900]0[/color] [color=darkred].[/color] [color=#a52a2a]"BLOCK"[/color][color=red])([/color][color=#009900]2[/color] [color=darkred].[/color] [color=#a52a2a]"TT"[/color][color=red])([/color][color=#009900]70[/color] [color=darkred].[/color] [color=#009900]0[/color][color=red])([/color][color=#009900]10[/color] [color=#009999]0.0[/color] [color=#009999]0.0[/color] [color=#009999]0.0[/color][color=red])))[/color]           [color=red]([/color][color=blue]entmake[/color]               [color=red]([/color][color=blue]list[/color]                   [color=red]([/color][color=blue]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"TEXT"[/color][color=red])[/color]                   [color=red]([/color][color=blue]cons[/color] [color=#009900]8[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"clayer"[/color][color=red]))[/color]                   [color=red]([/color][color=blue]cons[/color] [color=#009900]7[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textstyle"[/color][color=red]))[/color]                   [color=red]([/color][color=blue]cons[/color] [color=#009900]10[/color] [color=darkred]'[/color][color=red]([/color][color=#009999]0.0[/color] [color=#009999]0.0[/color][color=red]))[/color]                   [color=red]([/color][color=blue]cons[/color] [color=#009900]40[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textsize"[/color][color=red]))[/color]                   [color=red]([/color][color=blue]cons[/color] [color=#009900]1[/color] [color=red]([/color][color=blue]itoa[/color] i[color=red]))[/color]                [color=red])[/color]           [color=red])[/color]           [color=red]([/color][color=blue]entmake[/color] [color=darkred]'[/color][color=red](([/color][color=#009900]0[/color] [color=darkred].[/color] [color=#a52a2a]"ENDBLK"[/color][color=red])))[/color]           [color=red]([/color][color=blue]prompt[/color] [color=#a52a2a]"\nInsertion Point:"[/color] [color=red])[/color]           [color=red]([/color][color=blue]command[/color] [color=#a52a2a]"_-INSERT"[/color] [color=#a52a2a]"TT"[/color] [color=black]pause[/color] [color=#a52a2a]"1"[/color] [color=#a52a2a]"1"[/color] [color=#a52a2a]"0"[/color][color=red])[/color]           [color=red]([/color][color=blue]command[/color] [color=#a52a2a]"_explode"[/color] [color=red]([/color][color=blue]entlast[/color][color=red]))[/color]           [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]1+[/color] i[color=red]))[/color]       [color=red])[/color]       [color=red]([/color][color=blue]princ[/color][color=red])[/color]   [color=red])[/color]   [color=red]([/color][color=blue]princ[/color][color=red])[/color][color=red])[/color]
 
 
  1. [color=red]([/color][color=blue]defun[/color] [color=black]c:Test2[/color] [color=red]([/color][color=blue]/[/color] i TT [color=red])[/color]   [color=red]([/color][color=blue]if[/color] [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]getint[/color] [color=#a52a2a]"\nSpecify start number: "[/color][color=red]))[/color]       [color=red]([/color][color=blue]while[/color]           [color=red]([/color][color=blue]setq[/color] TT               [color=red]([/color][color=blue]entmakex[/color]                   [color=red]([/color][color=blue]list[/color]                       [color=red]([/color][color=blue]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"TEXT"[/color][color=red])[/color]                       [color=red]([/color][color=blue]cons[/color] [color=#009900]8[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"clayer"[/color][color=red]))[/color]                       [color=red]([/color][color=blue]cons[/color] [color=#009900]7[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textstyle"[/color][color=red]))[/color]                       [color=red]([/color][color=blue]cons[/color] [color=#009900]10[/color] [color=darkred]'[/color][color=red]([/color][color=#009999]0.0[/color] [color=#009999]0.0[/color][color=red]))[/color]                       [color=red]([/color][color=blue]cons[/color] [color=#009900]40[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textsize"[/color][color=red]))[/color]                       [color=red]([/color][color=blue]cons[/color] [color=#009900]1[/color] [color=red]([/color][color=blue]itoa[/color] i[color=red]))[/color]                    [color=red])[/color]               [color=red])[/color]           [color=red])[/color]           [color=red]([/color][color=blue]prompt[/color] [color=#a52a2a]"\nInsertion Point:"[/color] [color=red])[/color]           [color=red]([/color][color=blue]command[/color] [color=#a52a2a]"_cutclip"[/color] TT [color=#a52a2a]""[/color] [color=#a52a2a]"_pasteclip"[/color] [color=black]pause[/color][color=red])[/color]             [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]1+[/color] i[color=red]))[/color]       [color=red])[/color]       [color=red]([/color][color=blue]princ[/color][color=red])[/color]   [color=red])[/color]   [color=red]([/color][color=blue]princ[/color][color=red])[/color][color=red])[/color]
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:56:02 | 显示全部楼层
Not sure that how to achive that with you current code - please check the solution from this previous thread using GRREAD function.
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:07:18 | 显示全部楼层
I think the grread function is the right choice in this issue
 
Try it GP
 
  1. (defun c:Test (/ i gr p v);;;;; Tharwat 21. July. 2012 ;;;; (defun _Text ( i )   (entmakex (list (cons 0 "TEXT")           (cons 8 (getvar "clayer"))           (cons 7 (getvar "textstyle"))           (cons 10 '(0. 0. 0.))           (cons 40 (getvar "textsize"))           (cons 1 (itoa i))         )   ) ) (if (setq i (getint "\r Specify start number: "))   (progn     (setq v (_Text i))     (while   (or (eq (car (setq gr (grread t 15 0))) 5)       (eq (car gr) 3)   )    (redraw)    (entmod      (subst (cons 10 (cadr gr)) (assoc 10 (entget v)) (entget v))    )    (if (eq (car gr) 3)      (setq v (_Text (setq i (1+ i))))    )     )   )   (princ) ) (if (eq (car gr) 25)   (entdel v) ) (princ))
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:09:56 | 显示全部楼层
Thanks Mircea and Tharwat
 
The problem is grread does not allow insertion with OSNAP.
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:22:53 | 显示全部楼层
 
Read this thread in Swamp , it's very precious and I am sure that you could handle it by your self .
 
 
http://www.theswamp.org/index.php?topic=9133.0
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:33:27 | 显示全部楼层
 
Wonderful
Thank you
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:42:00 | 显示全部楼层
To my knowledge, you cannot exit using right-click whilst the -insert command takes focus, since your program cannot detect the user input issued to the -insert command.
 
However, here is an alternative method to exit using Esc:
 
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] c e i )   ([color=BLUE]setq[/color] c ([color=BLUE]getvar[/color] 'cmdecho))   ([color=BLUE]setvar[/color] 'cmdecho 0)   ([color=BLUE]if[/color] ([color=BLUE]setq[/color] i ([color=BLUE]getint[/color] [color=MAROON]"\nSpecify Start Number: "[/color]))       ([color=BLUE]progn[/color]           ([color=BLUE]while[/color]               ([color=BLUE]progn[/color]                   ([color=BLUE]entmake[/color] '((0 . [color=MAROON]"BLOCK"[/color]) (2 . [color=MAROON]"TT"[/color]) (70 . 0) (10 0.0 0.0 0.0)))                   ([color=BLUE]entmake[/color]                       ([color=BLUE]list[/color]                          '(0 . [color=MAROON]"TEXT"[/color])                           ([color=BLUE]cons[/color] 8 ([color=BLUE]getvar[/color] 'clayer))                           ([color=BLUE]cons[/color] 7 ([color=BLUE]getvar[/color] 'textstyle))                          '(10 0.0 0.0 0.0)                           ([color=BLUE]cons[/color] 40 ([color=BLUE]getvar[/color] 'textsize))                           ([color=BLUE]cons[/color] 1 ([color=BLUE]itoa[/color] i))                       )                   )                   ([color=BLUE]entmake[/color] '((0 . [color=MAROON]"ENDBLK"[/color])))                   ([color=BLUE]princ[/color] [color=MAROON]"\nInsertion Point [Esc to Exit]: "[/color])                   ([color=BLUE]setq[/color] e ([color=BLUE]entlast[/color]))                   ([color=BLUE]if[/color]                       ([color=BLUE]and[/color]                           ([color=BLUE]vl-cmdf[/color] [color=MAROON]"_.-insert"[/color] [color=MAROON]"TT"[/color] [color=BLUE]pause[/color] 1.0 1.0 0.0)                           ([color=BLUE]not[/color] ([color=BLUE]eq[/color] e ([color=BLUE]setq[/color] e ([color=BLUE]entlast[/color]))))                       )                       ([color=BLUE]progn[/color]                           ([color=BLUE]command[/color] [color=MAROON]"_.explode"[/color] e)                           ([color=BLUE]setq[/color] i ([color=BLUE]1+[/color] i))                       )                   )               )           )           ([color=BLUE]princ[/color] [color=MAROON]"\nExit Program."[/color]) [color=GREEN];; To show program has not errored[/color]       )   )   ([color=BLUE]setvar[/color] 'cmdecho c)   ([color=BLUE]princ[/color]))
Note that this method will not cause the program to error, as demonstrated by the message printed on exit.
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:48:24 | 显示全部楼层
 
If you say so I think that it can not be belied.
 
Thanks for the code.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:03 , Processed in 0.454135 second(s), 68 queries .

© 2020-2025 乐筑天下

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