本人最近研究一键处理建筑底图程序,有问题请教各位
本帖最后由 124803430 于 2014-4-15 17:37 编辑(defun c:ee()
(while (setq n (tblnext "layer" (null n)))
(setq layername (cdr(assoc 2 n)))
(command "layer" "c" "8" layername)
(command "")
)
)
(defun c:ff()
(while (setq n (tblnext "layer" (null n)))
(setq layername (cdr(assoc 2 n)))
(command "layer" "c" "8" layername)
(command "")
)
(command "layer" "f" "*a-wind-iden" "")
(command "layer" "f" "*a-spac-iden" "")
(command "layer" "f" "*dim_iden" "")
(command "layer" "f" "*a-anno-levl""")
(command "layer" "f" "*a-anno-dims" "")
(command "layer" "f" "*a-grid" "")
(command "layer" "f" "*a-dim-iden" "")
(command "layer" "f" "*a-anno-note" "")
)
(defun c:za()
(setq qq (nentsel "\n 请选择需要冻结的图层:" ))
(setq qqname (car qq))
(setq lay (cdr(assoc 8 (entget qqname))))
(command "layer" "f" lay "")
) 我在用2014,外参照进来的图都是灰色的,不用改,建议用一下高版.
2008就不是灰色的,其它版不清楚. 本帖最后由 124803430 于 2014-4-15 17:33 编辑
因为我们这边底图都是外部参照,每个图参照过来的话图层显示会加竖向号,使得每个图层只有后面的名字相同,图层名本来不同
本人思路就是冻结几种特定图层,有些没冻结的图层就用手动关闭,然后图层全部改成8号灰色。但是因为外部参照图层图层名不一样。
只能使用通配符搜索功能,这样如果图层一多造成程序运行太慢。
如何能提高程序运行速度,给个思路或改进方法
变成8号色其实也挺慢的,这个程序不知道有改进方法没? 同求 kwok 发表于 2014-4-15 17:41 static/image/common/back.gif
我在用2014,外参照进来的图都是灰色的,不用改,建议用一下高版.
2008就不是灰色的,其它版不清楚.
高版本的CAD用起来机器太卡了。 人工顶贴~~~~~~~~ 没人回帖啊????
没人回帖啊???? 你可以用先用下面代码,然后插入为外部参照
;---------- 将所选对象设置为0-建筑底图 线性不变
(defun c:0T (/ ceng ss en dxf lt)
(setvar "cmdecho" 0)
(setq ceng "0-建筑底图")
(princ (strcat "\n---将所选对象设置为" ceng ",属性随层"))
(if (not (tblsearch "layer" ceng))
(command "_layer" "m" ceng "c" "8" ceng "lt" "Continuous" ceng "")
(command "layer" "s" ceng "c" "8" "" "lt" "Continuous" ceng "")
)
(while (setq ss (ssget ":s"))
(repeat (setq n (sslength ss))
(setq en (ssname ss (setq n (1- n))))
(setq dxf (entget en))
(if (not (cdr (assoc 6 dxf)))
(progn
(setq lt (cdr (assoc 6 (entget (tblobjname "layer" (cdr (assoc 8 dxf)))))))
(command "chprop" en "" "la" ceng "lw" "ByLayer" "lt" lt "")
)
(command "chprop" en "" "la" ceng "lw" "ByLayer" "")
)
)
(command "change" ss "" "p" "c" "bylayer" "lt" "" "la" ceng "lw" "bylayer" "")
)
(princ (strcat "\n---将所选对象设置为" ceng ",属性随层"))
(setvar "cmdecho" 1)
(princ)
)
这样的话除了块,其他的基本上都达到你的要求了,如果觉得块也要修改,请先用下面代码
;---------- 将块内所有对象更改到0图层,颜色随层。
(defun c:0t1 ( / e i l n ss x )
(if (setq ss (ssget '((0 . "INSERT"))))
(repeat (setq i (sslength ss))
(if (not (member (setq n (cdr (assoc 2 (entget (ssname ss (setq i (1- i))))))) l))
(progn
(setq e (tblobjname "block" n)
l (cons n l)
)
(while (setq e (entnext e))
(setq x (entget e))
(entmod (subst '(8 . "0") (assoc 8 x) x))
)
)
)
)
)
(command "_.regen")
(princ)
) tranney 发表于 2014-4-22 05:51 static/image/common/back.gif
你可以用先用下面代码,然后插入为外部参照
;---------- 将所选对象设置为0-建筑底图 线性不变
(defun c: ...
谢谢前辈,这个程序处理建筑图挺好的。
页:
[1]