社区
Inventor 产品技术应用讨论区
欢迎访问欧特克Inventor论坛!分享知识,发帖提问,浏览Inventor热帖
取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Inventor如何全部显示隐藏部件?

19 条回复19
已解决
回复
1 条消息(共 20 条)
yuzeaa
17541 次查看, 19 条回复

Inventor如何全部显示隐藏部件?

inventor好像没有全部显示的功能,在大型部件中,如果隐藏一个零件,往往要找很久才能显示回来。有谁能帮忙写一个ilogic程序实现此功能。API函数中有一个CreateVisibleOccurrenceFinder我发现只能准确找出显示部件,用来找隐藏部件好像不是很准确。下面是我目前用的一个很笨的方法,将所有部件全部操作一遍,此程序运行较慢,不太适合。

For Each occ As Object In Thisapplication.activedocument.componentdefinition.occurrences
occ.visible = False ,必须先隐藏再显示
occ.visible = True
Next

19 条回复19
2 条消息(共 20 条)
chenj
回复: yuzeaa

有没有试过Shift+鼠标右键,然后选择“选择所有不可见零部件”,然后按Alt+V,将所有隐藏的零部件设置为可见。

chenj_0-1629430400028.png

 

3 条消息(共 20 条)
yuzeaa
回复: chenj

我用的Inventor2020没有这个选项。

微信图片_20210820135310.jpg

4 条消息(共 20 条)
chenj
回复: yuzeaa

那就要麻烦点了,可以试一下查找不可见零部件,如下图所示:

chenj_0-1629450810254.png

另外的方法,就是创建新的视图表达,保存零部件不可见的状态,然后在不同的视图表达之间切换。

5 条消息(共 20 条)
WeTanks
回复: yuzeaa

其实,没有必要去依赖iLogic,

这个反而使用视图功能将会更有效的。

根据自己的需要,你可以做很多种视图,

想隐藏了的部件做个视图,全部显示的部件做个视图,

切换这个会比iLogic还要有效果,会非常快的。

 

スクリーンショット 2021-08-21 135936.jpg

We.Tanks

EESignature

A couple of Fusion improvement ideas that could your vote/support:
図面一括印刷

6 条消息(共 20 条)
yuzeaa
回复: WeTanks

咱们说的不是一回事。我的目的是在”零件优先“选择集下敢去隐藏,随时随地隐藏,在不用思考和任何多余操作的情况下以最快的方式全部显示(恢复),是一种操作需要。

7 条消息(共 20 条)
yuzeaa
回复: chenj

谢谢!这个方法确实可以。只是麻烦了一点。既然界面能够做到准确查找隐藏零部件,那么API应该也能做到。但API即使找到隐藏的零部件,如何将它显示出来也是一个问题。因为零件是否隐藏并不光由occurrence.visible 这个属性决定。

8 条消息(共 20 条)
chenj
回复: yuzeaa

其实视图表达还是蛮好用的,你如果要显示所有隐藏的零件,可以在部件中先创建一个视图表达,然后你可以使用零件优先的方式隐藏零件,如果需要将所有隐藏的零件设置为可见,可以按下图操作:

chenj_0-1629686036742.png

 

9 条消息(共 20 条)
yuzeaa
回复: chenj

视图“默认”点击右键,点击“全部可见”,就是我要找的功能,原来inventor真的有。并不需要去创建新的视图表达,我只需要“全部显示”。

10 条消息(共 20 条)

视图点“全部显示”后,之前隐藏的工作平面也全部显示出来了,我看筛选器没有一键选择工作平面的选项,如何将工作平面全部隐藏呢?

11 条消息(共 20 条)

点“全部可见”后确实当前部件的用户工作平面会全部可见,我也不清楚用inventor如何设置,如果你愿意用ilogic隐藏,以下是ilogic代码:

 

If ThisApplication.ActiveDocumentType <> Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then Exit Sub
Dim oAsmDoc As AssemblyDocument = ThisApplication.ActiveDocument

On Error Resume Next
For Each TopPlane As Inventor.WorkPlane In oAsmDoc.ComponentDefinition.WorkPlanes
    TopPlane.Visible = False
Next
For Each TopAxies As Inventor.WorkAxis In oAsmDoc.ComponentDefinition.WorkAxes
	TopAxies.Visible = False
Next

 

 

