Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

Open Drawing from Balloon

Curtis_Waguespack
Consultant

Open Drawing from Balloon

Curtis_Waguespack
Consultant
Consultant

A quick example of how to open a drawing from a balloon.

 

@harvey3ELEA 

 

Dim oDoc As DrawingDocument = ThisApplication.ActiveDocument

While True

	'select Balloon
	Dim oBalloon As Balloon = Nothing
	oBalloon = ThisApplication.CommandManager.Pick _
	(SelectionFilterEnum.kDrawingBalloonFilter, _
	"Select a balloon to open a it's drawing. " & " (press ESC To Exit selection)")

	If IsNothing(oBalloon) Then Exit While

	Dim oLeader As Leader
	If oBalloon IsNot Nothing Then oLeader = oBalloon.Leader

	Dim oLeaderNode As LeaderNode = oLeader.AllNodes(oLeader.AllNodes.Count)
	Dim oIntent As GeometryIntent = oLeaderNode.AttachedEntity
	Dim oCurve As DrawingCurve = oIntent.Geometry
	Dim oProxy As EdgeProxy = oCurve.ModelGeometry
	Dim oOcc As ComponentOccurrence = oProxy.ContainingOccurrence
	Dim oRefDoc As Document = oOcc.Definition.Document
	Dim oFilePath As String = oRefDoc.FullFileName()
	Dim oDrawingFilePath As String = Left(oFilePath, Len(oFilePath) -3) & "idw"

	Try
		oDrawDoc = ThisApplication.Documents.Open(oDrawingFilePath, True)
		Exit While
	Catch
		MsgBox("Could not open " & oDrawingFilePath, , "iLogic")
	End Try


End While

 

0 Likes
Reply
Accepted solutions (1)
544 Views
6 Replies
Replies (6)

harvey3ELEA
Advocate
Advocate

Now that's nice!  I did notice, however, the code doesn't like balloons that are on tangent surfaces, such as a pipe.  When I move the balloon to the pipe's cut edge, it performs the task properly.

 

Here's what I see when clicking on a tangent-connected balloon:

 

harvey3ELEA_0-1715176355663.png

 

Curtis_Waguespack
Consultant
Consultant
Accepted solution

@harvey3ELEA , good catch, see this updated version

 

 

Dim oDoc As DrawingDocument = ThisApplication.ActiveDocument

While True

	'select Balloon
	Dim oBalloon As Balloon = Nothing
	oBalloon = ThisApplication.CommandManager.Pick _
	(SelectionFilterEnum.kDrawingBalloonFilter, _
	"Select a balloon to open it's drawing. " & " (press ESC To Exit selection)")

	If IsNothing(oBalloon) Then Exit While

	Dim oLeader As Leader
	If oBalloon IsNot Nothing Then oLeader = oBalloon.Leader
	Dim oLeaderNode As LeaderNode = oLeader.AllNodes(oLeader.AllNodes.Count)
	Dim oIntent As GeometryIntent = oLeaderNode.AttachedEntity
	Dim oCurve As DrawingCurve = oIntent.Geometry
	Dim oOcc As ComponentOccurrence = oCurve.ModelGeometry.ContainingOccurrence
	Dim oRefDoc As Document = oOcc.Definition.Document
	Dim oFilePath As String = oRefDoc.FullFileName()
	Dim oDrawingFilePath As String = Left(oFilePath, Len(oFilePath) -3) & "idw"

	Try
		oDrawDoc = ThisApplication.Documents.Open(oDrawingFilePath, True)
		Exit While
	Catch
		MsgBox("Could not open " & oDrawingFilePath, , "iLogic")
	End Try

End While

 

harvey3ELEA
Advocate
Advocate

Success!  That did the trick.

 

The boss is impressed at how I'm now able to use Inventor drawings more effectively with you're recent codes.  His first comment:  why doesn't Inventor already have those built in?

 

Thanks, Harvey

DMOTS1
Explorer
Explorer

Thanks everyone!

DMOTS1
Explorer
Explorer

Thanks!

0 Likes

DeptaM
Enthusiast
Enthusiast

Hello, thank you for this rule. It's absolutely great.

Martin