明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2645|回复: 12

[源码] 两个程序有冲突,该如何改?

[复制链接]
发表于 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" "")))
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-4-30 07:56:17 | 显示全部楼层
看不出来
 楼主| 发表于 2013-4-30 13:46:03 | 显示全部楼层
图层切换的程序就不能用了:

命令: 1 change 找到 1 个
指定修改点或 [特性(P)]:
需要点或选项关键字。
; 错误: 函数被取消
指定修改点或 [特性(P)]: 未选择可修改的对象
 楼主| 发表于 2013-4-30 13:50:19 | 显示全部楼层
ZZXXQQ 发表于 2013-4-30 07:56
看不出来

那个“p”有问题了
发表于 2013-5-1 00:19:36 | 显示全部楼层
改成这样试试:
(command "change" ss "" "p" "la" "0" "c" "bylayer" "lw" "bylayer" "lt" "bylayer" "")
 楼主| 发表于 2013-5-1 11:16:28 | 显示全部楼层
ZZXXQQ 发表于 2013-5-1 00:19
改成这样试试:
(command "change" ss "" "p" "la" "0" "c" "bylayer" "lw" "bylayer" "lt" "bylayer" "")

试过了,还是不行啊,请问有没有办法该前一个程序呢?
 楼主| 发表于 2013-5-3 20:04:08 | 显示全部楼层
顶一下,哪位有空帮改一下,谢谢了
发表于 2013-5-3 20:52:14 | 显示全部楼层
669423907 发表于 2013-5-3 20:04
顶一下,哪位有空帮改一下,谢谢了

(defun c:dac()改成(defun c:dac(/ ss )
(defun c:1()改成(defun c:1( /ss)
试试
 楼主| 发表于 2013-5-4 09:24:01 | 显示全部楼层
夏生生 发表于 2013-5-3 20:52
(defun c:dac()改成(defun c:dac(/ ss )
(defun c:1()改成(defun c:1( /ss)
试试

谢谢你,程序提示缺少参数
发表于 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)试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 20:31 , Processed in 0.196688 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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