这里我想提一个问题@smilinger,inventor当创建新工作平面的时候,很多工作平面就会显示出来,我知道inventor2022已经对这个问题作出了改进。之前版本仅仅靠对象可见性并不能真正的隐藏工作平面。之所以提出这个问题是因为很多工程师画图的时候在零件层级不愿意隐藏工作平面,而仅仅在装配体中关闭对象可见性。我写了一段ilogic程序想在总装配体中一次解决所有平面真正隐藏的问题,但是发现还是有个别平面无法被隐藏,这个问题一直很让我头疼。不过我注意到当视图表达被锁定的时候不能对可见性作出任何更改,不知道是不是这个问题。以下是我的代码:

 

Sub main()

If ThisApplication.ActiveDocumentType <> Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then Exit Sub
Dim oAsmDoc As AssemblyDocument = ThisApplication.ActiveDocument

On Error Resume Next
For Each TopPlane As Inventor.WorkPlane In oAsmDoc.ComponentDefinition.WorkPlanes
    TopPlane.Visible = False
Next
For Each TopAxies As Inventor.WorkAxis In oAsmDoc.ComponentDefinition.WorkAxes
	TopAxies.Visible = False
Next
	
Dim oRefDocs As DocumentsEnumerator = oAsmDoc.AllReferencedDocuments
Dim oRefDoc As Document

For Each oRefDoc In oRefDocs
	'隐藏工作面WorkPlanes
	For Each oPlane As Inventor.WorkPlane In oRefDoc.ComponentDefinition.WorkPlanes
	    oPlane.Visible = False
	Next
	'隐藏工作轴WorkAxes
	For Each oAxe As Inventor.WorkAxis In oRefDoc.ComponentDefinition.WorkAxes
	    oAxe.Visible = False
	Next
Next

RUsure = MessageBox.Show ( _
"如存在可见平面请继续执行隐藏:" _
& vbLf & "点击 '是' 继续隐藏" _
& vbLf & "点击 '否' 退出程序","iLogic - WorkPlanehide",MessageBoxButtons.YesNo)
If RUsure = vbNo Then 
Return
Else
End If

For Each occ As Inventor.ComponentOccurrence In oAsmDoc.ComponentDefinition.Occurrences
	Call Occ_hide(occ)
Next
For Each Asmdoc As Inventor.AssemblyDocument In ThisApplication.ActiveDocument.AllreferencedDocuments.OfType(Of Inventor.AssemblyDocument)
	Call Document_hide(Asmdoc)
Next
Call Document_hide(oAsmDoc)
RUsure = MessageBox.Show ( _
"如存在可见平面请继续执行隐藏:" _
& vbLf & "点击 '是' 继续隐藏" _
& vbLf & "点击 '否' 退出程序","iLogic - WorkPlanehide",MessageBoxButtons.YesNo)
If RUsure = vbNo Then
Return
Else
End If
Call Subocc_hide(oAsmDoc.ComponentDefinition.Occurrences)

End Sub
Private Sub Document_hide(oAscDocument As Inventor.AssemblyDocument)
	    Dim oAsmCompDef As AssemblyComponentDefinition
	    oAsmCompDef = oAscDocument.ComponentDefinition
	    Dim oOcc As ComponentOccurrence
	    For Each oOcc In oAsmCompDef.Occurrences
		    Dim oPlane As WorkPlane
		    For Each oPlane In oOcc.Definition.WorkPlanes
				Dim oProxyPlane As WorkPlaneProxy
				Call oOcc.CreateGeometryProxy(oPlane, oProxyPlane)
				oProxyPlane.Visible =False
			Next
			Dim oworkaxe As Inventor.WorkAxis
			For Each oworkaxis In oOcc.Definition.workaxes
				Dim oproxyworkaxis As Inventor.WorkAxisProxy
				Call oOcc.CreateGeometryProxy(oworkaxis, oproxyworkaxis)
				oproxyworkaxis.Visible =False
			Next
		Next
End Sub 
Private Sub Occ_hide(occ As Inventor.ComponentOccurrence)

	Dim oworkplane As WorkPlane
	Dim oProxyPlane As WorkPlaneProxy
	For Each oworkplane In occ.Definition.workplanes
		Call occ.CreateGeometryProxy(oworkplane, oProxyPlane)
		oProxyPlane.Visible =False
	Next
	
	Dim oworkaxis As WorkAxis
	Dim oproxyworkaxis As WorkAxisProxy
	For Each oworkaxis In occ.Definition.workaxes
		Call occ.CreateGeometryProxy(oworkaxis, oproxyworkaxis)
		oproxyworkaxis.Visible =False
	Next
