【问题标题】:Changing CATIA User Defined Properties based on the instance using selection使用选择基于实例更改 CATIA 用户定义属性
【发布时间】:2020-04-27 18:05:20
【问题描述】:

我遇到了一个障碍,我已经在这个问题上做了一个星期,并且继续遇到同样的问题。 我正在使用 CATIA V5R26,我正在尝试通过在 CATIA 中选择产品/部件并运行宏来更改用户定义的属性(定义其他属性)。

目前,这就是我所拥有的

Set Pull_document2 = CATIA.ActiveDocument.Selection
Part_Number_Name = Pull_document2.Item(1).LeafProduct.ReferenceProduct.Name

CATIA.ActiveDocument.Selection.Item(1).LeafProduct.ReferenceProduct.UserRefProperties.Item(Part_Number_Name & "\Properties\DESIGNER").Value = "Yeet"

这会产生 2 个问题,我仍然无法更改 2 级或更多属性。这仅适用于顶层。此外,我正在尝试操作 11 个用户定义的属性,而代码只会执行 3 个。我尝试了很多不同的路线,还使用了他们使用的其他人的代码,但由于某种原因它不起作用。

需要做什么才能使其在多个级别上起作用? 为什么这只能更改 11 个用户定义的属性中的 3 个?

【问题讨论】:

  • 希望我能提供帮助,听起来很有趣。也许在这里找到的信息可以提供帮助? stackoverflow.com/questions/47574338/…
  • 这一定只是一个sn-p。我没有看到Option Explicit 或任何潜艇。我建议使用对象和With 块来缩短您的引用。你的点太多了.
  • 非常小的 sn-p,总代码大约 4,500 行......我正在更新它,所以它不会直接指向一个非常具体的名称并试图将其转换为“ generalize”,并能够在任何选定对象上更新“定义其他属性”中的条目。
  • 好的,把这个动作分解成一个函数,然后发布完整的函数。一步一步,你知道的。
  • 我将在稍后发布另一个帖子,鉴于我处于 NDA 之下,我只能发布这么多。

标签: vba catia


【解决方案1】:

一个问题是您是基于选择的。如果用户选择了错误类型的对象,则会引发错误。

也就是说,试试这个:

Set Pull_document2 = CATIA.ActiveDocument.Selection
Set ProducRef = Pull_document2.Item(1).LeafProduct.ReferenceProduct
With ProducRef.UserRefProperties
    .Item("DESIGNER").Value = "Yeet"  ' This is how I think it should work
    .Item(.Name & "\Properties\DESIGNER").Value = "Yeet"  ' This is based on the code you had
End With

在 With 块中,您应该能够列出您想要更改的所有属性。

【讨论】:

  • 那,它几乎可以工作。它将执行 11 个属性中的 7 个。我现在很震惊,因为我一遍又一遍地尝试与一个长文本相同的结构,但它从来没有这样做过......
  • 可能是属性名错误,或者属性是只读的。您可以使用 do-loop 打印出每个属性的名称,以便查看实际名称。验证名称后,您可以查看手册以查看其余属性是否为只读。
  • 我是 CATIA 中的 VBA 的菜鸟。这个循环会写成 CATIA.ActiveDocument.Selection.Item(i).Value.Name??
  • 对不起,我应该把整个想法写出来。 ' 而 i
  • 没有值的名称。这只是名字。阅读:coe.org/p/fo/et/thread=15608
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多