chulse 发表于 2022-7-6 09:09:48

激活(模型空间)viewpor

我的启动程序似乎有一个奇怪而恼人的问题。大多数情况下,当我创建dwg时,paperspace视口会被激活(在mspace中)。我已经将其添加到我的启动例程中(在acaddoc.lsp中),但它仍然在发生。
 
(if (zerop (getvar 'tilemode)) (vla-put-mspace (vla-get-activedocument (vlax-get-acad-object)) :vlax-false))
 
代码似乎在命令行上工作,但在打开dwg时没有帮助。
 
有什么想法吗?我不知道它在哪里/为什么总是激活vports。。。
 
谢谢

Tharwat 发表于 2022-7-6 09:17:23

可能
 

(if (and (zerop (getvar 'tilemode))
      (eq (vla-get-mspace
            (vla-get-activedocument (vlax-get-acad-object))
            )
            :vlax-true
      )
   )
(vla-put-mspace
   (vla-get-activedocument (vlax-get-acad-object))
   :vlax-false
)
)

alanjt 发表于 2022-7-6 09:25:25

(defun _toPaper (doc)
(if (and (zerop (getvar 'TILEMODE)) (> (getvar 'CVPORT) 1))
   (vla-put-mspace doc :vlax-false)
)
)

BlackBox 发表于 2022-7-6 09:32:56

@Chulse-当您的代码被注释掉后,即使您要在未激活PViewport的情况下保存图形,您的图形是否仍然在激活PViewport的情况下打开?
 
*如果*是这样,这表明有单独的代码正在激活PViewport,它*可能*在acaddoc之后执行。lsp(S::可能启动?)。这只是一个猜测,我可能完全错了。
 
@Tharwat-我会避免多次调用ActiveDocument(或任何其他)对象,除非发生了更改,在该更改中,调用对象的后续时间使所需的更改可用。出于此线程的目的,请考虑存储到局部变量(ActiveDoc?)。

Tharwat 发表于 2022-7-6 09:42:05

 
这是正确的和更快的。
 
非常感谢。

BlackBox 发表于 2022-7-6 09:51:33

 
别担心;次要细节。

chulse 发表于 2022-7-6 10:01:09

 
我想我应该测试更多。。。我首先添加了代码来对抗这种行为。我试图避免猎杀鹬。

BlackBox 发表于 2022-7-6 10:04:43

 
只需将图形保存在所需状态(其中PViewport未激活),然后重新打开所述图形。
 
*如果*Pviewport处于相同的状态,那么这可能不是问题的根源。
 
但是,*如果重新打开时激活了Pviewport,则需要评估启动时加载的代码(acaddoc.lsp、startup suite等)。我将从您有权打开视图内容的任何文件(编译代码,如.FAS、.VLX等,是不可读的)开始。
 
祝你好运

chulse 发表于 2022-7-6 10:13:03

好像是创业套件里的东西。我需要挖掘才能找到它,但至少它已经缩小到了这个范围。
 
谢谢大家
页: [1]
查看完整版本: 激活(模型空间)viewpor