End Sub
Private Sub Subocc_hide(occs As Inventor.ComponentOccurrences)
	For Each occ As Inventor.ComponentOccurrence In occs
		Call Occ_hide(occ)
		If Not occ.SubOccurrences Is Nothing Then
			Call Subocc_hide(occ.SubOccurrences)
		End If
	Next
End Sub

 

 

12 条消息(共 20 条)
WeTanks
回复: yuzeaa

第一级iam文件

        ┗第二级iam文件

                   ┗第三级ipt文件

我在顶级(第一级)的iam文件运转这个iLogic的话,对它下面的第三级ipt文件也有效么?

We.Tanks

EESignature

A couple of Fusion improvement ideas that could your vote/support:
図面一括印刷

13 条消息(共 20 条)
yuzeaa
回复: WeTanks

对于所有零件内的平面隐藏都可以,不管它的层级。问题就在于在装配体浏览器中创建的平面,我把能想到的都隐藏了,所以对于大型装配运行时间较长,中间加了一个可以打断的提醒。

14 条消息(共 20 条)
WeTanks
回复: yuzeaa

理解了。感谢。

We.Tanks

EESignature

A couple of Fusion improvement ideas that could your vote/support:
図面一括印刷

15 条消息(共 20 条)

把ilogic规则前面加个if条件语句判断一下就可以了,改成如下:

Dim occ As Inventor.ComponentOccurrence For Each occ In Thisapplication.activedocument.componentdefinition.occurrences If occ.visible = False Then occ.visible = True End If Next

16 条消息(共 20 条)

学习了 ,优秀, unhide all

17 条消息(共 20 条)

我也是头疼了很久,而且这些平面在所有视图(view)中都显示,还有一旦创建view后,新添加的零件在所有视图以及工程图中都会显示,做大型的项目,创建view后新增加的零件需要每个view再把新增加的零件隐藏掉才不会再之前已经做好的工程图中显示出来。非常头疼。

18 条消息(共 20 条)
dgnfdn
回复: yuzeaa

曾经也在找这个功能,又学到了
19 条消息(共 20 条)
yuzeaa
回复: dgnfdn

没想到我之前发的帖子已经有7000多浏览量,看来很多人还是需要这个功能,这里我补充一下ilogic的实现方法,进去视图点击右键还是稍微麻烦了一点,下面的ilogic设置外部规则自动运行后只要在窗口空白处点击右键就有这个功能

微信图片_20231128113734.png

Class ThisRule
	Sub main
		If SharedVariable.Exists("ShowAll") Then Return
		SharedVariable("ShowAll") = "ShowAll"
		Dim mybutton As New MyButton(ThisApplication)
	End Sub
End Class

Public Class MyButton
    Private button_showall As ButtonDefinition
    Private ThisApplication As Inventor.Application
    
    Public Sub New(ThisApplication As Inventor.Application)
		Me.ThisApplication = ThisApplication
        Me.button_showall = ThisApplication.CommandManager.ControlDefinitions.AddButtonDefinition(
            "全部显示",
            "IneternalName_showall", 
            CommandTypesEnum.kShapeEditCmdType)
        AddHandler button_showall.OnExecute, AddressOf OnCLick
        AddHandler ThisApplication.CommandManager.UserInputEvents.OnContextMenu, AddressOf OnContextMenu
    End Sub

    Private Sub OnContextMenu(SelectionDevice As SelectionDeviceEnum, AdditionalInfo As NameValueMap, CommandBar As CommandBar)
		If (ThisApplication.ActiveDocument.DocumentType <> DocumentTypeEnum.kAssemblyDocumentObject) Then Return
        If ThisApplication.ActiveDocument.selectset.count <> 0 Then Return
		CommandBar.Controls.AddButton(button_showall,2)
    End Sub

    Private Sub OnCLick
		Dim oAssyDoc As AssemblyDocument
		oAssyDoc = ThisApplication.ActiveDocument

		Dim oAssyDef As AssemblyComponentDefinition
		oAssyDef = oAssyDoc.ComponentDefinition

		Dim oMgr As RepresentationsManager
		oMgr = oAssyDef.RepresentationsManager

		Dim oViewRep As DesignViewRepresentation
		oViewRep = oMgr.ActiveDesignViewRepresentation
		oViewRep.ShowAll
    End Sub
End Class
20 条消息(共 20 条)

我也遇到相同的困扰,太头疼了。
一是,在大型装配体下新增加的零件会在所有view下以及工程图显示;二是隐藏零件再点显示全部会把所有辅助平面轴/点显示出来也是很头疼。

找不到想要的内容?向社区提问或分享您的知识。

到论坛发帖  

”