乐筑天下

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

[编程交流] 警报框帮助

[复制链接]

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2022-7-27 03:37:23 | 显示全部楼层 |阅读模式
你好我是使用lisp代码设置规模t

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-27 05:17:41 | 显示全部楼层
也许吧。。这给了你想要的结果吗??
  1. (defun c:test (/ s)
  2.   (if (setq s (getvar 'useri1))
  3.     (progn
  4.       (princ (strcat "\n The drawing scale is 1:" (itoa s)))
  5.       (if (not (atoms-family 0 '("c:setsc")))
  6.         (alert "Scale not set. Aborting ... ")
  7.         (progn
  8.           (c:setsc)
  9.           (setq s (getvar 'useri1))
  10.         )
  11.       )
  12.     )
  13.   )
  14.   (princ)
  15. )

我看不出你是如何在任何形式中设置比例的,只是设置一个用户变量。
。。。问题是,任何人都可以访问变量,任何程序都可以更改变量的值。
补充:另外,您需要(比如说)7.5的值的可能性有多大。整数将不会产生任何影响,
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2022-7-27 13:03:29 | 显示全部楼层
嗨,kdub。感谢您的重播。我做了这个更改
  1.        (defun c:test (/ s)
  2.       (if (setq s (getvar 'useri1))
  3.      (progn
  4.           ;(princ (strcat "\n The drawing scale is 1:" (itoa s)))
  5.         (alert (strcat "\n The drawing scale is 1:" (itoa s)))
  6.           (if (not (atoms-family 0 '("c:setsc")))
  7.             (alert "Scale is set. Aborting ... ")
  8.             (progn
  9.               (c:setsc)
  10.               (setq s (getvar 'useri1))
  11.             )
  12.           )
  13.         )
  14.       )
  15.       (princ)
  16.     )

这个代码没有按预期工作。我想要如果比例是0,那么(c:setsc)并设置一个比例,如果比例是另一个数字,如(50,100,200,250,500等),然后跳过检查。现在,如果 scale 是 0 或其他数字,则所有时间都转到 (c:setsc)。我不想要这个。
有什么想法吗?
谢谢
回复

使用道具 举报

9

主题

383

帖子

82

银币

后起之秀

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

铜币
355
发表于 2022-7-27 21:01:16 | 显示全部楼层
您可以将user1与列表(100、200、250、500…)进行比较。如果=列表中的项,则跳过
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2022-7-27 21:37:47 | 显示全部楼层
也许是下午...
  1. (DEFUN C:SETSC ()
  2.   (setvar "OSMODE" 13)
  3.   (princ (strcat "\nThe drawing scale is 1:" (itoa (getvar 'useri1)))  )
  4.   (setvar "useri1" (getint "\nSET New scale 1:"))  
  5.   (princ)
  6. )
  1. (defun c:test ()
  2.   (if (zerop (getvar 'useri1))
  3.     (if (not (atoms-family 0 '("c:setsc")))
  4.       (alert "Unable to find 'c:setsc'. Aborting ... ")
  5.       ;;else
  6.       (c:setsc)
  7.     )
  8.   )
  9.   ;;(princ (strcat "\n The drawing scale is 1:" (itoa (getvar "useri1"))))
  10.   (alert (strcat "\n The drawing scale is 1:" (itoa (getvar "useri1"))))
  11.   (princ)
  12. )

如果值为0,则调用c:SETSC(从c:TEST )
如果要强制进行更改,只需从命令行调用c:SETSC。
我假设您正在从另一个读取变量的例程中设置比例。问候
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-28 02:20:57 | 显示全部楼层
感谢您的帮助,非常感谢
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2022-7-28 08:22:15 | 显示全部楼层
请注意,这个 -
  1. (if (not (atoms-family 0 '("c:setsc")))

永远不会被验证,因为即使找不到符号“c:setsc”(即未定义),原子族函数也将返回列表
(nil),
这是非空的。
虽然不是使用
car
来检查列表的第一个元素是否为非空值,但表达式可以更理想地写成:
  1. (if (not c:setsc)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-28 14:53:46 | 显示全部楼层
之前(代码8]
之前
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-28 15:55:18 | 显示全部楼层
我做了一些更改,但警报框不起作用。所有文本都显示在命令行
  1. (if (zerop (getvar 'useri1))
  2.        (if (not (atoms-family 0 '("c:setsc")))
  3.        ;(if (not c:setsc)
  4.           (alert "The drawing scale is not set !!!!")
  5.           ;;else
  6.           (c:setsc)
  7.         ) ; end if
  8.       (alert (strcat "\nThe drawing scale is 1:" (itoa (getvar "useri1"))))   
  9. ) ; end if

还有其他想法吗?
谢谢
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2022-7-28 17:41:31 | 显示全部楼层
PM<br>正如Lee所提到的,交换这些语句:<br><pre>
  1.        (if (not c:setsc)

代替
  1.        (if (not (atoms-family 0 '("c:setsc")))

回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 01:12 , Processed in 0.544439 second(s), 72 queries .

© 2020-2025 乐筑天下

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