明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1635|回复: 6

请各位帮我看看这个程序错在哪里了?

[复制链接]
发表于 2011-9-14 21:06 | 显示全部楼层 |阅读模式
我想用以下程序来计算"工字钢Ⅰ10-4450“的重量。请问这个程序错在哪里了
        (defun C:gc (/ a1 a2 h str i ch num num2 cj w m pt1 pt2 pt3)
        (princ "请选择需要相乘的文字\n")
        (setq a1 (entsel))
        (setq a2 (entget (car a1)))
         (setq h (cdr (assoc 40 a2)))
         (setq str  (cdr (assoc 1 a2)))
        (setq i 1 num "" )
        (repeat (strlen str)
        (setq ch (substr str i 1))
        (if (or (= ch Ⅰ) (= ch "-"))
        (progn
         (setq num2 num)
       (setq num "")
       )
       (setq num (strcat num ch))
     )
      (setq i (1+ i))
    )
  (if (= num2 "10")  
  (setq cj (* ( / (atof num) 1000)  11.261))
  )
(setq w 1)
(setq m (rtos cj 2 w))
(setq pt1 (getpoint "\n请选择所放点(中点自动计算)\n"))
(command "text" "m" pt1 h "0" m)
(prin1)
)
还请各位高手指点!
本人感激不尽!
 楼主| 发表于 2011-9-14 21:06 | 显示全部楼层
在线等待中~~~~~~~~~~~
 楼主| 发表于 2011-9-14 21:09 | 显示全部楼层
耐心等待中
 楼主| 发表于 2011-9-14 21:14 | 显示全部楼层
想睡觉了~~~~~~~~~
发表于 2011-9-14 23:00 | 显示全部楼层
我改的,楼主对比一下
  1. (defun C:gc (/ a1 a2 h str i ch num num2 cj w m pt1 pt2 pt3)
  2.   (princ "请选择需要相乘的文字\n")
  3.   (setq a1 (entsel))
  4.   (setq a2 (entget (car a1)))
  5.   (setq h (cdr (assoc 40 a2)))
  6.   (setq str  (cdr (assoc 1 a2)))
  7.   (setq i 1 num "")
  8.   (repeat (strlen str)
  9.     (setq ch (substr str i 1))
  10.     (if (or (= ch Ⅰ) (= ch "-"))
  11.       (progn
  12.         (setq num2 num)
  13.         (setq num "")
  14.       )
  15.       (setq num (strcat num ch))
  16.     )
  17.     (setq i (1+ i))
  18.   )
  19.   (if (wcmatch num2 "*10")  
  20.     (setq cj (* (/ (atof num) 1000)  11.261))
  21.   )
  22.   (setq w 1)
  23.   (setq m (rtos cj 2 w))
  24.   (setq pt1 (getpoint "\n请选择所放点(中点自动计算)\n"))
  25.   (command "text" "J" "m" pt1 "0" m)
  26.   (prin1)
  27. )

评分

参与人数 1明经币 +1 金钱 +12 收起 理由
caoyin + 1 + 12 热心人!

查看全部评分

 楼主| 发表于 2011-9-15 08:22 | 显示全部楼层
(if (wcmatch num2 "*10")  这里为什么要用"wcmatch",直接用"="不行嘛,还有为什么是"*10"而不是"10"呢。谢谢

点评

建议好好研究下wcmatch的用法,什么时候用wcmatch,什么时候用=  发表于 2011-9-16 06:13
我试过你的程序,num2永远不可能="10",所有按你的程序(setq cj (* ( / (atof num) 1000) 11.261))不可能执行到。cj永不赋值,所以是nil,在后面的(setq m (rtos cj 2 w))就会出错。  发表于 2011-9-16 06:11
 楼主| 发表于 2011-9-16 21:07 | 显示全部楼层
谢谢,还得多加努力
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-14 18:01 , Processed in 0.150573 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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