xj6019 发表于 2020-7-28 22:20:40

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


目地:将剪切板内数值作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-SETSTRINGsy)
(princ "\n計算結果的1/2 存入剪切板")
(princ))

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


xj6019 发表于 2020-7-30 15:43:50

本帖最后由 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)
)
)

xj6019 发表于 2020-7-30 11:54:49

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))

xj6019 发表于 2020-7-30 11:15:51

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))

sharetow 发表于 2020-7-29 08:03:59

剪切板内容为字符串

烟盒迷唇 发表于 2020-7-29 08:32:56

转换为字符串吧。

pengfei2010 发表于 2020-7-29 13:11:01

用 rtos 函数 转换一下就行了

xvjiex 发表于 2020-7-30 11:33:41

先要将剪切板内容转换为数值。

xj6019 发表于 2020-7-30 11:45:52

xvjiex 发表于 2020-7-30 11:33
先要将剪切板内容转换为数值。

怎么转呀,帮弄一下好吗,谢谢

xvjiex 发表于 2020-7-30 12:14:16

(setq st (vl-prin1-to-string '((GET-CLIP-STRING)))st (atof st))

xj6019 发表于 2020-7-30 15:01:35

xvjiex 发表于 2020-7-30 12:14
(setq st (vl-prin1-to-string '((GET-CLIP-STRING)))st (atof st))

你好,代码的计算结果为0呢,请教一下,咋回事呀
页: [1] 2
查看完整版本: 请大家帮看看这个计算公式的代码怎么不能加载呀