Lee Mac 发表于 2022-7-6 09:09:14

也许可以使用这个线程中的“setAttributeValue”函数。

lamensterms 发表于 2022-7-6 09:12:18

谢谢你的提示李,我会有一个裂缝一个调整的代码,然后再给你。
 
干杯

lamensterms 发表于 2022-7-6 09:18:26

再次感谢李,我设法调整代码以满足我的要求。
 
我让它在两个不同的块中更新不同标签的值,效果很好。
 
;; Set Attribute Values-Lee Mac
;; Sets the block attributes whose tags are found in the supplied
;; association list to their associated values.

(defun LM:SetAttributeValues ( block lst / elist item )
   (if
       (eq "ATTRIB"
         (cdr
               (assoc 0
                   (setq elist
                     (entget (setq block (entnext block)))
                   )
               )
         )
       )
       (if (setq item (assoc (strcase (cdr (assoc 2 elist))) lst))
         (progn
               (if (setq elist (entmod (subst (cons 1 (cdr item)) (assoc 1 elist) elist)))
                   (entupd (cdr (assoc -1 elist)))
               )
               (LM:SetAttributeValues block lst)
         )
         (LM:SetAttributeValues block lst)
       )
   )
)




(defun c:UPDATETITLEBLOCK ( / ss data i )
   (if (setq ss (ssget "_X" '((0 . "INSERT") (66 . 1) (2 . "PDCTITLE,PDCREV"))))
       (progn
         (setq data
            '(
                   ("PDCDATECHK" . "07/11/2011")
                   ("PDCISSUEREV" . "0")
               )
         )                  
         (repeat (setq i (sslength ss))
               (LM:SetAttributeValues (ssname ss (setq i (1- i))) data)
         )
       )
   )
   (princ)
)

(c:UPDATETITLEBLOCK)


 
再次感谢朋友。

Lee Mac 发表于 2022-7-6 09:18:55

杰出的很高兴你能利用它

BIGAL 发表于 2022-7-6 09:23:43

Hi Irnerb只是一个建议,喜欢你的工作有多快,可能会添加几个预设值到拨号绘图器名称和自动今天日期等

irneb 发表于 2022-7-6 09:25:41

比格尔,当然。。。尽管我会通过lisp调用来设置tile。特别是今天的日期。否则,每次想使用DCL时都需要重写它——这并非不可能,但似乎需要做更多的工作。
 
实际上,我更喜欢使用set\u tile初始化对话框中的任何值。这样,您甚至可以很容易地记住用户的最后一个输入作为默认值。甚至可以使用其他方法计算默认值,例如默认为现有属性值。
 
作为如何在我之前发布的DCL代码中设置修订日期的默认值的示例。假设DCL位于名为DwgUpdate的文件中。DCL和一个支持文件夹中。此外,我还展示了使用ISO标准格式化的日期(即YYYY-MM-DD…不太难将其更改为您想要的):
对不起。。unload_对话框位于错误的位置。

lamensterms 发表于 2022-7-6 09:30:58

大家好,
 
回到任务的自动化方面-李。。。我看了一下你的编剧,我遇到的问题是,我希望LISP例程在某个目录中的所有DWG上运行。目录总是相同的,但其中的DWG几乎总是不同的。我读了一些关于编译DWG列表并将该列表合并到的内容。SCR。但我希望有一条更直接的道路。
 
有没有可能让一个脚本在某个目录中打开一堆DWG(目录是恒定的),然后在它们上运行LISP例程?我希望不必每次都选择目录,因为在理想情况下,我将创建一个工具栏按钮,用户可以点击该按钮,然后开始该过程-无需其他操作。
 
再次感谢你的帮助,朋友。

BIGAL 发表于 2022-7-6 09:33:55

您可以编写一个lisp,然后编写脚本最后一行是(命令“script”“myscript”)
 
以下是findfile例程的示例:http://www.cadtutor.net/forum/showthread.php?51091-acad。fas virus&highlight=virus在底部,它可能有一个硬代码目录来搜索*。dwg和使用(writeline scriptline f)
 
这里还有另一个使用findfile的例子,肯定会有人发布。如果提供了驱动器/目录前缀,请参阅帮助。文件仅在该目录中查找

lamensterms 发表于 2022-7-6 09:35:41

谢谢你的回复。
 
基于该查找文件例程,第一个LISP例程是否可以编译certian目录中的DWG列表,然后在每个找到的DWG上运行脚本,并且脚本可以打开>运行第二个LISP>然后关闭?
 
我将研究foreach和findfile函数,看看能否让它们编译一个列表。包含在特定目录(但不是子文件夹)中的DWG。。看看会发生什么。有什么建议吗?
 
这听起来可能是一个不错的选择。
 
我还发现了这个。。。http://www.cadtutor.net/forum/showthread.php?13565-批量清除和审核&p=263508&viewfull=1#post263508
 
但我恐怕对视觉Lisp程序一无所知。
 
再次感谢你的帮助比格尔。

irneb 发表于 2022-7-6 09:38:45

在我看来,你有两个选择:
 
[列表=1]
[*]让您的lisp调用脚本以打开下一个图形并再次启动lisp。
[*]让脚本依次打开每个图形
页: 1 [2]
查看完整版本: .BAT。SCR将用于运行