vernonlee 发表于 2022-7-5 20:22:51

帮助:建议如何提高照明

在图形中,有带有文本属性的门标记块,例如,1-1,1-2。。。。。
 
在excel中,我有一列门标签,其文字对应于图纸中的文字,例如,1-1、1-2。。。。。。
 
在这个excel中,我突出显示或过滤了某些门标签,例如2-55、2-89
 
如何最好地通过lisp或脚本在图形中高亮显示相应的门?
 
我愿意尝试不同的方法。
 
谢谢

Tharwat 发表于 2022-7-5 20:28:54

如果你能用excel文件上传包含目标属性块的样例图形,我会一次性为你编写一个程序以节省时间。

vernonlee 发表于 2022-7-5 20:33:28

 
谢谢兄弟。
 
我会在午餐时间做这件事,并尽快寄出去。

vernonlee 发表于 2022-7-5 20:35:37

随附图纸和excel文件。
 
谢谢
 
 
门标签。图纸
门标签。xls公司

Tharwat 发表于 2022-7-5 20:40:27

首先将Excel文件另存为csv格式,以便能够使用以下程序进行选择,因为GetField函数不支持其他Excel格式。
 
其次,试试这个程序,让我知道
 

(defun c:test (/ ss s f o ex x)
;;    Tharwat 08.01.2014    ;;
(cond
   ((not (setq
         ss
            (ssget
            "_X"
            (list '(0 . "INSERT") '(66 . 1) (cons 410 (getvar 'CTAB)))
            )
         )
    )
    (alert "No Attributed Blocks found in drawing !!")
   )
   ((and (setq f (getfiled "Select Excel file :"
                           (getvar 'DWGPREFIX)
                           "csv"
                           16
               )
         )
         (setq o (open f "r"))
    )
    (read-line o)
    (while (setq x (read-line o))
      (setq l (cons (if (setq ex (vl-string-search
                                 ";"
                                 x
                                 )
                        )
                      (substr x
                              1
                              ex
                      )
                      x
                  )
                  l
            )
      )
    )
    (close o)
    (setq s (ssadd))
    (repeat (setq i (sslength ss))
      (mapcar '(lambda (a)
               (if (member (vla-get-textstring a) l)
                   (ssadd sn s)
               )
               )
            (vlax-invoke
                (vlax-ename->vla-object
                  (setq sn (ssname ss (setq i (1- i))))
                )
                'getattributes
            )
      )
    )
   )
)
(sssetfirst nil s)
(princ)
)

vernonlee 发表于 2022-7-5 20:42:45

按指示执行。
1.excel另存为CSV
2、打开图纸。
3、负荷试验。lsp
3.运行测试(选择CSV文件)
 
但什么也没发生。 
 
 

vernonlee 发表于 2022-7-5 20:47:22

我刚刚意识到,当保存为CSV时,所有的颜色都消失了&门文本更改为日期格式。

vernonlee 发表于 2022-7-5 20:49:15

嗨Tharwat
 
作为Pmed,我等待你修改代码。
 
谢谢

Tharwat 发表于 2022-7-5 20:52:02

 
你好
 
尝试修改后的程序,应该与txt文件格式,在这里我上传了txt文件为您的测试
 

(defun c:test (/ ss s f o ex x l i sn)
;;    Tharwat 08.01.2014    ;;
(cond
   ((not (setq
         ss
            (ssget
            "_X"
            (list '(0 . "INSERT") '(66 . 1) (cons 410 (getvar 'CTAB)))
            )
         )
    )
    (alert "No Attributed Blocks found in drawing !!")
   )
   ((and (setq f (getfiled "Select Excel file :"
                           (getvar 'DWGPREFIX)
                           "txt"
                           16
               )
         )
         (setq o (open f "r"))
    )
    (read-line o)
    (while (setq x (read-line o))
      (setq l (cons x
                  l
            )
      )
    )
    (close o)
    (setq s (ssadd))
    (repeat (setq i (sslength ss))
      (mapcar '(lambda (a)
               (if (member (vla-get-textstring a) l)
                   (ssadd sn s)
               )
               )
            (vlax-invoke
                (vlax-ename->vla-object
                  (setq sn (ssname ss (setq i (1- i))))
                )
                'getattributes
            )
      )
    )
   )
)
(sssetfirst nil s)
(princ)
)

门标签。txt文件

vernonlee 发表于 2022-7-5 20:56:44

谢谢塔瓦。
我已经测试过了。
 
通常它会选择上传的TXT文件中反映的所有标签。
 
但是,我注意到,如果对包含不同标记集的TXT文件重复该命令,它仍然会根据第一个TXT选择标记。
 
然后关闭并重新打开图形文件,并执行了命令,但基于第二个TXT文件,它只选择了特定的标记。然后我在你上传的TXT文件上重复这个命令&它根据你上传的TXT文件选择了标签。
 
希望你能解决。
 
 
 
页: [1] 2
查看完整版本: 帮助:建议如何提高照明