乐筑天下

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

[编程交流] 坐标到字符串转换

[复制链接]

5

主题

56

帖子

51

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:29:54 | 显示全部楼层 |阅读模式
你好
 
我再次被困在试图重新创建别人在我工作的地方制作的lisp&dcl?
用于学习目的!我没有源代码,所以这是一个从头开始的完美示例。
 
我想将坐标返回到文本的形式中,键:“txt(xyz)”。
 
  1. ;; dialog is hidden when I click a button to get point
  2. (setq [color=seagreen]CRDNTS [/color](getpoint "\nInsertion point: ")) [color=seagreen];=example (102.08 25.85 0.0)[/color].
  3. ;; Dialog is reloaded and then...
  4. (set_tile "txt(xyz)" [color=seagreen]CRDNTS [/color]) [color=red]not working because its not a string[/color]?

 
我尝试了一些转换,但无法使其工作?我需要提取x、y和z,然后将其列在一起吗?或者有没有一个简单的解决方案来实现这一点。
 
谢谢。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:36:06 | 显示全部楼层
GETPOINT返回的点实际上是由2或3项组成的列表。您应该分解它并构建字符串。
  1. (strcat (rtos (car CRDNTS) 2 3) ", " (rtos (cadr CRDNTS) 2 3))

然而,将点显示在上面这样的编辑框中有点不寻常——最常见的是每个坐标都有字段。第一种方法可能会给用户带来输入困难。
回复

使用道具 举报

5

主题

56

帖子

51

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:45:06 | 显示全部楼层
关于编辑框和显示其中的点,您是对的,
 
但是我试着把它放到一个文本字段中,它只是告诉用户插入点被选中了,而不是(0.0.0.0)。
082958sugmbgmosl1xdou7.jpg
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:47:47 | 显示全部楼层
然后将该标签设置为:
  1. (set_tile [color=magenta]"labelCoordsInfo"[/color]
  2.          (strcat "Coordinaten = ("
  3.                  (rtos (car   CRDNTS) 2 3) ", "
  4.                  (rtos (cadr  CRDNTS) 2 3) ", "
  5.                  (rtos (caddr CRDNTS) 2 3) ")"))

当然,需要相应地替换平铺键。
回复

使用道具 举报

5

主题

56

帖子

51

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:54:50 | 显示全部楼层
 
这正是我想要的,甚至更好!Thx再次MSasu
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:00:51 | 显示全部楼层
不客气!
回复

使用道具 举报

5

主题

56

帖子

51

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:06:35 | 显示全部楼层
在加载新例程时,解决了与此相关的另一个问题。CRDNTS的值=nil,对话框关闭,错误消息为bad bla bla nil。
所以我把它放在一个if中:
 
  1.   (if (= CRDNTS nil)
  2.    
  3.      (set_tile "labelCoordsInfo" "Coordinaten = ( 0,0 0,0 0,0 )")
  4.    
  5.      (set_tile "labelCoordsInfo" (strcat "Coordinaten = ( "
  6.                  (rtos (car   CRDNTS) 2 1) " , "
  7.                  (rtos (cadr  CRDNTS) 2 1) " , "
  8.                  (rtos (caddr CRDNTS) 2 1) " ) "))
  9.    )

 
以防有人需要这个或类似的东西。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:08:55 | 显示全部楼层
您也可以检查NOT功能。
  1. (if (not CRDNTS)
  2. ...

或者检查点是否存在,并反转消息:
  1. (if CRDNTS
  2. ...

无论是哪种方式,请确保所述变量已本地化为“未从previoud run分配”。
 
可能还需要重新格式化默认消息以确保一致性:
  1. (set_tile "labelCoordsInfo" "Coordinaten = ( 0.0 , 0.0 , 0.0 )")
回复

使用道具 举报

5

主题

56

帖子

51

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:18:30 | 显示全部楼层

 
感谢您花时间思考不同的可能性并更正拼写错误。
 
我将更好地研究NOT函数。
 
但不要得到存在。是否可能是这样(如果CRDNTS实际上意味着CRDNTS不是零。等于它的存在。只是与非CRDNTS相反,这就是为什么需要反转消息?
它太他妈的短了,我需要知道它是如何工作的,或者说它是怎么想的,以便能够正确地理解它。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:22:59 | 显示全部楼层
如果将测试该点是否可用,则代码变为:
  1. (if CRDNTS
  2. (set_tile "labelCoordsInfo" (strcat "Coordinaten = ( "
  3.                                     (rtos (car   CRDNTS) 2 1) " , "
  4.                                     (rtos (cadr  CRDNTS) 2 1) " , "
  5.                                     (rtos (caddr CRDNTS) 2 1) " ) "))
  6. (set_tile "labelCoordsInfo" "Coordinaten = ( 0.0 , 0.0 , 0.0 )")
  7. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:05 , Processed in 0.878232 second(s), 74 queries .

© 2020-2025 乐筑天下

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