乐筑天下

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

[编程交流] 从字符串中提取Numbres

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:43:14 | 显示全部楼层 |阅读模式
我在autocad中编程lisp,我想插入一个坐标为{(X+10)、(X+100)}的点
在我的图纸中,我有一个文本,格式为:X:50.00m
 
什么函数允许我通过在AutoCAD中选择文字来获取(提取)值50.00。
 
我想在某些函数中使用这个值。
 
谢谢你的帮助。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-5 20:02:00 | 显示全部楼层

 
  1. (defun str->num (strin / num)
  2.    (distof
  3.        (vl-list->string
  4.            (vl-remove-if-not
  5.                '(lambda (x) (or (= x 46) (<= 48 x 57)))
  6.                (vl-string->list strin)
  7.            )
  8.        )
  9.    )
  10. )

 
(str->num“X:50.00m”)
50
_1$
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:07:55 | 显示全部楼层
我的一个老问题:解析数字
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:19:43 | 显示全部楼层
我尝试了提出的两种解决方案,但都没有成功
我向您发送我的lsp文件:
步骤:
1-获得一台真正的电脑(我想直接在文件中选择文本的电脑)
2-选择水平轴和垂直轴,并绘制交点
3-选择我的观点,并与文本。
**********
(定义c:POI(/P1 x1 y1 D1 Z1 PC ss PO pt P2 x2 y2 D2 Z2)
(setq PC(getreal“\nPC\n”))我想通过在dwg文件中选择文本来获得此值??
(setq角度(getvar“AUNITS”))
(setvar“AUNITS”2)
(if(and(setq ss(ssget’((0。“LINE,LWPOLYLINE”))))
(=2(ss长度ss))
(setq int(vLa与相交)
(vLax ename->vLa对象(ssname ss 0))
(vLax ename->vLa对象(ssname ss 1))
acextendnone公司
)
)
(setq PO(vLax safearray->List(vLax variant vaLue int)))
)
(重复(/(长度PO)3)
(setq pt(列表(car PO)(cadr PO)(caddr PO)))
(命令“_.POINT”pt)
)
)
(虽然
; 选择A
(setq P1(获取点“\点A:”))
(setq x1(rtos(-car P1)(car PO))2)
(setq y1(rtos(+((cadr P1)(cadr PO))PC)2 3)
(setq D1(strcat x1))
(setq Z1(strcat y1))
(命令“_MTEXT”P1“H”0.34“L”20 D1”)
(命令“_MTEXT”P1“R”100“H”0.34“L”20 Z1”)
; 选择B
(setq P2(getpoint“\ Point B:”))
(setq x2(rtos(-car P2)(car PO))2)
(setq y2(rtos(+((cadr P2)(cadr PO))PC)2 3)
(setq D2(strcat x2))
(setq Z2(strcat y2))
(命令“_MTEXT”P2“H”0.34“L”20 D2”)
(命令“_MTEXT”P2“R”100“H”0.34“L”20 Z2”)
 
 
 
)
 
)
***************
谢谢你帮助我。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:31:18 | 显示全部楼层
我用李的解析数没问题很好用
 
  1. (setq test "test string 123")
  2. (car (LM:parsenumbers test)) ; answer is returned as a list with one value
  3. ;returns 123
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:34:13 | 显示全部楼层
我该怎么办?救命啊!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:52:50 | 显示全部楼层
你必须把李的解析复制到你的代码中
 
  1. ; did TEXT asdf 123 hjk
  2. (setq obj (vlax-ename->vla-object (car (entsel)))) ; picked the text
  3. (setq txtstr (vla-get-textstring obj))
  4. (car (LM:parsenumbers txtstr)) ; answer is returned as a list with one value
  5. ;returns 123
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 01:09 , Processed in 1.764451 second(s), 77 queries .

© 2020-2025 乐筑天下

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