明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2492|回复: 19

求助:如何提取12-8-12中的数字,有否源程序

  [复制链接]
发表于 2005-6-22 14:02 | 显示全部楼层 |阅读模式
求助:如何提取12-8-12中的数字,有否源程序
发表于 2005-6-22 14:56 | 显示全部楼层
用doslib可以轻松搞定:


(SETQ TSTSTR "12-8-12")


用(SETQ TSTSTRLST(dos_strtokens        TSTSTR "-") 得到一个表


假设elem是这个表中的某个值


用(dos_strischar        elem 3) 判别它是否数字
发表于 2005-6-22 17:16 | 显示全部楼层
;用LISP也能轻松解决,例如:
;(setq zfc "12-a-8-b-12")
;(tqsz zfc)返回(12 8 12)
(defun tqsz(test / ts1)
(setq ts1 (read (strcat "(" (vl-string-translate "-" " " test) ")"))
ts1 (vl-remove-if '(lambda (x) (= (numberp x) nil)) ts1)
)
)
 楼主| 发表于 2005-6-23 00:20 | 显示全部楼层
我想在图中点取12-8-10 然后取出最大值,不知楼上的两位能否说的再具体点
发表于 2005-6-24 11:36 | 显示全部楼层
(defun tqsz( / ts1)
(setq ts1 (cdr (assoc 1 (entget (car (entsel "\n请选取文字图元:")))))
ts1 (read (strcat "(" (vl-string-translate "-" " " ts1) ")"))
ts1 (apply 'max (vl-remove-if '(lambda (x) (= (numberp x) nil)) ts1))
)

) 加载后,在命令行中键入 (tqsz),选取图中“12-8-10”后即可返回最大数“12”。
 楼主| 发表于 2005-6-24 13:35 | 显示全部楼层
楼主:想再问一下像G2-2如何提取,可以用“”去替代G和-吗
发表于 2005-6-24 21:06 | 显示全部楼层
将程序改为: (defun tqsz( / ts1)
(setq ts1 (cdr (assoc 1 (entget (car (entsel "\n请选取文字图元:")))))
ts1 (read (strcat "(" (vl-string-translate "-" " " ts1) ")")) ts1 (read (strcat "(" (vl-string-translate "G" " " ts1) ")"))
ts1 (apply 'max (vl-remove-if '(lambda (x) (= (numberp x) nil)) ts1))
)

)
 楼主| 发表于 2005-6-24 21:42 | 显示全部楼层
7楼楼主真是厉害,太谢谢你了!还有个问题想问楼主,我做了个程序,标注的时候想点取参照线或文字获取角度,有时候线的起点和终点不一样时,字会不符合绘图规范,想问一下楼主如何解决这个问题
发表于 2005-6-24 22:02 | 显示全部楼层
在程序中增加一个判断,当标注文本的方向符合要求时结束程序;当标注文本的方向不符合要求时,将该文本的倾角a改为a+pi即可解决。
 楼主| 发表于 2005-6-24 22:04 | 显示全部楼层
(prompt "\n请输入参照点<现阶段只能是线>")
(setq f7 (entsel))
(if (= f7 nil) (setq a1 0))
(setq g7 (entget (car f7)))
(setq g71 (cdr (assoc 10 g7)))
(setq g72 (cdr (assoc 11 g7)))
(setq a1 (angle g71 g72))
(setq a1 (* a1 (/ 180 pi)))
(setq a2 (* 90 (/ 180 pi)))
(setq a3 (* 180 (/ 180 pi)))
(cond ((< a1 a2) (setq a4 a1))
((> a1 a2) (setq a4 (- a2 a1)))
((= a1 a2) (setq a4 a1))
)
(setq a1 a4)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 00:43 , Processed in 0.479100 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表