Costinbos77 发表于 2022-7-6 07:16:44

在m之后重新生成图形

你好
 
我用(vla put LayerOn obj:vlax true)将更多属性更改为层,
(vla put Freeze obj:vlax false)
蝙蝠没有实现这幅画。我尝试:
(vla regen(vla get activeDocument(vlax get acad object))acAllViewports)
bat没有任何变化。
 
有什么想法吗?

Stefan BMR 发表于 2022-7-6 07:20:06

代码已删除。糟糕的解释。

Tharwat 发表于 2022-7-6 07:26:08

如果我正确理解了你的观点,你需要对这些层上的每个实体名称使用entupd函数。

Costinbos77 发表于 2022-7-6 07:26:56

不,我只修改图层特性:打开或关闭。

Tharwat 发表于 2022-7-6 07:30:17

当冻结和解冻层时会发生这种情况。
 
尝试移动到任何布局选项卡并返回到模型,您将发现所有对象都出现了。

Costinbos77 发表于 2022-7-6 07:33:19



(vlax-for obj (vla-get-Layers oacd)
(if (member (vla-get-Name obj) lStrat)
(progn (vla-put-LayerOn obj :vlax-true) (vla-put-Freeze obj :vlax-false) )
(progn (vla-put-LayerOn obj :vlax-false) )
) ;_ end of if
) ;_ end of vlax
......

(vla-regen oacd acAllViewports)

 
这是一种方式,但我需要一个程序行。
我问是否有人知道vl函数或加法器方法,如(vla regen x),它可以帮助我重新生成图形对象的外观。

Tharwat 发表于 2022-7-6 07:36:32

我认为除了entupd函数之外,没有其他函数可以做到这一点,但无论如何,现在,你能发布变量列表(lStrat)吗?

Tharwat 发表于 2022-7-6 07:40:55

假设层名称列表为(list“0”“one”“two”“three”),如以下代码所示。
 
[未经测试]
 

(mapcar '(lambda (x) (setq lst (cons (strcat x ",") lst ))) (list "0" "one" "two" "three"))
(if (setq s (ssget "_x" (list (cons 8 (vl-string-right-trim "," (apply 'strcat lst))))))
(repeat (setq i (sslength s))
   (entupd (ssname s (setq i (1+ i))))
)
)

SLW210 发表于 2022-7-6 07:44:14

请阅读代码发布指南,并在代码中添加代码标签。

Tharwat 发表于 2022-7-6 07:45:56

 
你在这里的一个英语论坛上。
页: [1] 2
查看完整版本: 在m之后重新生成图形