找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2301|回复: 24

[求助] [求助]:求从图中点取算式进行计算的程序!

[复制链接]
发表于 2009-1-14 22:18:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我用的cad2004,需要功能:点取图中的简单四则算式(不是在命令行输入)进行计算,并将结果标注在图中。采用命令"cal"可以处理吗?
恳请哪位大侠给段这样功能的程序,非常感谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2009-1-15 08:24:18 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-15 19:59:28 | 显示全部楼层
斑竹不要误解,你链接的szys(数字运算).的功能是:选择一个运算符计算两个数字。
  而且是vlx程序,也参考不了。
  我所需要的是一段代码:点取图中的简单四则算式(如:3+5*5)进行计算,并将结果标注在图中。
  我已搜索了晓东及其它论坛并参考其它程序,都没找到。
请哪位大侠帮忙!!!
  自己搞了一段,不成功:cal后变量的值必须是点、实数或整数,不能是图中点取的算式。
;;;====================================
;;;功能:text文本表示的数字计算
(defun C:calj ()
       (if (or (= cst nil)(= cst 0))
       (setq cst 300))   
    ;;获取计算公式
    (SETQ *str (SSGET))   
    ;;计算  
    (setq *NUM (cal *str))
    (setq *rkk (rtos *NUM 2 2))
    (SETQ PO (getpoint "\n请输入标注点位置: "))   
    (COMMAND "TEXT" PO cst 0 *rkk)   
    (PRINC)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2009-1-15 20:21:10 | 显示全部楼层
_$ (c:cal "3+3*5")
; 错误: no function definition: C:CAL
_$
_$ (c:cal "3+3*5")
18

先运行 cal 命令后就可以使用 c:cal 扩展函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-15 20:37:33 | 显示全部楼层
我加了以下代码也没用,查资料说CAL 函数可以为算式及变量,但变量的值必须是点、实数或整数,不能是图中点取的算式。

我是个菜鸟,请斑竹给段程序吧,谢谢!!!
;;;加载对 C:CAL 函数的支持
(if (or (= (type c:cal) 'list)  ;R14使用
(= (type c:cal) 'SUBR)  ;R2000+使用
(= (type c:cal) NIL)  ;R2004使用
    )
    (arxload "geomcal.arx")
)

(vl-load-com)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-15 22:47:00 | 显示全部楼层
(setq a 3.66)
(if (not c:cal)(arxload "geomcal.arx"))
(c:cal (strcat (vl-princ-to-string a) "*4"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-16 20:11:28 | 显示全部楼层
关键是cal的函数为计算式及变量(如:(cal "3+5*2+a"),但变量的值必须是点、实数或整数,
不能为算式(如:不能从图中点取算式如1+1赋予变量a或赋予变量str:(cal str)),
至于cal 命令采用先运行一遍或加载后,都可解决。
我查了不少资料,似乎需采用“先分解成数字和运算符,再运算”的办法,在网上没能找到办法。
看似简单的功能,却很烦恼.。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2009-1-16 20:18:17 | 显示全部楼层
最初由 nt8011 发布
[B]我查了一些资料,似乎需采用“先分解成各数字和运算符,再运算”的办法,在网上没能找到办法。
看似简单的功能,却不容易啊.。。。... [/B]

http://zml84.blog.sohu.com/84037890.html

http://zml84.blog.sohu.com/86710762.html
[php]
;;;=====================================================================
;;  (princ (JS "1+4+5*2+(5+5)/2+[(6+6)/2+(5+5)/2]"))
;;测试:
(defun C:TT (/ STR)
    (while (/= (setq STR (getstring "\n请输入算术表达式: "))
               ""
           )
        (princ (JS STR))
    )
    (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2009-1-16 20:21:14 | 显示全部楼层
示例:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2009-1-16 21:13:55 | 显示全部楼层
你可以好好看看help中cal命令
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-16 22:24:23 | 显示全部楼层
zml84斑竹:
你的“数学表达式计算.lsp”程序,还是得从命令行输入算术表达式,不能从图形中点取。
不知我测试得对不对?
斑竹的程序中(JS "1+4+5*2+(5+5)/2+[(6+6)/2+(5+5)/2]"),用cal命令(cal "1+4+5*2+(5+5)/2+[(6+6)/2+(5+5)/2]")也可以的。
另:我原来说的cal函数“不能是变量”表达有误,应指“变量不能是从图中点取的算式如3+5*2”,变量只能是点、实数、整数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-16 23:15:05 | 显示全部楼层
已经够清楚了,你如果不想从命令行输表达式,你自己再定义一个函数放入你想要的表达式,然后调用他的程序计算就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-16 23:19:27 | 显示全部楼层
这样定义可以吗?提示“变量的值必须是点、实数或整数”
;;获取计算公式
(SETQ *str (SSGET))
;;计算
(setq *NUM (cal *str))
其中变量*str 不能提取图中点取的算式。
cad帮助中规定cal“可在算术表达式中使用 AutoLISP 变量。变量必须是下列类型之一:实数、整数、二维或三维点(矢量)”。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-17 01:40:18 | 显示全部楼层
还是不明白你要干什么,不如把你操作的步骤说一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2009-1-17 08:04:49 | 显示全部楼层
  1. (defun c:tt (/ ss ssl i e str el nstr)
  2.   (if (not (member "GEOMCAL.ARX" (MAPCAR 'strcase (arx))))
  3.     (arxload "geomcal.arx")
  4.   )
  5.   (if (setq ss (ssget '((0 . "text"))))
  6.     (progn
  7.       (setq ssl        (sslength ss)
  8.             i        -1
  9.       )
  10.       (repeat ssl
  11.         (setq el   (entget (ssname ss (setq i (1+ i))))
  12.               str  (cdr (assoc 1 el))
  13.               nstr (rtos (c:cal str) 2 2)
  14.         )
  15.         (entmod
  16.           (subst (cons 1 (strcat str " = " nstr)) (assoc 1 el) el)
  17.         )
  18.       )
  19.     )
  20.   )
  21.   (princ)
  22. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 02:33 , Processed in 0.228023 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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