找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 730|回复: 8

[每日一码] [风之影]VLISP之有道词典

[复制链接]
发表于 2016-12-27 10:24:25 来自手机 | 显示全部楼层 |阅读模式

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

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

×
利用正则表达式和XMLHTTP,从有道词典网站取得翻译后的内容。

使用如下:
  1. (translate "风之影");;;返回"The shadow of wind"
  2. (translate "The shadow of wind");;;返回"风的影子"


也可在命令行键入TRS后,选取单行文本、多行文本、块中文字、块属性、属性定义。点击后直接翻译。

下面是函数源码:
  1. (defun GetXML (url / XML http)
  2. (setq http (vlax-create-object "Microsoft.XMLHTTP"))
  3. (vlax-invoke-method http "open" "GET" url 0)
  4. (vlax-invoke-method http "send")
  5. (setq XML (vlax-get-property http "responseText"))
  6. (vlax-release-object http)
  7. XML
  8. )

  9. (defun Translate (word / RegEx str)
  10. (setq RegEx (vlax-create-object "VBScript.RegExp"))
  11. (vlax-put-property RegEx "Global" 1)
  12. (setq str (GetXML (strcat "http://fanyi.youdao.com/translate?&i=" word "&doctype=xml&version")))
  13. (vlax-put-property RegEx "Pattern" "^(.|\n)*<translation>(.|\n)*?<![\[]CDATA[\[]")
  14. (setq str (vlax-invoke-method regex "Replace" str ""))
  15. (vlax-put-property RegEx "Pattern" "[\]]{2}>(.|\n)*<\/translation>(.|\n)*$")
  16. (setq str (vlax-invoke-method regex "Replace" str ""))
  17. (vlax-release-object RegEx)
  18. str
  19. )

  20. (defun c:TRS(/ msg e dt d id new ss name)
  21. (defun apperr (msg)
  22.     (command "undo" "e")
  23.   (setq *error* syserr)
  24.   (princ)
  25. )
  26. (setq syserr *error* *error* apperr)
  27. (gc)
  28. (setvar "cmdecho" 0)
  29. (command "undo" "be")
  30. (setq e (nentsel "\nSelect text"))
  31. (setq dt (entget (car e)))
  32. (cond
  33.   (
  34. (and (> (length e) 2)(= (cdr (assoc 0 (entget (car (last e))))) "INSERT"))
  35. (setq new (Translate (cdr (assoc 1 dt))))
  36.   )
  37.   (
  38. (and (= (length e) 2)(= (cdr (assoc 0 (entget (car e)))) "TEXT"))
  39. (setq new (Translate (cdr (assoc 1 dt))))
  40.   )
  41.   (
  42. (and (= (length e) 2)(= (cdr (assoc 0 (entget (car e)))) "MTEXT"))
  43. (setq new (Translate (cdr (assoc 1 dt))))
  44.   )
  45.   (
  46. (and (= (length e) 2)(= (cdr (assoc 0 (entget (car e)))) "ATTRIB"))
  47. (setq new (Translate (cdr (assoc 1 dt))))
  48.   )
  49.   (
  50. (and (= (length e) 2)(= (cdr (assoc 0 (entget (car e)))) "ATTDEF"))
  51. (setq new (Translate (cdr (assoc 2 dt))))
  52.   )
  53. )

  54. (if (= (cdr (assoc 0 (entget (car e)))) "ATTDEF")
  55.   (setq dt (subst (cons 2 new) (assoc 2 dt) dt))
  56.   (setq dt (subst (cons 1 new) (assoc 1 dt) dt))
  57. )
  58. (entmod dt)
  59. (if (and (> (length e) 2)(= (cdr (assoc 0 (entget (car (last e))))) "INSERT"))
  60.   (progn
  61.   (setq name (cdr (assoc 2 (entget (car (last e))))))
  62.   (setq ss (ssget "x" '((0 . "insert"))) n 0)
  63.   (repeat (sslength ss)
  64.   (setq e (ssname ss n) n (1+ n))
  65.   (if (= (cdr (assoc 2 (entget e))) name)(entupd e))
  66.   )
  67.   )
  68.   (entupd (car e))
  69. )
  70. (apperr)
  71. (princ)
  72. )

评分

参与人数 2D豆 +21 贡献 +1 收起 理由
marting + 1 很给力!经验;技术要点;资料分享奖!
XDSoft + 20 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2016-12-27 10:26:53 来自手机 | 显示全部楼层
如果装有EXCEL2013,可以调用EXCEL的网络函数WebService和FilterXML从有道网站抓取翻译的结果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 10:39:11 来自手机 | 显示全部楼层
(defun youdao (word / func trs)
  (setq        func (vlax-get-property
               (vlax-get-or-create-object "Excel.Application")
               "WorkSheetFunction"
             ) ;_ end of vlax-get-property
  ) ;_ end of setq
  (setq        trs (vlax-variant-value
              (vlax-invoke-method
                func
                "filterxml"
                (vlax-invoke-method
                  func
                  "webservice"
                  (strcat "http://fanyi.youdao.com/translate?&i="
                          word
                          "&doctype=xml&version"
                  ) ;_ end of strcat
                ) ;_ end of vlax-invoke-method
                "//translate"
              ) ;_ end of vlax-invoke-method
            ) ;_ end of vlax-variant-value
  ) ;_ end of setq
  (vlax-release-object func)
  trs
) ;_ end of defun

评分

参与人数 1D豆 +2 收起 理由
Lisphk + 2 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-12-27 10:48:14 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2016-12-27 10:52:40 来自手机 | 显示全部楼层
一楼的程序不用Excel,可以在任何情况下用,建议用这个。板凳楼层的程序只能在EXCEL2013及其以上的版本使用,而且还极不稳定,点快了容易出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-12-27 11:01:15 | 显示全部楼层

楼主,我机器是2016版本的EXCEL,运行出错

命令: (youdao "建筑")
错误: Automation 错误。 类 WorksheetFunction 的 FilterXML 方法无效

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

使用道具 举报

已领礼包: 217个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 06:17 , Processed in 0.377204 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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