tryhi
发表于 2018-8-27 18:03:29
yanshengjiang 发表于 2018-8-8 16:37
哥们我这只实现了词组的首一个字母。你在吗提取到“批量”=“PL“的呢?
;;获取汉字的拼音首字母,返回字母表
(defun pingyin (str / asc lst rt)
(setq lst (vl-string->list str))
(while lst
(setq asc (+ (* (car lst) 256) (cadr lst) -65536)
lst (cddr lst)
)
(setq rt (cons
(cond
((<= -20319 asc -20284) "A")
((<= -20283 asc -19776) "B")
((<= -19775 asc -19219) "C")
((<= -19218 asc -18711) "D")
((<= -18710 asc -18527) "E")
((<= -18526 asc -18240) "F")
((<= -18239 asc -17923) "G")
((<= -17922 asc -17418) "H")
((<= -17922 asc -17418) "I")
((<= -17417 asc -16475) "J")
((<= -16474 asc -16213) "K")
((<= -16212 asc -15641) "L")
((<= -15640 asc -15166) "M")
((<= -15165 asc -14923) "N")
((<= -14922 asc -14915) "O")
((<= -14914 asc -14631) "P")
((<= -14630 asc -14150) "Q")
((<= -14149 asc -14091) "R")
((<= -14090 asc -13319) "S")
((<= -13318 asc -12839) "T")
((<= -12838 asc -12557) "W")
((<= -12556 asc -11848) "X")
((<= -11847 asc -11056) "Y")
((<= -11055 asc -10247) "Z")
(t nil)
)
rt
)
)
)
(reverse rt)
)
纵横八方
发表于 2018-8-27 19:05:48
虽然看不懂,还是来捧场
菜卷鱼
发表于 2019-3-1 09:15:42
本帖最后由 菜卷鱼 于 2019-3-1 09:17 编辑
过来支持一下
qq1254582201
发表于 2019-3-7 15:52:53
确实很厉害,给楼主点个赞
timmy521
发表于 2020-3-2 09:35:31
谢谢,好东西,学习。
xvjiex
发表于 2020-3-2 11:08:23
本帖最后由 xvjiex 于 2020-3-2 11:13 编辑
命令:sc2可以正常使用,但是命令:sc.5就显示未知命令。我初学者,找不出原因。求大神帮忙!
timmy521
发表于 2020-3-4 22:54:00
在猫老师的指导下,这样改就行了。
;;命令反应器定义直接带数字缩放
(vl-load-com)
(or *lispvlr*(setq *lispvlr* (vlr-command-reactor nil '((:vlr-unknownCommand . _wzml_vlr)))));定义未知命令反应器
(defun _wzml_vlr ( vlrobj data );反应器触发函数/ send wzml
(setq aa (getvar "LASTPROMPT"))
(setq wzml (substr aa 7));输入的未知命令名称
(defun send (str)(vla-sendcommand (vla-get-ActiveDocument (vlax-get-acad-object)) (strcat str"\n")));发送字符串到命令行
(cond ;采用cond来管理多种类型,本处只举例一种
((and;sc缩放带比例命令
(wcmatch wzml "SC.*,SC#*");是否SC开头带数字
(wcmatch (substr wzml 3)"~*[~`.-9]*");二次判断
);通用命令
(send (strcat "(-wzml-fyq \""wzml"\")"));触发命令(反应器里面无法使用command等多种函数,采取跳出反应器来突破函数限制)
)
)
)
;;触发通用函数(可以定义多个函数,也可以只用一个函数,自由发挥)
(defun -wzml-fyq (wzml / bili)
(cond ;采用cond来管理多种类型的命令,本处只举例一种
((wcmatch wzml "SC*,SC.*,SC#*");缩放命令
(setq bili(atof (substr wzml 3)));取得数字
(command "SCALE" (ssget) "" pause bili)
)
)
)
cqu20104225
发表于 2020-3-4 23:12:32
发现宝藏了,先马住,闲下来认真学一下
xvjiex
发表于 2020-3-5 08:54:33
timmy521 发表于 2020-3-4 22:54
在猫老师的指导下,这样改就行了。
;;命令反应器定义直接带数字缩放
(vl-load-com)
感谢修改,这个sc.5也能用了。原先只能用sc2
magicheno
发表于 2021-10-26 19:18:48
学习啦,海哥