明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 906|回复: 19

请大家帮看看这个计算公式的代码怎么不能加载呀

[复制链接]
发表于 2020-7-28 22:20 | 显示全部楼层 |阅读模式

目地:将剪切板内数值作0.5倍(一半)运算,并接着将运算结果写入剪切板。
感觉很简单的事,但是怎么都不成功。
第一种方法:
(defun C:x1()
(set-clip-string (* 0.5 (GET-CLIP-STRING)))      
(princ "\n計算結果的1/2 存入剪切板")
  (princ))
第二种方法:
(defun C:x2()
(setq st (GET-CLIP-STRING))
(setq sy(* 0.5 st))
(ZML-CLIP-SETSTRING  sy)
(princ "\n計算結果的1/2 存入剪切板")
  (princ))

其中:set-clip-string 为写入剪切板函数
GET-CLIP-STRING为存储中的剪切板函数
除了以上两种方式外,我还试了很多种方法,都不行,看来好像这个路子走不通吗?
只能找大神指点一二了,我已经黔驴技穷啦。
先谢过了。


 楼主| 发表于 2020-7-30 15:43 | 显示全部楼层
本帖最后由 xj6019 于 2020-7-30 15:46 编辑
xvjiex 发表于 2020-7-30 15:37
请将3个函数GET-CLIP-STRING,ZML-CLIP-SETSTRING,set-clip-string及套用的其他函数发来


前段时间从网上搜的代码,大家参考下。

;;;  读写系统剪贴板                                                 *
;;;                                                                 *
;;;=================================================================*
;;;功能:读取系统剪贴板中字符串
(defun GET-CLIP-STRING (/ HTML RESULT)
    (and (setq HTML (vlax-create-object "htmlfile"))
(setq RESULT (vlax-invoke
  (vlax-get (vlax-get HTML 'PARENTWINDOW)
    'CLIPBOARDDATA
  )
  'GETDATA
  "Text"
      )
)
(vlax-release-object HTML)
    )
    RESULT
)
;;;=================================================================*
;;;功能:向系统剪贴板写入文字                                       *
(defun SET-CLIP-STRING (STR / HTML RESULT)
    (and (= (type STR) 'STR)
(setq HTML (vlax-create-object "htmlfile"))
(setq RESULT (vlax-invoke
  (vlax-get (vlax-get HTML 'PARENTWINDOW)
    'CLIPBOARDDATA
  )
  'SETDATA
  "Text"
  STR
      )
)
(vlax-release-object HTML)
    )
)
这是另外一个,写入剪切板的函数
(vl-load-com)
(defun ZML-CLIP-SETSTRING (STR / HTML RESULT)
  (and (= (type STR) 'STR)
       (setq HTML (vlax-create-object "htmlfile"))
       (setq RESULT (vlax-invoke
                      (vlax-get        (vlax-get HTML 'PARENTWINDOW)
                                'CLIPBOARDDATA
                      )
                      'SETDATA
                      "Text"
                      STR
                    )
       )
       (vlax-release-object HTML)
  )
)

 楼主| 发表于 2020-7-30 11:54 | 显示全部楼层
xvjiex 发表于 2020-7-30 11:33
先要将剪切板内容转换为数值。

帮看一下哪里用的不对呀

(defun C:x2()
(setq st (vl-prin1-to-string '((GET-CLIP-STRING))))
(setq sy(rtos(* 0.5 st) 2 2))
(ZML-CLIP-SETSTRING sy)
(princ "\n計算結果的1/2 存入剪切板")
  (princ))
 楼主| 发表于 2020-7-30 11:15 | 显示全部楼层
pengfei2010 发表于 2020-7-29 13:11
用 rtos 函数 转换一下就行了

我弄的哪里不对吧,下面的代码还是不行呢

(defun C:x2()
(setq st(GET-CLIP-STRING))
(setq sy(rtos(* 0.5 st) 2 2))
(ZML-CLIP-SETSTRING sy)
(princ "\n計算結果的1/2 存入剪切板")
  (princ))
发表于 2020-7-29 08:03 | 显示全部楼层
剪切板内容为字符串
发表于 2020-7-29 08:32 | 显示全部楼层
转换为字符串吧。
发表于 2020-7-29 13:11 | 显示全部楼层
用 rtos 函数 转换一下就行了
发表于 2020-7-30 11:33 | 显示全部楼层
先要将剪切板内容转换为数值。

评分

参与人数 1明经币 +1 收起 理由
yangchao2005090 + 1

查看全部评分

 楼主| 发表于 2020-7-30 11:45 | 显示全部楼层
xvjiex 发表于 2020-7-30 11:33
先要将剪切板内容转换为数值。

怎么转呀,帮弄一下好吗,谢谢
发表于 2020-7-30 12:14 | 显示全部楼层
(setq st (vl-prin1-to-string '((GET-CLIP-STRING)))st (atof st))
 楼主| 发表于 2020-7-30 15:01 | 显示全部楼层
xvjiex 发表于 2020-7-30 12:14
(setq st (vl-prin1-to-string '((GET-CLIP-STRING)))st (atof st))

你好,代码的计算结果为0呢,请教一下,咋回事呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-16 23:21 , Processed in 0.432343 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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