自动填写
大家好,我不确定你以前是否这样做过。我试图搜索,但似乎以前没有人遇到过这种麻烦。我试图使用标题栏信息和标签TITLE-1到TITLE-4来填写摘要选项卡上的绘图属性,从标题、主题、作者、分别与TITLE-1、TITLE-2、TITLE-3和TITLE-4匹配的关键字开始。见附件。
有可能在这里完成吗?提前谢谢。
您需要在自定义选项卡中,而不是摘要中。 查看ActiveDocument对象的SummaryInfo属性。 我把这个问题当成是问标题栏信息而不是搜索信息。我把问题看错了吗? 谢谢你,李。尽管如此,我不确定我是否说清楚了。我想知道是否有人有一个例程来提取和填充带有以下属性标记的标题栏信息的Dwgprops对话框:TITLE-1、TITLE-2、TITLE-3和TITLE-4。因此假设有一个名为TITLEBLOCK的块,其中包含TITLE1-4属性。我希望能够将该信息直接传输到图形属性中,如jpeg所示。希望这次我说清楚了。
我明白了,您需要查询的是SummaryInfo对象。
例如,填充图形特性,然后运行以下代码以显示SummaryInfo对象的特性和方法:
(vlax-dump-object
(vla-get-SummaryInfo
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
t
) 啊,我运行了它,让Autocad列出了这些图形属性。谢谢你,李。那么,有没有一种方法可以通过lisp从标题栏属性更新summaryInfo中的信息?如何在summaryinfo中分配变量以与标题栏本身中的属性匹配?任何帮助都将不胜感激。
; Title=“Title-1”
; 主题=“标题-2”
; 作者=“TITLE-3”
; 关键词=“TITLE-4”
这是一个lisp,我需要修改以使其工作,但是,我不知道如何要求它从标题栏中获取这些属性值,并以这种方式更新dwgprops摘要选项卡。
;;;initialize DWGPROPS if it does not exist
;;;this is stripped down, you can add more to it, if you wish
(defun dp:init ()
(if (and (zerop (getvar "DWGTITLED")) (not (dp:get)))
(progn
(setq ;dp:Title (val 2)<-could be extracted from Title block via LISP
;dp:Subject (val 3)
dp:Author "Your Organization"
;dp:Keywords (val 7)
dp:RevisionNo "0"
dp:Cust0 (val 300)<-1st Custom Property
dp:Cust1 (val 301)<-2nd Custom Property
;
)
(dput)
(setvar "CMDECHO" 0)
(command "_.QSAVE")
(setvar "CMDECHO" 1)
)
)
(princ)
);dp:init
(dp:init)
pBe,
仅提供我的意见,如果你愿意,请忽略它:
您的代码实现的算法效率极低(我再强调也不过分)-让我解释一下原因:
对于每个属性,您的代码不仅遍历图形中的每个块,而且遍历图形中的每个对象。
因此,您将遍历图形中的每个对象,重复四次。
此外,您还使用图形中指定的名称迭代每个属性块的所有属性,也迭代了四次。
注意,在我的方法中,我只对单个属性块的属性迭代一次。我提出的关键点和提高程序效率的最有效方法是最大限度地减少程序对信息的迭代次数(如果可能的话,一次)。
李 是的,你的很有魅力,李。但我要感谢你们,pBe和李,为我们提供了如此精彩的节目。是的,李,不是每个人都像你这样高效的编程。但是,我们只能在李和论坛其他人的建议和支持下学习和发展我们的编程技能。再次感谢。
李,我一直很重视你的意见。我还能学到什么。再看一遍代码,你完全正确了4(四)(1+1+1+1)(IV)次,对每个标记名调用sub,对每个调用搜索块。
非常感谢李。
你是welocme kam1967
简洁明了就到此为止
不过谢谢你
(好吧,回到绘图板)
页:
[1]
2