乐筑天下

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

[编程交流] 变量won#039;t保持值

[复制链接]
T2L

4

主题

27

帖子

27

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 17:07:33 | 显示全部楼层 |阅读模式
你能告诉我为什么当你输入return时变量D:number不包含这个值吗。
  1. (if D:number
  2.    (setq dia (getreal (strcat "\nEnter Nominal diameter <"(rtos D:number)">: ")))
  3.    (setq dia (getreal "\nEnter Nominal diameter: "))
  4. )
  5. (if (/= dia "")
  6.    (setq D:number dia)
  7. )

我收到一条消息说
  1. Error: Bad argument type: numberp: nil

 
因为数字,我猜是RTO。但是我该怎么纠正呢?
 
谢谢
回复

使用道具 举报

10

主题

92

帖子

82

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 17:17:55 | 显示全部楼层
按enter键时,DIA为零,不是空字符串“”。
 
尝试
 
(如果(零直径)
(setq D:数字直径)
)
 
 
此外,d:数字是全局变量还是局部变量?
回复

使用道具 举报

T2L

4

主题

27

帖子

27

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 17:37:29 | 显示全部楼层
它是一个局部变量。
 
我试试你的建议。稍后发布。
 
谢谢
回复

使用道具 举报

T2L

4

主题

27

帖子

27

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 17:47:11 | 显示全部楼层
这个建议行不通。
 
顺便说一句,我的错,d:数字应该是全局的,而dia是局部的。
回复

使用道具 举报

10

主题

92

帖子

82

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 17:52:34 | 显示全部楼层
问题出在你的if语句中,见下文。。。
 
  1. (defun c:test  (  /  dia )
  2.       
  3. (if D:number
  4.    (setq dia (getreal (strcat "\nEnter Nominal diameter <"(rtos D:number)">: ")))
  5.    (setq dia (getreal "\nEnter Nominal diameter: "))
  6. )
  7. (if dia
  8.     (setq D:number dia)
  9. )
  10. )

 
 
如果DIA有一个值(非nil),则需要更改d:number的值。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:59:41 | 显示全部楼层
我相信这包含了你想要的
 
  1. (defun c:tktag2set (/ tsize tcircr)
  2.    (if    (not (getenv "tag:tsize"))
  3.        (setenv "tag:tsize" (rtos (getvar "TEXTSIZE")))
  4.    ) ; end if
  5.    (if     (not (getenv "tag:tcircr"))
  6.        (setenv "tag:tcircr" "4.2")
  7.    ) ; end if
  8.    (princ
  9.        (strcat    "\nCurrent Settings:"
  10.            "\n\tText Height: "
  11.            (getenv "tag:tsize")
  12.            ",\tText Circle Radius @ 1:1: "
  13.            (getenv "tag:tcircr")
  14.        ) ; end strcat
  15.    ) ; end princ
  16.    (if    (setq tsize (getreal (strcat
  17.                    "\nSpecify Text Height <"
  18.                    (getenv "tag:tsize")
  19.                    ">: ")))
  20.        (setenv "tag:tsize" (rtos tsize))
  21.    ) ; end if
  22.    (if    (setq tcircr (getreal (strcat
  23.                    "\nSpecify Text Circle Radius @ 1:1 <"
  24.                    (getenv "tag:tcircr")
  25.                    ">: ")))
  26.        (setenv "tag:tcircr" (rtos tcircr))
  27.    ) ; end if
  28.    (princ "\nBase Variables Set.")
  29.    (princ)
  30. ) ; end program
  31.    
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 18:12:04 | 显示全部楼层
例如:
 
  1. (defun c:test (/ dia)
  2.    (or (getenv "D:number") (setenv "D:number" "5"))
  3.    (if (setq dia (getreal (strcat "\nEnter Nominal Diameter <" (getenv "D:number") ">: ")))
  4.        (setenv "D:number" (rtos dia))
  5.    ) ; end if
  6.    (alert (strcat (getenv "D:number") " is the value of the global Variable."))
  7.    (princ)
  8. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 19:55 , Processed in 0.423198 second(s), 66 queries .

© 2020-2025 乐筑天下

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