- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have the need to break a lot of links created by addsilhouette, and addentity and such to a sketch. After the entities are added to the sketch the lines, arcs, circles, ellipses are all still linked back to the original 3D solid. Running Break Link on over 700 objects cycles through and breaks the link. However approx. 5% of the lines have been moved (where point values get set to 0 or something). I think this may be a bug with Inventor (using version 2019.1.2 build 200). If you break link on these exact lines one by one by hand, it succeeds, if you do so in batch by hand it messes up. If you do so in batch by this code (vb.net), it messes just the same:
Public Sub BreakAllLinks(sketch As Sketch)
For Each en As SketchEntity In sketch.SketchEntities
en.Reference = False
Next
End SubMy intention is to report this bug, but also is there a way to add these entities without linking in the first place via code?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Below iLogic code seems to be working with attached part. All entity links are set to false.
Sub Main()
Dim oDoc As PartDocument
oDoc = ThisApplication.ActiveDocument
Dim oDef As PartComponentDefinition
oDef = oDoc.ComponentDefinition
Dim oSketch As Sketch
oSketch = oDef.Sketches.Item("Sketch5")
BreakAllLinks(oSketch)
End Sub
Public Sub BreakAllLinks(sketch As Sketch)
For Each en As SketchEntity In sketch.SketchEntities
en.Reference = False
Next
End Sub
Thanks and regards,
CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Not for me. Not as iLogic, not as VB.Net, not as user run command. Not with Software Graphics, not with Hardware graphics, (NVIDIA Quadro P5000 16GB card, driver version :397.93) on a Precision 3630 running Windows 10 64Bit Pro for Workstations, and lots of highspeed hardware. I get this instead.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Can you please provide source code to test? Also please provide expected part after breaking link?
Please make sure that files are non confidential.
Thanks and regards,
CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I do believe your request to be ludicrous. I have already provided the source code, and document, and you provided another copy of the same source code (that runs in full in iLogic), and I tested all of in on the provided document. The result is that the lines move when they shouldn't. They begin in one position before break link command, and end in a completely different position after break link command. I posted an image of the bogus result (yellow lines do not outline the pipe, some have even moved down to the 0 elevation below the pipe. I've been repeating it over and over, would you like a video as well?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have uploaded a screen cast, showing this issue with and without code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have an update worth posting. I ran this code addition to defer sketch updates, and all the break lines looked great during breaking. I stopped the code on the line sketch.DeferUpdates=false. At the stop, the sketch looked perfect.
all line break link looking good
However, when the code ran the line deferupdates= false (turning off defer), the problematic sketch lines ALL jumped to their inappropriate places. Also, hosting a transaction for each reference break has no positive effect at all.
Public Sub BreakAllLinks(sketch As Sketch)
sketch.DeferUpdates = True
For Each en As SketchEntity In sketch.SketchEntities
'Dim trans As Transaction = invApp.TransactionManager.StartTransaction(CType(sketch.Parent, ComponentDefinition).Document, "Break Link")
en.Reference = False
'trans.End()
Next
sketch.DeferUpdates = False
End SubI'm guessing there is a calculation error taking place during the sketch update command. My first thought was a point moving from one referenced location to another (by index) or received a 0 in its coordinate due to lack of access from another changing entity, so I thought 'break link while sketch updates are deferred'. It was looking like the solution, until I reset the defer. Then everything went splat, to the floor (or ceiling), miscalculations galore! Error after defer update is turned off
The user accessible undo command has "Disable Sketch Defer Updates". If I undo that, it returns to the better picture. If I edit sketch, defer updates, break all links, and end sketch edit (with defer updates left on) the entities remain in their proper place.
Public Sub BreakAllLinks(sketch As Sketch)
sketch.Edit()
sketch.DeferUpdates = True
For Each en As SketchEntity In sketch.SketchEntities
'Dim trans As Transaction = invApp.TransactionManager.StartTransaction(CType(sketch.Parent, ComponentDefinition).Document, "Break Link")
en.Reference = False
'trans.End()
Next
sketch.ExitEdit()
'sketch.DeferUpdates = False
End SubBut then Inventor becomes unstable, and the downstream code fails to get sketch.sketchlines items properly (system exception - can't find inventor, and fatal error (double boom!). So leaving DeferUpdates set to False is a bad idea.
So can you simply add deferupdates = false AFTER you exit the sketch??? No.
What a mess!Problem NOT solved.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
A workaround is found. After rebuilding document and breaking links, sketch entities links are broken properly. Can you please try below iLogic code?
Sub Main()
Dim oDoc As PartDocument
oDoc = ThisApplication.ActiveDocument
Dim oDef As PartComponentDefinition
oDef = oDoc.ComponentDefinition
Call oDoc.Rebuild()
Dim oSketch As Sketch
oSketch = oDef.Sketches.Item("Sketch5")
BreakAllLinks(oSketch)
End Sub
Public Sub BreakAllLinks(sketch As Sketch)
sketch.Edit()
For Each en As SketchEntity In sketch.SketchEntities
en.Reference = False
Next
sketch.ExitEdit()
End Sub
Thanks and regards,
CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report