uvyx 发表于 2016-1-18 17:22:31

想做个快速命令选择对象的程序,请大虾们完善一下,谢谢!

缺少了一些判断、错误处理的方法,但又不知道怎么合理地添加,请大虾们帮我完善一下!我是新手
以下是程序:
(defun c:ssg1(/ ent)
    (setq ent (getstring "\n请输入选项 <B>:"))
    (if (= ent "") (setq ent "B"))
    (cond
      ((= (strcase ent) "B") (princ "\n选择:") (ssget '((8 . "边界线(BO)"))))
      ((= (strcase ent) "C") (princ "\n选择[颜色(C)]:")   (ssget (list '(-4 . "<OR") (cons 62 (getINT "\n颜色号<0-256>:")) '(-4 . "OR>"))))
      ((= (strcase ent) "D") (princ "\n选择[标注(D)]:")   (ssget '((0 . "DIMENSION"))))
      ((= (strcase ent) "H") (princ "\n选择[填充(H)]:")   (ssget '((0 . "HATCH"))))
      ((= (strcase ent) "T") (princ "\n选择[文本(T)]:")   (ssget '((0 . "*TEXT"))))
      (t (princ "\n输入有误,操作退出!") (exit))
    )
    (setq moco (getstring "\n[移动(A)/复制(C)] <A>:"))
    (if (= moco "") (setq moco "A"))
    (cond
      ((= (strcase moco) "A") (command "move" "p" ""))
      ((= (strcase moco) "C") (command "copy" "p" ""))
      (t (princ "\n输入有误,操作退出!") (exit))
    )
    (princ)
)

琴剑江山_10184 发表于 2016-1-19 11:35:50

;;;;2016.1.19琴剑江山编写
(defun c:ss (/ EN ENT GET SEL SS)
    (vl-load-com)
    (initget "D H T")
    (setq ent (getkword "\n请输入选项 [标注(D)/填充(H)/文本(T)] 默认<颜色或图层>:"))   
    (cond      
      ((= ent "D") (setq en '(0 . "DIMENSION") ss "\n过滤选择标注"))
      ((= ent "H") (setq en '(0 . "HATCH") ss "\n过滤选择填充"))
      ((= ent "T") (setq en '(0 . "*TEXT") ss "\n过滤选择文字"))
      (t
(and (setq sel (entsel "\n选择参照对象 <退出>:"))
       (setq en (vla-get-Color (vlax-ename->vla-object (car sel))))
       (if (= en 256)
         (setq en(cons 8 (vla-get-Layer (vlax-ename->vla-object (car sel))))
         ss"\n过滤选择图层")
         (setq en(cons 62 en)
         ss"\n过滤选择颜色")
       );if
);and
      )
   );cond
       (and en
      (princ ss)
      (setq get (ssget (list en)))
      (sssetfirst nil get)
       )
(princ)
)
   
;;这个是帮你选中对象,夹头显示出来,然后你还要做其它的操作,比如删除,移动,复制等,直接用CAD命令就行了

uvyx 发表于 2016-1-19 15:24:44

琴剑江山_10184 发表于 2016-1-19 11:35 static/image/common/back.gif
;;这个是帮你选中对象,夹头显示出来,然后你还要做其它的操作,比如删除,移动,复制等,直接用CAD命令就 ...

谢谢分享,我研究研究下!

uvyx 发表于 2016-1-19 16:02:20

琴剑江山_10184 发表于 2016-1-19 11:35 static/image/common/back.gif
;;这个是帮你选中对象,夹头显示出来,然后你还要做其它的操作,比如删除,移动,复制等,直接用CAD命令就 ...

再请教一下
下面的简单程序怎么可以“夹头显示出来”
(defun C:t1 (/ ent)
(setq ent (ssget '((0 . "*TEXT"))))
)

琴剑江山_10184 发表于 2016-1-19 17:26:35

uvyx 发表于 2016-1-19 16:02 static/image/common/back.gif
再请教一下
下面的简单程序怎么可以“夹头显示出来”
(defun C:t1 (/ ent)


(defun C:t1 (/ ent)
(sssetfirst nil (ssget '((0 . "*TEXT"))))
)

uvyx 发表于 2016-1-19 17:49:01

琴剑江山_10184 发表于 2016-1-19 17:26 static/image/common/back.gif
(defun C:t1 (/ ent)
(sssetfirst nil (ssget '((0 . "*TEXT"))))
)

谢谢!!!
页: [1]
查看完整版本: 想做个快速命令选择对象的程序,请大虾们完善一下,谢谢!