明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 893|回复: 3

求教一个小程序

[复制链接]
发表于 2008-6-27 17:24 | 显示全部楼层 |阅读模式

求教高手一段程序:

求图纸上钢板 -250*250*3 的重量。要实现点选字符串 -250*250*3后求出重量,匹配字符串特性给结果,点选结果的插入位置,结束。

发表于 2008-6-27 21:57 | 显示全部楼层

这个程序是我很早以前做的,你做个参考吧

我一般都是复制一个,然后选择这个被复制的文字,就可以出结果了

(defun c:dx()

(setq a (ssget ))
(setq len (sslength a))   ;取得对象的个数
(setq n 0)
(repeat len
(setq en (ssname a n))
(setq b (entget en))      ;得到实体的联合列表
(setq c (assoc 1 b))     ;取出字的内容(群码为1)
(setq d (cdr c))         ;取出文字

(setq djq (cdr (assoc 0 b)))

(if (= djq "TEXT")

(hehe)
)        ;end if

(setq n (1+ n))

)       ;end repeat

;;;子程序
(defun hehe()
(setq f (vl-string-search '* d)) ;找出*的位置(程序只给出从左数的第一个,其余不计)
(setq g (substr d 2 (- f 1) )) ;找出第一个数字(字符串)
(setq g4 (atoi g))             ;变成整数

(setq g1 (substr d (+ f 2)))  ;找出第一个*后面的字符串

(setq f1 (vl-string-search '* g1)) ;找出*的位置 (去掉第一个*前面的以后)

(setq g2 (substr g1 1 f1))   ;找出第二个数字
(setq g5 (atoi g2))             ;变成整数

(setq g3 (substr g1 (+ f1 2) 20))      ;找出第三个数字
(setq g6 (atoi g3))                     ;变成整数

(setq chengji (/ (* g4 g5 g6 7.85) 1000000))  ;计算它们的积
(setq jieguo (rtos chengji 2 1))                ;保留一位小数


(setq m (cons 1 jieguo))
(setq b (subst m c b ))
(entmod b)
)

 楼主| 发表于 2008-6-28 12:32 | 显示全部楼层

phoenixdjq高手,不行啊

选取以后提示:hehe

没了。

不懂怎么弄的

发表于 2008-6-28 15:35 | 显示全部楼层
本帖最后由 作者 于 2008-6-29 19:23:51 编辑

VLA函数找某个字符的位置就是方便,不过如果不用VLA函数怎么找呢,

如果直接复制的话 主程序是少个括号的......

另外

(setq g (substr d 2 (- f 1)))  ;找出第一个数字(字符串),

  ;注意这里的2,是从第2位置开始取字符串的
  ;如果你的文字正好从第2位开始是数字则OK,

  ;否则需要做些处理。比如如果选择的是“钢板 -250*250*250”就不行了
  ;需要对你的选择文字做简单的处理或者更改这里的2,为了通用性我认为处理文字比较好些,
  ;参考phoenixdjq的代码可以加一段查找“-”位置,然后从-号后取出字符串就满足要求了
  ;(setq f (vl-string-search "-" d))
  ;(setq d (substr d (+ f 1)))

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

本版积分规则

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

GMT+8, 2024-4-27 23:29 , Processed in 0.322581 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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