Quantcast
Channel: Manufacturing DevBlog
Viewing all articles
Browse latest Browse all 518

Get outer profile loop in sketch

$
0
0

By Adam Nagy

If you want to find the outermost profile loop in a sketch then you can just create a temporary Profile from all the sketch entities and then check the first ProfilePath in it. That should be the outer loop. If there are multiple outer loops then you would need to check the other ProfilePath's too with AddsMaterial = True. Also if two paths are intersecting then you cannot be sure which one of those you'll get back - see below pics.

Here is a VBA code that shows how to do it:

Sub HighlightOuterSketchLoop()' You need to be inside the sketch
  Dim sk As PlanarSketch
  Set sk = ThisApplication.ActiveEditObject
  Dim doc As Document
  Set doc = ThisApplication.ActiveDocument
  Dim tm As TransactionManager
  Set tm = ThisApplication.TransactionManager' Create a transaction that we'll abort
  Dim tr As Transaction
  Set tr = tm.StartTransaction(doc, "Temp")' You should not leave a transaction' hanging in the air. It will make Inventor' unstable. So in case of error we'll' skip to aborting the whole thing
  On Error GoTo Oops
  Dim tro As TransientObjects
  Set tro = ThisApplication.TransientObjects
  Dim p As Profile
  Set p = sk.Profiles.AddForSolid()
  Dim coll As ObjectCollection
  Set coll = tro.CreateObjectCollection' If there is a single outermost loop' then that should be the first one
  Dim pp As ProfilePath
  Set pp = p(1)
  Dim pe As ProfileEntity
  For Each pe In pp
    Call coll.Add(pe.SketchEntity)
  Next
Oops:
  Call tr.Abort
  If Err <> 0 Then Exit Sub' Let's select the lines in the UI
  Call doc.SelectSet.SelectMultiple(coll)
End Sub

Here are pics showing the results:

Sketchprofile

 


Viewing all articles
Browse latest Browse all 518

Trending Articles