669423907 发表于 2013-4-29 23:03:41

两个程序有冲突,该如何改?

运行第一个程序 q3 后,第二个程序(图层切换)就不能运行了,该怎么该第一个程序 q3 呢?
诚望解答。谢谢。

;(无痕.2004.4+菡萏.2012.04.09,炸组(wwwliuyu 2008.08.21)炸开嵌套块或组-阿甘改于2012.7.14 苏利宝合并于2013.04.28
(defun c:q3(/ *error* ent gr i msg n qf ss s1)
(defun *error* (msg)
(setvar "qaflags" qf)
(princ msg)
(princ))
(setq qf (getvar "qaflags"))
(setvar "qaflags" 1)
(princ "\n选择要炸开的块或组")
(setq ss (ssget))
(setq n (sslength ss))
(command "undo" "be")
(setq i (- n 1))
(setq s1 (ssadd))
(repeat n                               ; 先删除组
(setq ent (ssname ss i))
(ssadd ent s1)
(setq gr (cdr (assoc 0 (entget (cdr (assoc 330 (entget ent)))))))
(if (= "GROUP" gr)
(entdel (cdr (assoc 330 (entget ent)))))
(setq i (1- i)))
(while (setq ss (ssget "p" '((0 . "INSERT")))) ; 再炸开嵌套块
(command ".explode" ss ""))
(setq n 0)
(repeat (sslength (ssget "p"))   
(ssadd (ssname (ssget "p") n) s1)
(setq n (1+ n)))
(setvar "qaflags" qf)
(command "select" s1 "")
(c:dac)
(princ))
运行 程序


;输出CAD→Creo.dwg到桌面(x_s_s_1 2013.04.27 http://bbs.mjtd.com/thread-101127-1-1.html)
(defun c:dac()
(setq ss (ssget "p" '((8 . "0"))))
(if      (findfile "E:\\00\\0.dwg" )
(command "-WBLOCK" "E:\\00\\0.dwg" "y" "" 0 ss "")
(command "-WBLOCK" "E:\\00\\0.dwg" "" 0 ss ""))
(command ".oops")
(command "undo" "e")
(command "u")
(princ))



(defun c:1()
(setq ss (ssget"i"))
(if (= ss nil)
(command "layer" "m" "0" "c" "253" "" "lw" "0.3" "" "")
(command "change" ss "" "p" "la" "0" "c" "byl" "lw" "byl" "lt" "byl" "")))

ZZXXQQ 发表于 2013-4-30 07:56:17

看不出来

669423907 发表于 2013-4-30 13:46:03

图层切换的程序就不能用了:

命令: 1 change 找到 1 个
指定修改点或 [特性(P)]:
需要点或选项关键字。
; 错误: 函数被取消
指定修改点或 [特性(P)]: 未选择可修改的对象

669423907 发表于 2013-4-30 13:50:19

ZZXXQQ 发表于 2013-4-30 07:56 static/image/common/back.gif
看不出来

那个“p”有问题了

ZZXXQQ 发表于 2013-5-1 00:19:36

改成这样试试:
(command "change" ss "" "p" "la" "0" "c" "bylayer" "lw" "bylayer" "lt" "bylayer" "")

669423907 发表于 2013-5-1 11:16:28

ZZXXQQ 发表于 2013-5-1 00:19 static/image/common/back.gif
改成这样试试:
(command "change" ss "" "p" "la" "0" "c" "bylayer" "lw" "bylayer" "lt" "bylayer" "")

试过了,还是不行啊,请问有没有办法该前一个程序呢?

669423907 发表于 2013-5-3 20:04:08

顶一下,哪位有空帮改一下,谢谢了

夏生生 发表于 2013-5-3 20:52:14

669423907 发表于 2013-5-3 20:04 static/image/common/back.gif
顶一下,哪位有空帮改一下,谢谢了

(defun c:dac()改成(defun c:dac(/ ss )
(defun c:1()改成(defun c:1( /ss)
试试

669423907 发表于 2013-5-4 09:24:01

夏生生 发表于 2013-5-3 20:52 static/image/common/back.gif
(defun c:dac()改成(defun c:dac(/ ss )
(defun c:1()改成(defun c:1( /ss)
试试

谢谢你,程序提示缺少参数

ll_j 发表于 2013-5-4 10:29:23

把(defun c:q3(/ *error* ent gr i msg n qf ss s1)改成(defun c:q3(/ ent gr i msg n qf s1)试试。
页: [1] 2
查看完整版本: 两个程序有冲突,该如何改?