下面的代码是从我编写的一个更大的程序中提取出来的。这一部分在打开的文件中查找层。如果不存在,则创建层。如果它确实存在,则会确保它已解冻、打开并解锁。然后在这两种情况下,它将层设置为当前层。我遇到的问题是,当我在AutoCAD中发出命令时,在继续之前有很长的延迟。我不知道为什么。当我删除这部分代码时,它运行得非常快。我做过什么会导致这种情况吗?
- (setq oldlay (getvar "clayer")
- laycoll (vla-get-Layers doc)
- layname "G-ANNO-DIMS"
- )
- (if (vl-catch-all-error-p (setq layobj (vl-catch-all-apply 'vla-Item (list laycoll layname))))
- (progn
- (setq layobj (vla-Add laycoll layname))
- (vla-put-Color layobj acWhite)
- (vla-put-Description layobj "Dimensions")
- (vla-put-Freeze layobj :vlax-false)
- (vla-put-LayerOn layobj :vlax-true)
- (vla-put-Linetype layobj "Continuous")
- (vla-put-Lineweight layobj acLnWt025)
- (vla-put-Lock layobj :vlax-false)
- (vla-put-Plottable layobj :vlax-true)
- (vla-put-ViewportDefault layobj :vlax-false)
- (setvar "clayer" layname)
- )
- (progn
- (if (= (vla-get-Freeze layobj) :vlax-true) (vla-put-Freeze layobj :vlax-false))
- (if (= (vla-get-LayerOn layobj) :vlax-false) (vla-put-LayerOn layobj :vlax-true))
- (if (= (vla-get-Lock layobj) :vlax-true) (vla-put-Lock layobj :vlax-false))
- (vla-Regen doc acAllViewports)
- (setvar "clayer" layname)
- )
- )
|