pBe 发表于 2022-7-6 09:31:57

李是对的。即使使用选择过滤器,也不会选择动态块的有效名称,并且没有必要选择两次对象
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)
)
 
正如李所说,它尽可能地接近您的原始代码

Lee Mac 发表于 2022-7-6 09:39:03

 
谢谢harilalmn,很高兴知道我的程序在全世界都得到了很好的使用,这很有帮助,因为我非常喜欢编写它们

pBe 发表于 2022-7-6 09:41:31

李,当你在帮我的时候。
 
大约三天前,我写了一篇简短的文章:
 
(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),顺便说一句,到现在为止,它还不知道你是如何得出这些数字的

pBe 发表于 2022-7-6 09:46:29

 
没问题harilalmn
很高兴为您服务

Lee Mac 发表于 2022-7-6 09:49:23

 
我将使用ObjectDBX与外部参照源文件进行交互,然后更改活动图形中与外部参照相关的图层的图层颜色,以匹配源文件中的图层颜色。
 
这听起来像是一个有趣的程序编写,所以我忍不住编码它-见附件。
 
 
你可以在这个感兴趣的帖子里找到我的帖子
重置外部参照图层。lsp

pBe 发表于 2022-7-6 09:51:35

 
酷豆。。
谢谢你,李,我稍后会看一看,但只有在我试着自己做一个之后。。

pBe 发表于 2022-7-6 09:55:10

 
李非常狡猾。谢谢
 
 
谢谢你提供的信息。

Lee Mac 发表于 2022-7-6 09:59:06

干杯pBe
页: 1 [2]
查看完整版本: 搜索列表中的项目