明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6772|回复: 16

[基础] 新手求教,如何把2个CAD命令合并成一个连续的命令

  [复制链接]
发表于 2011-2-19 13:02 | 显示全部楼层 |阅读模式
       新手求教,如何把2个CAD命令合并成一个连续的命令
       请各位大哥帮忙。
       写一段程序,把filter和QDIM合并成一个新的命令

发表于 2011-2-19 17:55 | 显示全部楼层
本帖最后由 七七0707 于 2011-2-19 19:39 编辑

  1. (defun c:tt()
  2.   (command "_.filter")
  3. (while (= 1 (getvar "cmdactive"))
  4.   (command pause)
  5.     )
  6. (command "_.qdim")
  7. (while (= 1 (getvar "cmdactive"))
  8.   (command pause)
  9.     )
  10. )



评分

参与人数 1金钱 +10 收起 理由
songbf + 10 好人,鼓励下

查看全部评分

 楼主| 发表于 2011-2-21 07:53 | 显示全部楼层
回复 七七0707 的帖子

这位大哥,你的程序不能用啊,能不能再帮忙改一下啊?
filter这个命令我要过滤圆,你给的只能单选,不能窗口选,还有选完了以后,跳到下一个命令就失效了,到了QDIM上又要选择物体了,请帮我改一下谢谢。
发表于 2011-2-21 07:55 | 显示全部楼层
共同学习,谢谢!
发表于 2011-2-21 15:14 | 显示全部楼层
回复 songbf 的帖子

  1. (defun c:tt()
  2.   (command "_.filter")
  3. (while (= 1 (getvar "cmdactive"))
  4.   (command pause)
  5.     )
  6.   (setq ss (cadr (SSGETFIRST)))
  7. (command "_.qdim")
  8.     (if ss (command ss))
  9. (while (= 1 (getvar "cmdactive"))
  10.   (command pause)
  11.     )
  12. )
 楼主| 发表于 2011-2-21 15:47 | 显示全部楼层
本帖最后由 songbf 于 2011-2-21 15:49 编辑

回复 Gu_xl 的帖子

谢谢版主
还有个问题,请问如果我直接用选择集来做的话,我要选圆来快速标注该怎么写,
最好前面能加上移动坐标原点到指定位置
选择的时候需要窗口选择
发表于 2011-2-21 16:51 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-2-21 16:54 编辑

回复 songbf 的帖子

选园:(setq ss (ssget '((0 . "circle"))))
自定义原点:(command "ucs" "n" (getpoint “选择基点:”))

评分

参与人数 1金钱 +20 收起 理由
songbf + 20

查看全部评分

 楼主| 发表于 2011-2-21 19:22 | 显示全部楼层
回复 Gu_xl 的帖子

谢谢,总算可以了
发表于 2011-2-21 23:24 | 显示全部楼层
版主你好,我刚接触 lsp,如果你方便的话,我想请你帮个忙,写一个把几个cad的命令连贯地运行一次的 lsp,还有帮改图层切换的lsp。谢谢了。

1:把选择对象转为0层
2:清理全部(pu)
3:全选
4:复制
5:不保存关闭当前窗口
6:黏贴
不知是否可行?????


CAD图层转换 lsp,我只想要第一个功能,不知哪位大侠方便版本帮忙改一下啦,感激不尽了!!!

功能:
1:按下快捷键,如果已选中对象,则把选中对象转到相应的图层,如果没有选中如何对象,则转到相应的图层(可以设好图层名);
2:可以设好图层名及线型、颜色;
3:如果没有相对应的图层则自动建立该图层。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN LAYERCH(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))          ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la"  mylsp "")
   (command "_layer" "m" mylsp  "")    ;否则将指定的层置为当前
)
   (princ)
)



1
(DEFUN C:1() (lyh "0"))
(DEFUN lyh(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                  ;如果已选择对象则将其转到指定的层
(command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                 ;线型                  颜色
(command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "RED" mylsp "LW" "0.3" mylsp "") ;否则将指定的层置为当前
)
(princ)
)



2
(DEFUN C:2() (lyh2 "2虚线"))
(DEFUN lyh2(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                ;如果已选择对象则将其转到指定的层
(command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
;下面这一行是建立图层时的设置,可把线型、颜色设置好。
(command "_layer" "m" mylsp "L" "HIDDEN" mylsp "C" "CYAN" mylsp "LW" "0.13" mylsp "") ;否则将指定的层置为当前
)
(princ)
)



3
(DEFUN C:3() (lyh4 "3细线"))
(DEFUN lyh4(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                          ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                    ;线型                  颜色
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "CYAN" mylsp "LW" "0.13" mylsp "")    ;否则将指定的层置为当前
)
   (princ)
)



4
(DEFUN C:4() (lyh5 "4中心线"))
(DEFUN lyh5(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                       ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
;下面这一行是建立图层时的设置,可把线型、颜色设置好。
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "CYAN" mylsp "LW" "0.13" mylsp "") ;否则将指定的层置为当前
)
   (princ)
)



5
(DEFUN C:5() (lyh7 "5文字"))
(DEFUN lyh7(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                       ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                    ;线型                  颜色
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "GREEN" mylsp "LW" "0.3" mylsp "") ;否则将指定的层置为当前
)
   (princ)
)



6
(DEFUN C:6() (lyh8 "6不打印"))
(DEFUN lyh8(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                          ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                    ;线型                  颜色
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "GREEN" mylsp "LW" "0.3" mylsp "")    ;否则将指定的层置为当前
)
   (princ)
)



7
(DEFUN C:7() (lyh9 "7双点划线"))
(DEFUN lyh9(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                       ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                    ;线型                  颜色
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "GREEN" mylsp "LW" "0.3" mylsp "") ;否则将指定的层置为当前
)
   (princ)
)



8
(DEFUN C:8() (lyh9 "8rqerq"))
(DEFUN lyh9(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                       ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                    ;线型                  颜色
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "GREEN" mylsp "LW" "0.3" mylsp "") ;否则将指定的层置为当前
)
   (princ)
)



9
(DEFUN C:9() (lyh9 "9三个人"))
(DEFUN lyh9(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))                                                       ;如果已选择对象则将其转到指定的层
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
                                    ;线型                  颜色
   (command "_layer" "m" mylsp "L" "CONTINUOUS" mylsp "C" "GREEN" mylsp "LW" "0.3" mylsp "") ;否则将指定的层置为当前
)
   (princ)
)
发表于 2011-2-22 19:48 | 显示全部楼层
自己刚弄了一些,不是很理想!

1:把选择对象转为0层
2:删除选择外所有图形
3:清理全部pu
4:缩放zoom_e
5:关闭线宽
6:全选
7:复制
8:不保存(或保存)关闭当前窗口
9:黏贴(在下一个窗口点鼠标左键)

过程中不要出现任何对话框和提示,
如果没有选择对象则不运行此程序,
此程序的快捷键可以自己定。
不知是否可行?????
(1、2、3 我做不到,4、5、6、7、8 cad本身可以做到。9 不能在下一个窗口自动激活!)
不知哪位大师方便,感激不尽了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 20:07 , Processed in 0.362588 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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