多亏了LM的站点,我知道错误是由“程序试图使用vla集合对象的item方法访问该集合中不存在的项”引起的
第一件事:它是长程序的一部分(我设法找到了我出错的确切点)。
第二件事:我所有的文件都在(同一个)机顶盒打印样式表上
第三件事:在所有文件中,冒犯层列表是正确的(我的dcl ie返回的所有非黑色层列表(“0”Defpoints“BOLT”),以及(层)(包含#)也是正确的
第四件事:红色是产生误差的vla函数
- (defun ApplyBlackPS ( $offendinglayerlistfromdcl$ / l)
- (vlax-for l (layers)
- (if (and (not (equal (vlax-get-property l 'PlotStyleName) "Black"));case sensitive!
- (member (vla-get-name l) $offendinglayerlistfromdcl$)
- )
- [color=red](vlax-put-property l 'PlotStyleName "Black")[/color]
- )
- )
- )
使用(applyblackps冒犯层列表)。。。在“我的文件”(共3个)的1个上,它按预期工作,并将打印样式更改为黑色。在其他2个(共3个)文件中,我得到“错误:自动错误。找不到密钥”
也许我必须“刷新”属性?我试图寻找,但没有找到。我检查了所有文件中图层的dxf列表,没有任何差异。我一无所知,需要一些指导。谢谢
编辑:如果我手动更改打印样式表并将其放置在除黑色以外的任何其他颜色上,则错误文件的结果相同。但如果我手动将其更改为黑色,然后更改为其他内容,那么它将按预期工作。。。所以我必须“以编程方式刷新”层的属性?怎样 |