tryhi 发表于 2018-7-24 17:38:32

本帖最后由 tryhi 于 2018-7-24 17:52 编辑

flowerson 发表于 2018-7-24 10:51
win10 cad2016 64位的测试结果

“命令: SC2 未知命令“SC2”。按 F1 查看帮助。

有人反映运行后参数错误,我复制了帖子里面的代码,发现确实如此,检查之后发现第16句
(send (strcat "(-wzml-fyq \""wzml"\")"))
两个斜杠不见了,不管我怎么编辑,代码里面wzml前面那个斜杠一直显示不了,放在外面就可以显示,我也不知道为什么

灬北方狼灬 发表于 2018-7-24 17:44:41

这个思路很厉害,学习了。

海盗曹 发表于 2018-7-27 10:55:46

测试了CAD2010 64位没问题,2014不行

liunian0524 发表于 2018-7-27 11:38:59

感谢楼主分享

ll0111 发表于 2018-7-30 10:51:39

非常好的想法,酷

yanshengjiang 发表于 2018-8-8 16:35:44

(vl-load-com)
(or *doc* (setq *doc* (vla-get-ActiveDocument (vlax-get-acad-object))))
(or *chinese-text* (setq *chinese-text* (vlr-editor-reactor nil '((:vlr-unknownCommand . chinese-text)))))

(defun chinese-text(a b / asc)
(setvar "cmdecho" 0)
(setq c (strcase(car b)))
(setq asc (+ (* (ascii c) 1000) (ascii (substr c 2 1))));得到汉字机器码(貌似是)
(cond;cond
((<= 176161 asc 176196)(setq sendcommand-text"_.TRIM "));A啊
((<= 178193 asc 180237)(setq sendcommand-text"_.copy "));C才
((<= 182234 asc 183161)(setq sendcommand-text"_.erase "));E 额
((<= 183162 asc 184192)(setq sendcommand-text"_.fuzhi " ));F发
((<= 184193 asc 185253)(setq sendcommand-text"_.DRAWGCD " ));G个
((<= 185254 asc 187246)(setq sendcommand-text"_.huan "));H好
((<= 187247 asc 191165)(setq sendcommand-text"_.POLYJOIN " ));J就
((<= 191166 asc 192171)(setq sendcommand-text"_.DRAWDK " ));K看
((<= 194171 asc 196194)(setq sendcommand-text"_.move "));M 门=====此处机器码不是很准确
((<= 196195 asc 197181)(setq sendcommand-text"_.PLIND "));N你
((<= 198218 asc 200186)(setq sendcommand-text"_.EXTEND "));Q去
((<= 200187 asc 200245)(setq sendcommand-text"_.offset "));R人
((<= 200246 asc 203249)(setq sendcommand-text"_.putp "));S是
((<= 203250 asc 205217)(setq sendcommand-text"_.TEXT "));T 他
((<= 205218 asc 206243)(setq sendcommand-text"_.DRAWWQ " ));W我
((<= 206244 asc 209184)(setq sendcommand-text"_.DJF3 0 " ));X想
((<= 209185 asc 212208)(setq sendcommand-text"_.POLYINS " ));Y有
((<= 212209 asc)       (setq sendcommand-text"_.zoom e "));Z 中
((> 176161 asc)       (setq sendcommand-text nil));如果不是汉字就
)   ;cond
(if (/= sendcommand-text nil)
(vla-sendcommand *doc* sendcommand-text)
    )
(setq sendcommand-text nil)
(princ)
)

yanshengjiang 发表于 2018-8-8 16:37:13

tryhi 发表于 2018-7-20 10:48
使用返回汉字拼音首字母函数,可以非常方便的实现对未知中文命令的强制转换,比如输入“批量”“漂亮 ...

哥们我这只实现了词组的首一个字母。你在吗提取到“批量”=“PL“的呢?




(vl-load-com)
(or *doc* (setq *doc* (vla-get-ActiveDocument (vlax-get-acad-object))))
(or *chinese-text* (setq *chinese-text* (vlr-editor-reactor nil '((:vlr-unknownCommand . chinese-text)))))

(defun chinese-text(a b / asc)
(setvar "cmdecho" 0)
(setq c (strcase(car b)))
(setq asc (+ (* (ascii c) 1000) (ascii (substr c 2 1))));得到汉字机器码(貌似是)
(cond;cond
((<= 176161 asc 176196)(setq sendcommand-text"_.TRIM "));A啊
((<= 178193 asc 180237)(setq sendcommand-text"_.copy "));C才
((<= 182234 asc 183161)(setq sendcommand-text"_.erase "));E 额
((<= 183162 asc 184192)(setq sendcommand-text"_.fuzhi " ));F发
((<= 184193 asc 185253)(setq sendcommand-text"_.DRAWGCD " ));G个
((<= 185254 asc 187246)(setq sendcommand-text"_.huan "));H好
((<= 187247 asc 191165)(setq sendcommand-text"_.POLYJOIN " ));J就
((<= 191166 asc 192171)(setq sendcommand-text"_.DRAWDK " ));K看
((<= 194171 asc 196194)(setq sendcommand-text"_.move "));M 门=====此处机器码不是很准确
((<= 196195 asc 197181)(setq sendcommand-text"_.PLIND "));N你
((<= 198218 asc 200186)(setq sendcommand-text"_.EXTEND "));Q去
((<= 200187 asc 200245)(setq sendcommand-text"_.offset "));R人
((<= 200246 asc 203249)(setq sendcommand-text"_.putp "));S是
((<= 203250 asc 205217)(setq sendcommand-text"_.TEXT "));T 他
((<= 205218 asc 206243)(setq sendcommand-text"_.DRAWWQ " ));W我
((<= 206244 asc 209184)(setq sendcommand-text"_.DJF3 0 " ));X想
((<= 209185 asc 212208)(setq sendcommand-text"_.POLYINS " ));Y有
((<= 212209 asc)       (setq sendcommand-text"_.zoom e "));Z 中
((> 176161 asc)       (setq sendcommand-text nil));如果不是汉字就
)   ;cond
(if (/= sendcommand-text nil)
(vla-sendcommand *doc* sendcommand-text)
    )
(setq sendcommand-text nil)
(princ)
)

qq1254582201 发表于 2018-8-9 01:45:45

火钳刘明,这个帖子必火

479274135 发表于 2018-8-10 08:07:14

很强   顶顶顶

mapple666 发表于 2018-8-10 10:03:29

惊惊来捧场~
页: 1 2 [3] 4 5
查看完整版本: 使用反应器定义无限多种虚拟命令