从字符串中提取Numbres
我在autocad中编程lisp,我想插入一个坐标为{(X+10)、(X+100)}的点在我的图纸中,我有一个文本,格式为:X:50.00m
什么函数允许我通过在AutoCAD中选择文字来获取(提取)值50.00。
我想在某些函数中使用这个值。
谢谢你的帮助。 一
(defun str->num (strin / num)
(distof
(vl-list->string
(vl-remove-if-not
'(lambda (x) (or (= x 46) (<= 48 x 57)))
(vl-string->list strin)
)
)
)
)
(str->num“X:50.00m”)
50
_1$ 我的一个老问题:解析数字 我尝试了提出的两种解决方案,但都没有成功
我向您发送我的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”)
)
)
***************
谢谢你帮助我。 我用李的解析数没问题很好用
(setq test "test string 123")
(car (LM:parsenumbers test)) ; answer is returned as a list with one value
;returns 123
我该怎么办?救命啊! 你必须把李的解析复制到你的代码中
; did TEXT asdf 123 hjk
(setq obj (vlax-ename->vla-object (car (entsel)))) ; picked the text
(setq txtstr (vla-get-textstring obj))
(car (LM:parsenumbers txtstr)) ; answer is returned as a list with one value
;returns 123
页:
[1]