t
无论如何,这已经太晚了。。。在初始运行时,您可以组成所有块名的列表,并从该列表中进行计数
(defun c:cntblk(/ allblocks n iblklst blkobj blkobjname)
(setq allblocks (ssget "_X" (List (cons 0 "INSERT"))))
(setq n (sslength allblocks))
(setq i 0)
(repeat n
(setq blkobj (ssname allblocks i))
(setq blkobjname (getEffectiveName blkobj))
(setq blklst (cons blkobjname blklst))
(setq i (1+ i))
)
(while (setq a (car blklst))
(prompt (strcat "\n" a "-----------------"
(itoa (- (length blklst) (length (setq blklst (vl-remove a blklst)))))
))
)
(princ)
)
正如李所说,它尽可能地接近您的原始代码
谢谢harilalmn,很高兴知道我的程序在全世界都得到了很好的使用,这很有帮助,因为我非常喜欢编写它们 李,当你在帮我的时候。
大约三天前,我写了一篇简短的文章:
(defun c:scx(/ ent Xnme clrs lst)
(vl-load-com)
(setq ent (ssget "_+.:S:E" '((0 . "INSERT"))))
(setq ent (entget (ssname ent 0)))
(if (= 4
(logand 4
(cdr (assoc 70
(tblsearch
"BLOCK"
(setq Xnme (cdr (assoc 2 ent))))))))
(progn
(setq clrs (acad_truecolordlg
'(420 . 8882055)
nil))
(command "_Layer" "_Color")
(while (> (getvar "cmdactive") 0)
(if (> (length clrs) 1)
(command
"TrueColor"
(progn
(setq lst(vl-princ-to-string
(LM:TRUE->RGB
(cdr (cadr clrs)))))
(setq lst(vl-string-translate
" "
","
lst))
(vl-symbol-name
(car (read lst)))
)
(strcat Xnme "*")
""
)
(command
(cdr (car clrs))
(strcat Xnme "*")
"")
)
)
)
(princ "\nNObject Selected Not an Xref:")
)
(princ)
)
它将外部参照的图层颜色更改为较浅的阴影(或用户选择的任何颜色)
今天早些时候,我的人问waht,我们是否希望它恢复到原始颜色?在调用此例程之前告诉他们使用图层状态保存图层信息。这样想比较容易。但是对于已屏蔽外部参照图层的现有图形,现在该怎么办?告诉他们再次分离并重新附着外部参照。我在想,也许通过lisp通过ODBX从源文件中检索层信息足够简单。或者使用你的绘画套路。
除此之外还有更简单的方法吗?
编辑:哎呀,忘了包括你的子程序Lee(LM:True->RGB),顺便说一句,到现在为止,它还不知道你是如何得出这些数字的
没问题harilalmn
很高兴为您服务
我将使用ObjectDBX与外部参照源文件进行交互,然后更改活动图形中与外部参照相关的图层的图层颜色,以匹配源文件中的图层颜色。
这听起来像是一个有趣的程序编写,所以我忍不住编码它-见附件。
你可以在这个感兴趣的帖子里找到我的帖子
重置外部参照图层。lsp
酷豆。。
谢谢你,李,我稍后会看一看,但只有在我试着自己做一个之后。。
李非常狡猾。谢谢
谢谢你提供的信息。 干杯pBe
页:
1
[2]