明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: gbhsu

cmd+num 命令简称加任意数字组成智能命令[07.20]

    [复制链接]
发表于 2011-9-20 00:27 | 显示全部楼层
690994 发表于 2011-9-19 11:37
回车重复命令问题我也解决了。

能不能贴出来欣赏欣赏?
发表于 2011-9-20 08:54 | 显示全部楼层
adc 发表于 2011-9-20 00:27
能不能贴出来欣赏欣赏?

请参看我以前贴出代码,将vla-sendcommand发送的字符参数设为一
全局变量A或保存到图中,再定义一个命令C:BB执行这个变量A。
再将vla-sendcommand后面的字符改为命令BB即可。
这样,各种情况下都是执行BB命令,然后BB命令再执行变量A具体内容,
按空格就能重复执行BB达到目的。
发表于 2011-9-20 10:23 | 显示全部楼层
690994 发表于 2011-9-20 08:54
请参看我以前贴出代码,将vla-sendcommand发送的字符参数设为一
全局变量A或保存到图中,再定义一个命令 ...

朋友:写了这么多还是完整的贴个出来吧!~~呵呵!~~
发表于 2011-9-20 10:36 | 显示全部楼层
daidong013 发表于 2011-9-20 10:23
朋友:写了这么多还是完整的贴个出来吧!~~呵呵!~~

源码没带在身边,下次发上。
其实按我在12楼发的代码按上面的改下即可。
我自己就懒得改了。
发表于 2011-9-20 14:31 | 显示全部楼层
690994 发表于 2011-9-20 10:36
源码没带在身边,下次发上。
其实按我在12楼发的代码按上面的改下即可。
我自己就懒得改了。

强烈建议贴上完整的代码
 楼主| 发表于 2011-9-20 21:47 | 显示全部楼层
690994 发表于 2011-9-20 08:54
请参看我以前贴出代码,将vla-sendcommand发送的字符参数设为一
全局变量A或保存到图中,再定义一个命令 ...

没看到你的源码,这样做每次可能还要出现未知命令的提示
我是将未知命令重新定义成命令,可能是繁了点,但不出现未知命令的提示
建议将源码贴出来计论一下
发表于 2011-9-21 10:12 | 显示全部楼层
gbhsu 发表于 2011-9-20 21:47
没看到你的源码,这样做每次可能还要出现未知命令的提示
我是将未知命令重新定义成命令,可能是繁了点, ...

我以前也是将自己常用的定义成命令,但这样还是不够用,
全部定义又太多命令了,不知会不会影响速度。
至于未知命令提示还是不能消除,好象是CAD判断是未知命令
后才会执行我们定义的程序。好象在论坛看到有个变量能控制
SSGET不显示请选择实体提示的,对这个不知有没在效。
这个不影响使用,我也就懒得试了。
我的代码如下,samcom对应内容是我自己定义的功能。
(defun unknownCommand (calling-reactor commandInfo / c n)        
    (setq c (strcase (car commandInfo)))
    (if (and(setq n(vl-string-search "." c))(wcmatch(substr c n 1) "[A-Z]")) ;f.5>F0.5
        (setq c (strcat(substr c 1 n)"0"(substr c (1+ n))))
    )
    (setq n t)
  (cond
  ((or(wcmatch c "0,200,201,255,256")
     (and(wcmatch c "##")(wcmatch c "~0#"))
    )   
   (setq samcom(strcat"(sam_activelayer \""(vl-princ-to-string c)"\") "))
  )
    ((wcmatch c "[1-9],###,####,#####,######,#######,########")
      (if(= c "345")(setq c "12345"))
      (if(= c "678")(setq c "6789"))
   (setq samcom(strcat "(sam_onlayer \"" (vl-princ-to-string c)"\") "))
  )
  ((and(=(substr c 1 1) "O")
    (numberp (setq n(read(substr c 2))))
    (>= n 10.0)
   )
   (setq samcom(strcat "(sam_laycopy \"" (vl-princ-to-string n) "\") "))
  )
  ((and(=(substr c 1 1) "M")
    (numberp (setq n(read(substr c 2))))
    (>= n 10.0)
   )
   (setq samcom(strcat "(sam_laymove \"" (vl-princ-to-string n) "\") "))
  )
  ((and(=(substr c 1 1) "F")
    (numberp (setq n(read(substr c 2))))
   )
   (setq samcom(strcat "(sam_fillet " (vl-princ-to-string n) " nil) "))
  )
  ((= c "FF")   
   (setq samcom "(sam_fillet 0.0 nil) ")
  )  
  ((and(=(substr c 1 1) "C")
    (numberp (setq n(read (substr c 2))))
   )
    (setq samcom(strcat "(sam_fillet " (vl-princ-to-string n) " t) "))
  )
  ((and(=(substr c 1 1) "N")
    (numberp (setq n(read(substr c 2))))
   )
   (if(= n 0.0)
      (setq samcom "(sam_co_lts nil nil) ")
      (setq samcom(strcat "(sam_co_lts " (vl-princ-to-string (fix n)) " nil) "))
   )
  )  
  ((and(=(substr c 1 1) "L")
    (numberp (setq n (read (substr c 2))))
   )
    (setq samcom(strcat "(sam_co_lts nil " (vl-princ-to-string n) ") "))
  )
  ((and(=(substr c 1 1) "X")
    (numberp (setq n(read(substr c 2))))
   )
   (setq samcom(strcat "(sam_xline " (vl-princ-to-string n) ") "))
  )
  ((and(=(substr c 1 1) "D")
    (numberp (setq n(read(substr c 2))))
   )
   (setq samcom(strcat "(sam_dimbit " (vl-princ-to-string n) ") "))
  )
  ((and(=(substr c 1 1) "H")
    (numberp (setq n(read(substr c 2))))
   )
   (setq samcom(strcat "(sam_ha_sc " (vl-princ-to-string n) ") "))
  )
  ((and(=(substr c 1 1) "T")
    (numberp (setq n(read(substr c 2))))
   )
   (setq samcom(strcat "(sam_text_h " (vl-princ-to-string n) ") "))
  )   
  ((and(=(substr c 1 1) "J")
    (numberp (setq n(read(substr c 2))))
   )
   (setq samcom(strcat "(sam_jion_select " (vl-princ-to-string n) ") "))
  )
  (t (setq n nil))
)
(if n(vl-catch-all-apply 'vla-SendCommand (list(vla-get-ActiveDocument (vlax-get-acad-object)) "SmartCommand ")))
(princ)
)
(defun c:SmartCommand( / *doc* )
   (vla-startundomark (setq *doc*(vla-get-activedocument (vlax-get-acad-object))))
   (setvar "cmdecho" 0)      
   (if(and (=(type samcom) 'str)(wcmatch samcom "(sam_*\) "))
      (vl-catch-all-apply 'eval  (list (read samcom))))
  (setvar "cmdecho" 1)
  (vla-endundomark *doc*)
  (princ)
)

点评

very good!  发表于 2011-9-21 11:08

评分

参与人数 1金钱 +20 收起 理由
gbhsu + 20 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2011-9-21 21:54 | 显示全部楼层
很久没来了,居然有这么好的程序,多年以前曾经想过,但没搞出来,今天看到了,不管好不好用,都很高兴,支持下
发表于 2011-9-21 23:38 | 显示全部楼层
这么好的程序不顶还说啥子呢
发表于 2011-9-21 23:39 | 显示全部楼层
这么好的程序不顶还说啥子呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 21:16 , Processed in 0.376832 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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