明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1592|回复: 7

[提问] 图层合并程序,怎样阻止出现CAD文本窗口?

[复制链接]
发表于 2015-8-25 09:09:21 | 显示全部楼层 |阅读模式
  1. (defun assod ( num info)
  2. (cdr (assoc num info))
  3. )
  4. (defun c:tcb ( / n i s mm_lay *error* lty ltn tlist )
  5. (defun *error*(s)
  6. (setvar 'cmdecho 0)
  7. (SETVAR 'NOMUTT 0)
  8. (command "_.undo" "e")
  9. (setvar 'cmdecho 1)
  10. )
  11. (if (null (tblsearch  "layer" "01基本设备"))
  12. (progn (setq mm_lay (getvar "CLAYER"))
  13. (setvar "cmdecho" 0 )
  14. (command "_layer" "m" "01基本设备" "c" "7" "" "l" "Continuous" ""  "lw" "0.35" "01基本设备" "")
  15. (setvar "cmdecho" 1 )
  16. (setvar "clayer" mm_lay )))

  17. (if (null (tblsearch  "layer" "02标注"))
  18. (progn (setq mm_lay (getvar "CLAYER"))
  19. (setvar "cmdecho" 0 )
  20. (command "_layer" "m" "02标注" "c" "3" "" "l" "Continuous" ""  "lw" "0.18" "02标注" "")
  21. (setvar "cmdecho" 1 )
  22. (setvar "clayer" mm_lay )))

  23. (if (null (tblsearch "layer" "03中心线"))
  24. (progn (setq mm_lay (getvar "CLAYER"))
  25. (setvar "cmdecho" 0 )
  26. (command "_layer" "m" "03中心线" "c" "1" "" "l" "center" "" "lw" "0.18" "03中心线" "")
  27. (setvar "cmdecho" 1 )
  28. (setvar "clayer" mm_lay )))

  29. (if (null (tblsearch "layer"  "04虚线"))
  30. (progn (setq mm_lay (getvar "CLAYER"))
  31. (setvar "cmdecho" 0 )
  32. (command "_layer" "m" "04虚线" "c" "2" "" "l" "DASHED" ""  "lw" "0.18" "04虚线" "")
  33. (setvar "cmdecho" 1 )
  34. (setvar "clayer" mm_lay )))

  35. (if (null (tblsearch "layer" "05双点划线"))
  36. (progn (setq mm_lay (getvar "CLAYER"))
  37. (setvar "cmdecho" 0 )
  38. (command "_layer" "m" "05双点划线" "c" "175" "" "l" "divide" "" "lw" "0.18" "05双点划线" "")
  39. (setvar "cmdecho" 1 )
  40. (setvar "clayer" mm_lay )))

  41. (if (null (tblsearch "layer"  "06文字"))
  42. (progn (setq mm_lay (getvar "CLAYER"))
  43. (setvar "cmdecho" 0 )
  44. (command "_layer" "m" "06文字" "c" "6" "" "l" "Continuous" ""  "lw" "0.18" "06文字" "")
  45. (setvar "cmdecho" 1 )
  46. (setvar "clayer" mm_lay )))


  47. (if (null (tblsearch "layer"  "07粗实线"))
  48. (progn (setq mm_lay (getvar "CLAYER"))
  49. (setvar "cmdecho" 0 )
  50. (command "_layer" "m" "07粗实线" "c" "7" "" "l" "Continuous" ""  "lw" "0.35" "07粗实线" "")
  51. (setvar "cmdecho" 1 )
  52. (setvar "clayer" mm_lay )))

  53. (if (null (tblsearch "layer"  "08细实线"))
  54. (progn (setq mm_lay (getvar "CLAYER"))
  55. (setvar "cmdecho" 0 )
  56. (command "_layer" "m" "08细实线" "c" "251" "" "l" "Continuous" ""  "lw" "0.18" "08细实线" "")
  57. (setvar "cmdecho" 1 )
  58. (setvar "clayer" mm_lay )))
  59. (setq i 0)
  60. (setvar 'cmdecho 0)
  61. (command "_.undo" "be")
  62. (SETVAR 'NOMUTT 1)

  63. (setq
  64. t0 "0"
  65. t1  "01基本设备"
  66. t2  "02标注"
  67. t3  "03中心线"
  68. t4  "04虚线"
  69. t5  "05双点划线"
  70. t6  "06文字"
  71. t7  "07粗实线"
  72. t8  "08细实线"
  73. )
  74. (setq tlist (list t0 t1 t2 t3 t4 t5 t6 t7 t8))
  75. (setq s(tblnext "layer" T))
  76. (setq lty(assod 6 s))
  77. (setq ltn(assod 2 s))

  78. (while (/= s nil)
  79. (if (= (member ltn tlist) nil)
  80. (progn
  81. (cond
  82. ((wcmatch ltn "*标*注*")
  83. (command "-laymrg" "n" ltn "" "n" t2 "y")
  84. )
  85. ((wcmatch ltn "*文*字*")
  86. (command "-laymrg" "n" ltn "" "n" t6 "y")
  87. )
  88. ((wcmatch ltn "*中*线*")
  89. (command "-laymrg" "n" ltn "" "n" t3 "y")
  90. )
  91. ((wcmatch ltn "*虚*线*")
  92. (command "-laymrg" "n" ltn "" "n" t4 "y")
  93. )
  94. ;((wcmatch ltn "~细*实线*")
  95. ;(command "-laymrg" "n" ltn "" "n" t1 "y")
  96. ;)
  97. ((wcmatch lty "*CENTER*")
  98. (command "-laymrg" "n" ltn "" "n" t3 "y")
  99. )
  100. ((wcmatch lty "*DASH*")
  101. (command "-laymrg" "n" ltn "" "n" t4 "y")
  102. )
  103. ((wcmatch lty "*DIVIDE*")
  104. (command "-laymrg" "n" ltn "" "n" t5 "y")
  105. )
  106. (T
  107. (command "-laymrg" "n" ltn "" "n" t8 "y")
  108. ))
  109. (setq i(1+ i)))
  110. )
  111. (setq s(tblnext "layer" ))
  112. (setq lty(assod 6 s))
  113. (setq ltn(assod 2 s))
  114. )
  115. (command "regen")
  116. (SETVAR 'NOMUTT 0)
  117. (command "_.undo" "e")
  118. (if(/= i 0)(princ "\n完成图层合并。")(princ "\n图层不需要合并。"))
  119. (setvar 'cmdecho 1)
  120. (prin1)
  121. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-8-25 13:41:23 | 显示全部楼层
命令: laymrg

Initializing...

Select object on layer to merge or [Type-it/Undo]: *取消*

函数被取消
命令: -laymrg
未知命令“-LAYMRG”。按 F1 查看帮助。
 楼主| 发表于 2015-8-25 15:27:27 | 显示全部楼层
机械工程师 发表于 2015-8-25 13:41
命令: laymrg

Initializing...

你的CAD版本太低了吧?没有laymrg命令,我的是2011
发表于 2015-8-25 18:17:20 | 显示全部楼层
不用laymrg不就好了。将图层上的对象刷到指定层上去,再清除图层,不就好了?
 楼主| 发表于 2015-8-26 19:27:10 | 显示全部楼层
edata 发表于 2015-8-25 18:17
不用laymrg不就好了。将图层上的对象刷到指定层上去,再清除图层,不就好了?

假如你收到的图有几十个图层,你又要分类,怎么办?
发表于 2015-8-26 20:50:46 | 显示全部楼层
yjr111不是有图层合并的程序吗?
发表于 2015-8-26 20:57:55 | 显示全部楼层
图层合并几乎等于该图层的对象图层改变,你实现了这个图层变更,那么也就合并成功了。
你因该知道,老版本没这个命令,那么老版本怎么办,还不是用改变图层的方法,结果是一样的。
所以改变你的思路吧,不一定依赖command命令来实现你的目的。
要么忍受command的副作用,要么变通方式,自己改变。
 楼主| 发表于 2015-8-27 09:22:49 来自手机 | 显示全部楼层
edata 发表于 2015-8-26 20:57
图层合并几乎等于该图层的对象图层改变,你实现了这个图层变更,那么也就合并成功了。
你因该知道,老版本 ...

你回复的字体挺多的,谢谢了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 09:41 , Processed in 0.204267 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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