找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2700|回复: 22

[求助] 选择格式刷后,可以输入S进行设置,也可直接选取要被格式化的对象

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-10-12 08:59:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
Select destination object(s) or [Settings]
选择格式刷后,可以输入S进行设置,也可直接选取要被格式化的对象
假如用lisp写一段同等功能的代码,怎么写呢?
比如下面的代码,不输入S,但要回车才能选择对象,可格式刷不用回车,这就是奇妙之处了。
(initget "S ")
(setq cc (getkword "\n [设置(S)/选择对象]"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-10-12 09:05:29 | 显示全部楼层
http://bbs.mjtd.com/thread-71545-1-1.html
这个帖子你应该看过,我认为这是目前最好的带关键字的ssget,美中不足的是使用时会在命令行显示一长串数字,不过不影响使用。

点评

谢谢长老,我是想知道ssget选择对象时,可以输入S去办其它事情。 就象entsel一样 (initget " ") (setq TXTEN (entsel "\n选择单行文字: ")) 可以直接选择对象,也可输入S  详情 回复 发表于 2013-10-12 09:23
谢谢长老  发表于 2013-10-12 09:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-12 09:23:23 | 显示全部楼层
ll_j 发表于 2013-10-12 09:05
http://bbs.mjtd.com/thread-71545-1-1.html
这个帖子你应该看过,我认为这是目前最好的带关键字的ssget, ...

谢谢长老,我是想知道ssget选择对象时,可以输入S去办其它事情。
就象entsel一样
(initget " ")
(setq TXTEN (entsel "\n选择单行文字: "))
可以直接选择对象,也可输入S

点评

按你说的代码,我输入S怎么没用啊。 命令: (initget "") nil 命令: (entsel "\nfaf") fafs *无效选择* 需要点或上一个(L) faf nil  详情 回复 发表于 2013-10-12 09:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 09:32:19 来自手机 | 显示全部楼层
这个可以啊,用while 设关键字 S 128 接受任意输入,如果返回表就是entsel,如果等于 "S",做你想做的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-10-12 09:32:34 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-12 09:23
谢谢长老,我是想知道ssget选择对象时,可以输入S去办其它事情。
就象entsel一样
(initget " ")

按你说的代码,我输入S怎么没用啊。

命令: (initget "")
nil

命令: (entsel "\nfaf")

fafs


*无效选择*
需要点或上一个(L)

faf
nil

点评

人家是举个例子啊,,,还没写完整呢  详情 回复 发表于 2013-10-12 09:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 09:33:13 来自手机 | 显示全部楼层
(initget 128 "S")

点评

下面的与格式刷还是有区别的 (defun C:w1 () (setq p T) (while p (initget "S ") (setq p (entsel)) (cond ((= p "S") (princ p));do something ((not p) p) (T (setq ss (ssget  详情 回复 发表于 2013-10-12 09:59
原来还可以这样啊~~~~  详情 回复 发表于 2013-10-12 09:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-10-12 09:46:32 | 显示全部楼层
Lisphk 发表于 2013-10-12 09:32
按你说的代码,我输入S怎么没用啊。

命令: (initget "")

人家是举个例子啊,,,还没写完整呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-10-12 09:47:04 | 显示全部楼层

原来还可以这样啊~~~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-12 09:59:52 | 显示全部楼层

下面的与格式刷还是有区别的
(defun C:w1 ()
  (setq p T)
  (while p
    (initget "S ")
    (setq p (entsel))   
    (cond ((= p "S") (princ p));do something
   ((not p) p)
   (T (setq ss (ssget "C" (cadr p) (cadr p))))
    )
  )
)

点评

(listp p)表就是点选了  详情 回复 发表于 2013-10-12 10:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-10-12 10:09:00 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-12 09:23
谢谢长老,我是想知道ssget选择对象时,可以输入S去办其它事情。
就象entsel一样
(initget " ")

飞诗的代码是这样用的:
(setq a_ 2 se1 (Fsxm-ssget "\n拾取钢筋直径或 [设置(S)/求和(T)]: " "S T" '((0 . "TEXT"))))
这个例子,S和T是关键字,前面是提示,后面是ssget的过滤表。

点评

;;我是想改造相同刷,比如选择到文本,我可以输入S去读取属性设置,然后再去改变文本;也可直接选择广本,修改默认的属性 ;;**********************************************************************相同刷 (DEFUN  详情 回复 发表于 2013-10-12 10:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 10:12:35 来自手机 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-12 09:59
下面的与格式刷还是有区别的
(defun C:w1 ()
  (setq p T)

(listp p)表就是点选了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-12 10:19:44 | 显示全部楼层
ll_j 发表于 2013-10-12 10:09
飞诗的代码是这样用的:
(setq a_ 2 se1 (Fsxm-ssget "\n拾取钢筋直径或 [设置(S)/求和(T)]: " "S T" '( ...

;;我是想改造相同刷,比如选择到文本,我可以输入S去读取属性设置,然后再去改变文本;也可直接选择广本,修改默认的属性

  1. ;;**********************************************************************相同刷
  2. (DEFUN C:XX (/ E ENTLIS NAME SHORTC UU)
  3.   ;;1 错误处理
  4.   (defun *error* (s)
  5.     (if (= 8 (logand (getvar "undoctl") 8))
  6.       (command "_.undo" "_e")
  7.     )
  8.     (setvar "SHORTCUTMENU" SHORTC)
  9.     (setvar "nomutt" 0)
  10.   )
  11.   ;;2 处理文字
  12.   (defun XX:Text (UU / ENT N SS X)
  13.     (WHILE (not (member (car (grread T 5 2)) '(11 12 25)))
  14.       (princ "\n 目标:文字刷为相同内容")
  15.       (setvar "nomutt" 1)
  16.       (SETQ
  17. SS (vl-catch-all-apply
  18.       '(LAMBDA NIL
  19.   (SSGET ":S:L"
  20.          '((0 . "*TEXT"))
  21.   )
  22.        )
  23.     )
  24.       )
  25.       (setvar "nomutt" 0)
  26.       (IF (VL-CATCH-ALL-ERROR-P SS)
  27. nil
  28. (if ss
  29.    (REPEAT (SETQ N (SSLENGTH SS))
  30.      (SETQ X (SSNAME SS (SETQ N (1- N))))
  31.      (setq ent (entget x))
  32.      (entmod (subst UU (assoc 1 ent) ent))
  33.    )
  34. )
  35.       )
  36.     )
  37.   )
  38.   ;;3 块
  39.   (defun XX:Insert (UU / ENT N SS X)
  40.     (WHILE (not (member (car (grread T 5 2)) '(11 12 25)))
  41.       (princ "\n 目标:块相同")
  42.       (setvar "nomutt" 1)
  43.       (SETQ
  44. SS (vl-catch-all-apply
  45.       '(LAMBDA NIL
  46.   (SSGET ":S:L"
  47.          '((0 . "INSERT"))
  48.   )
  49.        )
  50.     )
  51.       )
  52.       (setvar "nomutt" 0)
  53.       (IF (VL-CATCH-ALL-ERROR-P SS)
  54. NIL
  55. (IF SS
  56.    (REPEAT (SETQ N (SSLENGTH SS))
  57.      (SETQ X (SSNAME SS (SETQ N (1- N))))
  58.      (setq ent (entget x))
  59.      (entmod (subst UU (assoc 2 ent) ent))
  60.    )
  61. )
  62.       )
  63.     )
  64.   )
  65.   ;;4 处理圆
  66.   (defun XX:CIR (UU / ENT N SS X)
  67.     (WHILE (not (member (car (grread T 5 2)) '(11 12 25)))
  68.       (princ "\n 目标:相同圆")
  69.       (setvar "nomutt" 1)
  70.       (SETQ
  71. SS (vl-catch-all-apply
  72.       '(LAMBDA NIL
  73.   (SSGET ":S:L"
  74.          '((0 . "CIRCLE"))
  75.   )
  76.        )
  77.     )
  78.       )
  79.       (setvar "nomutt" 0)
  80.       (IF (VL-CATCH-ALL-ERROR-P SS)
  81. nil
  82. (if ss
  83.    (REPEAT (SETQ N (SSLENGTH SS))
  84.      (SETQ X (SSNAME SS (SETQ N (1- N))))
  85.      (setq ent (entget x))
  86.      (entmod (subst UU (assoc 40 ent) ent))
  87.    )
  88. )
  89.       )
  90.     )
  91.   )
  92.   ;;5 属性
  93.   (defun XX:att (UU / ENT N SS X)
  94.     (WHILE (not (member (car (grread T 5 2)) '(11 12 25)))
  95.       (princ "\n 目标:属性相同")
  96.       (setvar "nomutt" 1)
  97.       (SETQ
  98. SS (vl-catch-all-apply
  99.       '(LAMBDA NIL
  100.   (SSGET ":S:L"
  101.          '((0 . "ATTDEF"))
  102.   )
  103.        )
  104.     )
  105.       )
  106.       (setvar "nomutt" 0)
  107.       (IF (VL-CATCH-ALL-ERROR-P SS)
  108. NIL
  109. (IF SS
  110.    (REPEAT (SETQ N (SSLENGTH SS))
  111.      (SETQ X (SSNAME SS (SETQ N (1- N))))
  112.      (setq ent (entget x))
  113.      (entmod (subst UU (assoc 2 ent) ent))
  114.    )
  115. )
  116.       )
  117.     )
  118.   )
  119.   ;;6 主
  120.   (setq SHORTC (getvar "SHORTCUTMENU"))
  121.   (setvar "SHORTCUTMENU" 0)
  122.   (setvar "nomutt" 1)
  123.   (while (not E)
  124.     (princ "\n 选择源:文字、块、圆")
  125.     (setq e (SSGET ":S:E"
  126.      '((0 . "*TEXT,INSERT,CIRCLE,ATTDEF"))
  127.      )
  128.     )
  129.   )
  130.   (setvar "nomutt" 0)
  131.   (setq entlis (ENTGET (SETQ E (SSNAME E 0))))
  132.   (setq name (cdr (assoc 0 entlis)))
  133.   (cond ((member name (list "TEXT" "MTEXT"))
  134.   (setq UU (ASSOC 1 entlis))
  135. )
  136. ((equal name "INSERT") (setq UU (ASSOC 2 entlis)))
  137. ((equal name "ATTDEF") (setq UU (ASSOC 2 entlis)))
  138. (T (setq UU (ASSOC 40 entlis)))
  139.   )
  140.   (COMMAND "MATCHPROP" E)
  141.   (cond ((equal name "INSERT") (XX:Insert UU))
  142. ((equal name "ATTDEF") (XX:att UU))
  143. ((equal name "CIRCLE") (XX:CIR UU))
  144. (t (XX:Text UU))
  145.   )
  146.   ;;(if (/= (getvar "cmdactive") 0)(COMMAND ""))
  147.   (while (not (equal (getvar "cmdnames") "")) (command nil))
  148.   (setvar "SHORTCUTMENU" SHORTC)
  149.   (PRINC)
  150. )
  151. ;;**********************************************************************相同刷

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 828个

财富等级: 财运亨通

发表于 2013-10-12 10:44:13 | 显示全部楼层
学习一下,没有遇到这样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-12 10:47:18 | 显示全部楼层
12的程序太多,简化一下,我是想改造下面的程序
  1. (defun C:w1 (/ E P SS)
  2.   (defun my (e)
  3.     (setq p T)
  4.     (while p
  5.       (initget "S ")
  6.       (setq p (entsel))
  7.       (cond ((= p "S") (princ p))                  ;do something
  8.             ((not p) p)
  9.             (T (setq ss (ssget "C" (cadr p) (cadr p))))
  10.       )
  11.     )
  12.   )
  13.   (setq e (car (entsel)))
  14.   (COMMAND "MATCHPROP" E)
  15.   (my e)
  16.   (while (not (equal (getvar "cmdnames") "")) (command nil))
  17. )

点评

看看eachy版主那个超级刷子,就是这个用法,s 设置  详情 回复 发表于 2013-10-12 10:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 10:54:09 来自手机 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-12 10:47
12的程序太多,简化一下,我是想改造下面的程序

看看eachy版主那个超级刷子,就是这个用法,s  设置

点评

说到底,我就是想改造这个刷子,但eachy的程序不出现刷子。但wkai改后每次要出现对话框,如果这个对话框在输入S之后出而且有刷子,该多好呀  详情 回复 发表于 2013-10-12 11:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 05:12 , Processed in 0.312124 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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