乐筑天下

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

[编程交流] 传递(实数)报价

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:56:49 | 显示全部楼层 |阅读模式
你好
我试图将实数的值传递给变量:
  1.     (setvar "tilemode" 0)
  2.    (setq ssVP (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))))
  3.    (setq curScale (vla-get-CustomScale (vlax-ename->vla-object (ssname ssVP 0))))
  4.    (setvar "tilemode" 1)
  5.    (princ (strcat "\nCurScale "(rtos curScale 2)" "))
  6.    (initget (+ 4))
  7.    (setq newLTSCALE (getreal "\nInput LTSCALE value <" (rtos curScale ) ">: "))
  8.    (if (not newLTSCALE) (setq newLTSCALE 1 ))

它返回以下内容:
  1. CurScale 0.004
  2. Error: too many arguments

我不明白为什么它不接受这个值(在本例中是0.004)作为默认答案?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:05:11 | 显示全部楼层
你好
 
您需要使用strcat函数在getreal语句中使用curScale变量收集消息文本。
再次看看initget函数的用法
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:09:35 | 显示全部楼层
嗨,塔瓦,
是的,我忘了添加strcat!但我不知道如何将引用添加到initget。
我试过这个:
  1.     (setvar "tilemode" 0)
  2.    (setq ssVP (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))))
  3.    (setq curScale (vla-get-CustomScale (vlax-ename->vla-object (ssname ssVP 0))))
  4.    (setvar "tilemode" 1)
  5.    (princ (strcat "\nCurScale "(rtos curScale 2)" "))
  6.    [b](initget "(+ 4) CurScale" )[/b]
  7.    (setq newLTSCALE (getreal (strcat "\nInput LTSCALE value <" (rtos curScale ) ">: ")))
  8.    (if (not newLTSCALE) (setq newLTSCALE (rtos curScale ) ))

它返回:
  1. Error: AutoCAD variable setting rejected: LTSCALE "0.004"

你能给我一些提示吗?我从未在initget函数中使用引号(甚至更少使用“位控制值”(没有负数))”
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:16:47 | 显示全部楼层
您已将该值转换为“字符串(rtos)”。系统变量预期为“REAL”
 
您正在使用符号作为名称和值。尝试将变量/字符串/关键字等分离为唯一性。这就不那么令人困惑了
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:25:45 | 显示全部楼层
大卫,我不认为OP是在谈论任何系统变量。
 
@哦,在你的例子中,你想用initget做什么?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:32:39 | 显示全部楼层
 
这不是必需的,因为默认值不是关键字。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:38:26 | 显示全部楼层
嗨,大卫,
我尝试了不使用字符串(rtos),但仍然出现了错误。我对此不确定,但你的评论证实了这一点:
塔尔瓦特,
我试图读取视口比例的值(从布局选项卡),并将相同的值放入LTSCALE变量。
对于每个布局选项卡,我只有一个具有相同自定义比例的视口(在本例中,值为0.004)。
因此,要么提示更改LTSCALE并接受默认的“CurScale”,要么直接将“CurScale”值应用于LTSCALE变量。
我希望这是清楚的,谢谢你的回答!
编辑:
李,
我现在明白了,但正如David提到的,变量不接受任何“CurScale”和“(rtos CurScale)”作为其默认答案。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:44:23 | 显示全部楼层
 
是的,应将变量转换为字符串以在提示消息中使用,但在设置系统变量值时应保持数字。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:50:12 | 显示全部楼层
供考虑:
 
  1. [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ ssvp cs ns[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"tilemode"[/color] 0[b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]setq ssVP [b][color=NAVY]([/color][/b]ssget [color=#2f4f4f]"_X"[/color] [b][color=MAROON]([/color][/b]list '[b][color=GREEN]([/color][/b]0 . [color=#2f4f4f]"VIEWPORT"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cons 410 [b][color=BLUE]([/color][/b]getvar 'ctab[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  4. [b][color=FUCHSIA]([/color][/b]setq cs [b][color=NAVY]([/color][/b]vla-get-CustomScale [b][color=MAROON]([/color][/b]vlax-ename->vla-object [b][color=GREEN]([/color][/b]ssname ssVP 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"tilemode"[/color] 1[b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]initget 6[b][color=FUCHSIA])[/color][/b]
  7. [b][color=FUCHSIA]([/color][/b]setq ns [b][color=NAVY]([/color][/b]getreal [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nInput LTSCALE value <"[/color] [b][color=GREEN]([/color][/b]rtos cs[b][color=GREEN])[/color][/b] [color=#2f4f4f]">: "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8. [b][color=FUCHSIA]([/color][/b]or ns [b][color=NAVY]([/color][/b]setq ns cs[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"LTSCALE"[/color] ns[b][color=FUCHSIA])[/color][/b]
  10. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
Autolisp既优雅又简单
 
-大卫
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:56:04 | 显示全部楼层
谢谢你,大卫!
我可能需要更仔细地阅读initget函数,
我使用(initget(+4))来获得真正的非负值,但我不知道(initget 4)做同样的工作。(我不记得从哪里得到这个(initget(+4))示例)
 
你们很有技术,所以这对你们来说可能很简单
我很高兴你们能支持像我这样的初学者(像这样的简单错误对没有经验的人来说是非常恼人的)。
我会跟上我的学习意图,谢谢大家!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-19 02:53 , Processed in 1.222594 second(s), 72 queries .

© 2020-2025 乐筑天下

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