明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tryhi

[源码] 使用反应器定义无限多种虚拟命令

    [复制链接]
 楼主| 发表于 2018-8-27 18:03 | 显示全部楼层
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 | 显示全部楼层
虽然看不懂,还是来捧场
发表于 2019-3-1 09:15 | 显示全部楼层
本帖最后由 菜卷鱼 于 2019-3-1 09:17 编辑

过来支持一下
发表于 2019-3-7 15:52 来自手机 | 显示全部楼层
确实很厉害,给楼主点个赞
发表于 2020-3-2 09:35 | 显示全部楼层
谢谢,好东西,学习。
发表于 2020-3-2 11:08 | 显示全部楼层
本帖最后由 xvjiex 于 2020-3-2 11:13 编辑

命令:sc2可以正常使用,但是命令:sc.5就显示未知命令。我初学者,找不出原因。求大神帮忙!

本帖子中包含更多资源

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

x
发表于 2020-3-4 22:54 | 显示全部楼层
在猫老师的指导下,这样改就行了。
;;命令反应器定义直接带数字缩放
(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)
    )
  )
)

点评

2018测试结果是命令行上屏时间太慢,经常读不到,用LASTPROMPT之前最好增加几十毫秒延时  发表于 2021-10-29 15:32

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1 赞一个!

查看全部评分

发表于 2020-3-4 23:12 | 显示全部楼层
发现宝藏了,先马住,闲下来认真学一下
发表于 2020-3-5 08:54 | 显示全部楼层
timmy521 发表于 2020-3-4 22:54
在猫老师的指导下,这样改就行了。
;;命令反应器定义直接带数字缩放
(vl-load-com)

感谢修改,这个sc.5也能用了。原先只能用sc2
发表于 2021-10-26 19:18 | 显示全部楼层
学习啦,海哥
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 06:58 , Processed in 0.262080 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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