明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1758|回复: 7

[提问] 如何让LISP命令连贯起来?

[复制链接]
发表于 2014-1-30 00:49:26 | 显示全部楼层 |阅读模式
比我我有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)
    )
)

好像不行,错在哪里?
哪位高手指点下怎么改,谢谢!
发表于 2014-1-30 08:35:10 | 显示全部楼层
函数格式有误
  1. (defun fun1 ()
  2.   (command "_explode" (ssget))
  3.   (princ "\n Fun1...")
  4.   (getpoint "\np1: ")
  5.   (princ p1)
  6. )
  7. (defun fun2 ()
  8.   (command "erase" (ssget) "")
  9.   (princ "\n Fun2...")
  10.   (getpoint "\np2: ")
  11.   (princ p2)
  12. )
  13. (defun c:tt ()
  14.   (fun1)
  15.   (fun2)
  16.   (princ)
  17. )

评分

参与人数 1明经币 +1 收起 理由
flyfox1047 + 1 院长,大年三十大清早的就上来回贴了,赞!

查看全部评分

 楼主| 发表于 2014-1-30 12:05:47 | 显示全部楼层
xyp1964 发表于 2014-1-30 08:35
函数格式有误

赞一个。谢谢,,新年快乐!!
 楼主| 发表于 2014-1-30 12:07:18 | 显示全部楼层
xyp1964 发表于 2014-1-30 08:35
函数格式有误

现在需要一次命令+2次框选,可否优化为只要一次命令+1次框选?
 楼主| 发表于 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)
)
发表于 2014-1-30 12:50:31 | 显示全部楼层
  1. (defun fun1 ()
  2. (if (setq ss (ssget)) (progn
  3.   (setvar "QAFLAGS" 1)
  4.   (command "_explode" ss "")
  5.   (setvar "QAFLAGS" 0)
  6.   (princ "\n Fun1...")
  7. ))
  8. (princ)
  9. )
  10. (defun fun2 ()
  11. (if (or (setq ss (ssget "P")) (setq ss (ssget))) (progn
  12.   (command "erase" ss "")
  13.   (princ "\n Fun2...")
  14. ))
  15. (princ)
  16. )

  17. (defun c:cy ()
  18. (fun1)
  19. (fun2)
  20. (princ)
  21. )
发表于 2020-2-18 23:16:50 | 显示全部楼层
楼主你好,我有个打断的程序,想加入你们的程序里的第二段里,怎么加?你们的程序现在的第二段是删除,我想把它变成把所有物体打断的程序,如何加里边去?
  1. ;;==========================================
  2. ;;        Break all objects selected        
  3. ;;==========================================
  4. (defun c:breakall (/ cmd ss)

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

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

  13.   (setvar "CMDECHO" cmd)
  14.   (command ".undo" "end")
  15.   (princ)
  16. )
发表于 2020-2-25 17:27:12 | 显示全部楼层
(defun c: cy()
  (setq pt (ssget (getpoint)))
(command "_explode" pt)
(command "erase" pt)
(princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 07:19 , Processed in 0.197370 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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