catia vba 在会话中更改 activedocument (drawingdocument) 名称
catia vba change activedocument (drawingdocument) name in session
我有一个 .CATdrawing 模板,用于为我的所有零件创建图纸。
我当前的宏根据需要打开模板。
我想做的是更改文档的工作名称,以便当用户单击 "save" 时,正确的名称已经在对话框中,他只需要浏览到正确的位置。
为了澄清,我将添加一张图片:https://i.imgur.com/eckBwRQ.png
在此图片中,文本 "Drawing2" 需要更改为我想要的任何内容。
此时我不想保存.CATdrawing,必须允许用户继续工作并在适合他的时候保存文档。
我一直在 google 和 V5Automation.chm 中进行一些搜索,但我似乎找不到执行此操作的代码。
我最好的猜测是尝试以下代码:
'remember currently opened part.
Dim partDoc As PartDocument
Set partDoc = CATIA.ActiveDocument
Dim documents1 As Documents
Set documents1 = CATIA.Documents
'Open drawing
Dim mydrawingdoc As DrawingDocument
Set mydrawingdoc = documents1.Open("X:\Path\Template.CATDrawing")
'rename drawing
Set CATIA.ActiveDocument.Name = partDoc.Part.Parameters.Item("CUSTOM_NAME").ValueAsString
但是我收到一条错误消息
Invalid use of property
如有任何帮助,我们将不胜感激。
编辑:
我已经尝试了更多的方法来做到这一点,但到目前为止我还没有看到成功:
Left(mydrawingdoc.FullName, 10) = partDoc.Part.UserRefProperties.Item("CUSTOM_NAME").ValueAsString
这也不行
编辑 2:
好的,所以我发现了一些会给出完全不同的错误的东西:
mydrawingdoc.FullName = partDoc.Part.UserRefProperties.Item("CUSTOM_NAME").ValueAsString
Can't assign to read-only property
这是否意味着不可能做我想做的事?
可能的解决方案是使用 NewFrom 而不是像这样打开:
Set mydrawingdoc = documents1.NewFrom("path\Template.CATDrawing")
然后在创建此绘图文档时立即使用所需的名称?
无法更改尚未保存的顶级文档的名称。
据我所知,最好也是唯一的解决方法是将文档以正确的名称保存在临时文件夹中。
示例:
'remember currently opened part.
Dim partDoc As PartDocument
Set partDoc = CATIA.ActiveDocument
Dim documents1 As Documents
Set documents1 = CATIA.Documents
'Open drawing
Dim mydrawingdoc As DrawingDocument
Set mydrawingdoc = documents1.NewFrom("path\Template.CATDrawing")
'Save drawing with custom name extracted from 3D part
CATIA.ActiveDocument.SaveAs ("C:\CATIA_temp\" & partDoc.Product.UserRefProperties.Item("CUSTOM_NAME").ValueAsString & ".CATDrawing")
我有一个 .CATdrawing 模板,用于为我的所有零件创建图纸。 我当前的宏根据需要打开模板。 我想做的是更改文档的工作名称,以便当用户单击 "save" 时,正确的名称已经在对话框中,他只需要浏览到正确的位置。
为了澄清,我将添加一张图片:https://i.imgur.com/eckBwRQ.png
在此图片中,文本 "Drawing2" 需要更改为我想要的任何内容。
此时我不想保存.CATdrawing,必须允许用户继续工作并在适合他的时候保存文档。
我一直在 google 和 V5Automation.chm 中进行一些搜索,但我似乎找不到执行此操作的代码。
我最好的猜测是尝试以下代码:
'remember currently opened part.
Dim partDoc As PartDocument
Set partDoc = CATIA.ActiveDocument
Dim documents1 As Documents
Set documents1 = CATIA.Documents
'Open drawing
Dim mydrawingdoc As DrawingDocument
Set mydrawingdoc = documents1.Open("X:\Path\Template.CATDrawing")
'rename drawing
Set CATIA.ActiveDocument.Name = partDoc.Part.Parameters.Item("CUSTOM_NAME").ValueAsString
但是我收到一条错误消息
Invalid use of property
如有任何帮助,我们将不胜感激。
编辑:
我已经尝试了更多的方法来做到这一点,但到目前为止我还没有看到成功:
Left(mydrawingdoc.FullName, 10) = partDoc.Part.UserRefProperties.Item("CUSTOM_NAME").ValueAsString
这也不行
编辑 2:
好的,所以我发现了一些会给出完全不同的错误的东西:
mydrawingdoc.FullName = partDoc.Part.UserRefProperties.Item("CUSTOM_NAME").ValueAsString
Can't assign to read-only property
这是否意味着不可能做我想做的事?
可能的解决方案是使用 NewFrom 而不是像这样打开:
Set mydrawingdoc = documents1.NewFrom("path\Template.CATDrawing")
然后在创建此绘图文档时立即使用所需的名称?
无法更改尚未保存的顶级文档的名称。
据我所知,最好也是唯一的解决方法是将文档以正确的名称保存在临时文件夹中。
示例:
'remember currently opened part.
Dim partDoc As PartDocument
Set partDoc = CATIA.ActiveDocument
Dim documents1 As Documents
Set documents1 = CATIA.Documents
'Open drawing
Dim mydrawingdoc As DrawingDocument
Set mydrawingdoc = documents1.NewFrom("path\Template.CATDrawing")
'Save drawing with custom name extracted from 3D part
CATIA.ActiveDocument.SaveAs ("C:\CATIA_temp\" & partDoc.Product.UserRefProperties.Item("CUSTOM_NAME").ValueAsString & ".CATDrawing")