xskfq 发表于 2014-1-30 00:49:26

如何让LISP命令连贯起来?

比我我有2个支持框选的命令,我想用一个命令一次连贯起来实现,能做到吗??

-------------------------------------------------
例子

(defun fun1 ((command "_explode" (ssget) "")) (princ "\n Fun1...") (getpoint))
(defun fun2 ((command "erase" (ssget) "")) (princ "\n Fun2...") (getpoint))

(defun c:cy ()
    (and
      (fun1)
      (fun2)
      (cy)
    )
)

好像不行,错在哪里?
哪位高手指点下怎么改,谢谢!

xyp1964 发表于 2014-1-30 08:35:10

函数格式有误(defun fun1 ()
(command "_explode" (ssget))
(princ "\n Fun1...")
(getpoint "\np1: ")
(princ p1)
)
(defun fun2 ()
(command "erase" (ssget) "")
(princ "\n Fun2...")
(getpoint "\np2: ")
(princ p2)
)
(defun c:tt ()
(fun1)
(fun2)
(princ)
)

xskfq 发表于 2014-1-30 12:05:47

xyp1964 发表于 2014-1-30 08:35 static/image/common/back.gif
函数格式有误

赞一个。谢谢,,新年快乐!!

xskfq 发表于 2014-1-30 12:07:18

xyp1964 发表于 2014-1-30 08:35 static/image/common/back.gif
函数格式有误

现在需要一次命令+2次框选,可否优化为只要一次命令+1次框选?

xskfq 发表于 2014-1-30 12:45:12

去掉getpoint也可以用,getpoint有什么用处?
两个程序有什么不同???

---------------------------------------------------
(defun fun1 ()
(command "_explode" (ssget))
(princ "\n Fun1...")
(princ p1)
)
(defun fun2 ()
(command "erase" (ssget) "")
(princ "\n Fun2...")
(princ p2)
)
(defun c:tt ()
(fun1)
(fun2)
(princ)
)

ZZXXQQ 发表于 2014-1-30 12:50:31

(defun fun1 ()
(if (setq ss (ssget)) (progn
(setvar "QAFLAGS" 1)
(command "_explode" ss "")
(setvar "QAFLAGS" 0)
(princ "\n Fun1...")
))
(princ)
)
(defun fun2 ()
(if (or (setq ss (ssget "P")) (setq ss (ssget))) (progn
(command "erase" ss "")
(princ "\n Fun2...")
))
(princ)
)

(defun c:cy ()
(fun1)
(fun2)
(princ)
)

zmzk 发表于 2020-2-18 23:16:50

楼主你好,我有个打断的程序,想加入你们的程序里的第二段里,怎么加?你们的程序现在的第二段是删除,我想把它变成把所有物体打断的程序,如何加里边去?;;==========================================
;;      Break all objects selected      
;;==========================================
(defun c:breakall (/ cmd ss)

(command ".undo" "begin")
(setq cmd (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

;;get objects to break
(prompt "\nSelect All objects to break & press enter: ")
(if (setq ss (ssget '((0 . "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
   (Break_with ss ss nil) ; ss2break ss2breakwith (flag nil = not to break with self)
)

(setvar "CMDECHO" cmd)
(command ".undo" "end")
(princ)
)

香远益清 发表于 2020-2-25 17:27:12

(defun c: cy()
(setq pt (ssget (getpoint)))
(command "_explode" pt)
(command "erase" pt)
(princ)
)
页: [1]
查看完整版本: 如何让LISP命令连贯起来?