大家好,
我继续努力使Autocad成为一个通用界面,我写了一本小词典。com阅读器,我想我会和社区分享。
- ;Dict
- ; Return the definitions for a given word.
- (vl-load-com)
- (defun c:dict( / query url xmlDoc pos posId posItem defs defId def )
- (princ "\n====== Online Dictionary reader ======")
- (setq query (getstring "\nEnter your query:"))
- (setq url (strcat"http://api-pub.dictionary.com/v001?vid=hqcw8ni3fld8ui0nxyoy6sbzxsub7gnp7zlfn4j3pw&type=define&q=" query))
- (if(and
- (setq xmlDoc (vlax-create-object "MSXML.DOMDocument"))
- (not (vlax-put xmlDoc 'async 0))
- (= (vlax-invoke xmlDoc 'load url ) -1)
- (= 4 (vlax-get xmlDoc 'readyState)))
- (progn
- (setq pos (vlax-invoke-method xmlDoc 'getElementsByTagName "partofspeech"))
- (if(> (vlax-get pos 'length) 0)
- (progn
- (setq posId -1)
- (while (< (setq posId(1+ posId)) (vlax-get pos 'length))
- (setq posItem (vlax-get-property pos 'Item posId))
- (princ (strcat "\n------\nPart of speech: " (vlax-get (vlax-invoke-method (vlax-get-property posItem 'attributes) 'getNamedItem "pos") 'value)))
- (setq defs (vlax-invoke-method posItem 'getElementsByTagName "def"))
- (if(> (vlax-get defs 'length) 0)
- (progn
- (setq defId -1)
- (while(< (setq defId(1+ defId)) (vlax-get defs 'length))
- (setq def (vlax-get-property defs 'Item defId))
- (princ (strcat "\n" (rtos (1+ defId) 2 0) ": " (vlax-variant-value(vlax-get-property def 'nodeTypedValue))))
- )
- )
- )
- )
- )
- (princ "\nNo results found")
- )
- )
- )
- (vlax-release-object xmlDoc)
- (princ)
- )
注:
url中的vid值不是永久性的,如果有人打算长期使用该值,或者碰巧在将来阅读该值,并且看到acad打印文字到控制台的想法使其充满了fervor api键,可以从字典的网站上获得。
编辑:
更新的代码通知用户,他们的查询没有返回结果 |