Rules for hiding the circle of tab countsink

Rules for hiding the circle of tab countsink

tkddud711
Advocate Advocate
1,210 Views
20 Replies
Message 1 of 21

Rules for hiding the circle of tab countsink

tkddud711
Advocate
Advocate

hello?
This is a post I made previously on the forum.
https://forums.autodesk.com/t5/inventor-programming-ilogic/please-tell-me-how-to-make-tab-countsink-...

There are two things I want to change in the code below.

1. The count sink holes of the tab’s circular pattern, square pattern, and linked pattern are not hidden.
2. In the drawing, the rule is applied to the first view of the sheet, but I want to select the view to apply it.

Can you help me?

 

Sub Main()

    Dim drawing As DrawingDocument = ThisDoc.Document

    Dim drawingView As DrawingView = drawing.ActiveSheet.DrawingViews(1)
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
        If holeFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For

        'Get the biggest circles of holeFeature in drawing view
        Dim biggestCircles As New List(Of DrawingCurveSegment)
        Dim biggestCircleRadius As Double = 0

        Dim holeDrawingCurves = drawingView.DrawingCurves(holeFeature)
        For Each holeDrawingCurve As DrawingCurve In holeDrawingCurves
            For Each drawingCurveSegment As DrawingCurveSegment In holeDrawingCurve.Segments
                Dim circle2d = TryCast(drawingCurveSegment.Geometry, Circle2d)
                If circle2d Is Nothing Then Exit For
                If circle2d.Radius > biggestCircleRadius Then
                    biggestCircles.Clear()
                    biggestCircleRadius = circle2d.Radius
                    biggestCircles.Add(drawingCurveSegment)
                ElseIf circle2d.Radius = biggestCircleRadius Then
                    biggestCircles.Add(drawingCurveSegment)

                End If
            Next
        Next

        'Hide 
        For Each biggestCircle As DrawingCurveSegment In biggestCircles
            biggestCircle.Visible = False
        Next
    Next

End Sub
0 Likes
Accepted solutions (2)
1,211 Views
20 Replies
Replies (20)
Message 2 of 21

yuzeaa
Advocate
Advocate

GIF 2023-12-12 20-22-57.gif

Sub Main()
    Dim drawingView As DrawingView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Select View")
	If drawingView Is Nothing Then return
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    Dim holeFeatureList As New List(Of HoleFeature)
	Dim PatternFeatureList As New List(Of PartFeature)
	For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
        If HoleFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For
		holeFeatureList.Add(HoleFeature)
    Next
	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each PatternFeature In PatternFeatureList
		hideCurveByFeature(PatternFeature,drawingView)
	Next
	For Each holeFeature In holeFeatureList
		hideCurveByFeature(HoleFeature,drawingView)
	Next
End Sub

Sub hideCurveByFeature(oFeature As PartFeature,oView As DrawingView)
	    Dim DrawingCurves As DrawingCurvesEnumerator = oView.DrawingCurves(oFeature)
		Dim DrawingCurveSegmentList As List(Of DrawingCurveSegment) = DrawingCurves.Cast(Of DrawingCurve).SelectMany(Of DrawingCurveSegment)(Function(DrawingCurve) DrawingCurve.Segments.Cast(Of DrawingCurveSegment)).ToList()
        DrawingCurveSegmentList = DrawingCurveSegmentList.Where(Function(x) x.GeometryType = kcirclecurve2d).ToList
		biggestCircles =  DrawingCurveSegmentList.GroupBy(Function(item) Round(item.Geometry.Radius,5)).OrderByDescending(Function(Group) Group.Key).First
        For Each Circle As DrawingCurveSegment In biggestCircles
             If Circle.Visible = True Then
				Circle.Visible = False
			 Else
				Circle.Visible = True
			 End If
        Next
End Sub
0 Likes
Message 3 of 21

tkddud711
Advocate
Advocate

Thank you for your reply.
Everything works perfectly, but it doesn't apply to sketch driven patterns.
Is it possible?

tkddud711_0-1702389595174.png

 

0 Likes
Message 4 of 21

yuzeaa
Advocate
Advocate

This will work.

Sub Main()
    Dim drawingView As DrawingView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Select View")
	If drawingView Is Nothing Then return
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    Dim holeFeatureList As New List(Of HoleFeature)
	Dim PatternFeatureList As New List(Of PartFeature)
	For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
        If HoleFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For
		holeFeatureList.Add(HoleFeature)
    Next
	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each SketchPatternFeature As SketchDrivenPatternFeature In partDef.Features.SketchDrivenPatternFeatures
		If SketchPatternFeature.Definition.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(SketchPatternFeature)
		End If 
    Next
	For Each PatternFeature In PatternFeatureList
		hideCurveByFeature(PatternFeature,drawingView)
	Next
	For Each holeFeature In holeFeatureList
		hideCurveByFeature(HoleFeature,drawingView)
	Next
End Sub

Sub hideCurveByFeature(oFeature As PartFeature,oView As DrawingView)
	    Dim DrawingCurves As DrawingCurvesEnumerator = oView.DrawingCurves(oFeature)
		Dim DrawingCurveSegmentList As List(Of DrawingCurveSegment) = DrawingCurves.Cast(Of DrawingCurve).SelectMany(Of DrawingCurveSegment)(Function(DrawingCurve) DrawingCurve.Segments.Cast(Of DrawingCurveSegment)).ToList()
        DrawingCurveSegmentList = DrawingCurveSegmentList.Where(Function(x) x.GeometryType = kcirclecurve2d).ToList
		biggestCircles =  DrawingCurveSegmentList.GroupBy(Function(item) Round(item.Geometry.Radius,5)).OrderByDescending(Function(Group) Group.Key).First
        For Each Circle As DrawingCurveSegment In biggestCircles
             If Circle.Visible = True Then
				Circle.Visible = False
			 Else
				Circle.Visible = True
			 End If
        Next
End Sub
0 Likes
Message 5 of 21

tkddud711
Advocate
Advocate

A problem arose.
Only countsink for tabs should work.
It also works on countsink hole.
Is it possible to make only the tab's countsink work?
I have attached the test file.

0 Likes
Message 6 of 21

tkddud711
Advocate
Advocate

A problem arose.
Only countsink for tabs should work.
It also works on countsink hole.

And if you select a top view, front view, or back view, an error occurs on line 39.
Is it possible to make only the tab's countsink work?
I have attached the test file.

0 Likes
Message 7 of 21

yuzeaa
Advocate
Advocate

I don't quite understand you, and I can't open the attachment either. I am using Inventor 2020.

0 Likes
Message 8 of 21

tkddud711
Advocate
Advocate

This is the version inventor 2018 file.
I ran it in all views as shown in the picture, but an error occurred.
You must pass the countsink marked with a cloud in the photo.
Please help me~2023-12-13_10-15-32.png

0 Likes
Message 9 of 21

yuzeaa
Advocate
Advocate
Sub Main()
    Dim drawingView As DrawingView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Select View")
	If drawingView Is Nothing Then Return
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    Dim holeFeatureList As New List(Of HoleFeature)
	Dim PatternFeatureList As New List(Of PartFeature)
	For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
		If HoleFeature.HealthStatus <> kUpToDateHealth Then Continue For
        If HoleFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For
		If HoleFeature.IsClearanceHole Then Continue For
		holeFeatureList.Add(HoleFeature)
    Next
	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each SketchPatternFeature As SketchDrivenPatternFeature In partDef.Features.SketchDrivenPatternFeatures
		If SketchPatternFeature.Definition.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(SketchPatternFeature)
		End If 
    Next
	For Each PatternFeature In PatternFeatureList
		hideCurveByFeature(PatternFeature,drawingView)
	Next
	For Each holeFeature In holeFeatureList
		hideCurveByFeature(HoleFeature,drawingView)
	Next
End Sub

Sub hideCurveByFeature(oFeature As PartFeature,oView As DrawingView)
	    Dim DrawingCurves As DrawingCurvesEnumerator = oView.DrawingCurves(oFeature)
		Dim DrawingCurveSegmentList As List(Of DrawingCurveSegment) = DrawingCurves.Cast(Of DrawingCurve).SelectMany(Of DrawingCurveSegment)(Function(DrawingCurve) DrawingCurve.Segments.Cast(Of DrawingCurveSegment)).ToList()
        DrawingCurveSegmentList = DrawingCurveSegmentList.Where(Function(x) x.GeometryType = kcirclecurve2d).ToList
		If DrawingCurveSegmentList.Count = 0 Then Return
		biggestCircles =  DrawingCurveSegmentList.GroupBy(Function(item) Round(item.Geometry.Radius,5)).OrderByDescending(Function(Group) Group.Key).First
        For Each Circle As DrawingCurveSegment In biggestCircles
             If Circle.Visible = True Then
				Circle.Visible = False
			 Else
				Circle.Visible = True
			 End If
        Next
End Sub
0 Likes
Message 10 of 21

tkddud711
Advocate
Advocate

Thank you for your continued attempts to provide the correct answer.

I think we're almost there.
Lastly, you need to hide the arc of the tab on the back as shown in the picture.
Running the rule hides the inner diameter circle.
And the rules should apply to MirrorFeature as well.

Can I change it?

 

2023-12-13_13-41-46.png

0 Likes
Message 11 of 21

yuzeaa
Advocate
Advocate

It is easy to get there.

Sub Main()
    Dim drawingView As DrawingView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Select View")
	If drawingView Is Nothing Then Return
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    Dim holeFeatureList As New List(Of HoleFeature)
	Dim PatternFeatureList As New List(Of PartFeature)
	For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
		If HoleFeature.HealthStatus <> kUpToDateHealth Then Continue For
        If HoleFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For
		If HoleFeature.IsClearanceHole Then Continue For
		holeFeatureList.Add(HoleFeature)
    Next
	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each SketchPatternFeature As SketchDrivenPatternFeature In partDef.Features.SketchDrivenPatternFeatures
		If SketchPatternFeature.Definition.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(SketchPatternFeature)
		End If 
    Next
	For Each PatternFeature In PatternFeatureList
		hideCurveByFeature(PatternFeature,drawingView)
	Next
	For Each holeFeature In holeFeatureList
		hideCurveByFeature(HoleFeature,drawingView)
	Next
End Sub

Sub hideCurveByFeature(oFeature As PartFeature,oView As DrawingView)
    Dim DrawingCurves As DrawingCurvesEnumerator = oView.DrawingCurves(oFeature)
	Dim DrawingCurveSegmentList As List(Of DrawingCurveSegment) = DrawingCurves.Cast(Of DrawingCurve).SelectMany(Of DrawingCurveSegment)(Function(DrawingCurve) DrawingCurve.Segments.Cast(Of DrawingCurveSegment)).ToList()
    DrawingCurveSegmentList = DrawingCurveSegmentList.Where(Function(x) x.GeometryType = kcirclecurve2d OrElse x.GeometryType = kCircularArcCurve2d).ToList
	DrawingCurveSegmentList.RemoveAll(Function(x) x.Parent.ModelGeometry.Type = kFaceobject)
	If DrawingCurveSegmentList.Count = 0 Then Return
	biggestCircles =  DrawingCurveSegmentList.GroupBy(Function(item) Round(item.Geometry.Radius,5)).OrderByDescending(Function(Group) Group.Key).First
    For Each Circle As DrawingCurveSegment In biggestCircles
         If Circle.Visible = True Then
			Circle.Visible = False
		 Else
			Circle.Visible = True
		 End If
    Next
End Sub
0 Likes
Message 12 of 21

tkddud711
Advocate
Advocate

rules should apply to MirrorFeature as well.
Does not apply to mirror features.
The file MirrorFeature_test5.ipt is attached to the above article.
Is it possible?

tkddud711_0-1702452628016.png

 

0 Likes
Message 13 of 21

yuzeaa
Advocate
Advocate

Including MirrorFeatures.

Sub Main()
    Dim drawingView As DrawingView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Select View")
	If drawingView Is Nothing Then Return
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    Dim holeFeatureList As New List(Of HoleFeature)
	Dim PatternFeatureList As New List(Of PartFeature)
	For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
		If HoleFeature.HealthStatus <> kUpToDateHealth Then Continue For
        If HoleFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For
		If HoleFeature.IsClearanceHole Then Continue For
		holeFeatureList.Add(HoleFeature)
    Next
	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each SketchPatternFeature As SketchDrivenPatternFeature In partDef.Features.SketchDrivenPatternFeatures
		If SketchPatternFeature.Definition.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(SketchPatternFeature)
		End If 
    Next
	For Each MirFeature As MirrorFeature In partDef.Features.MirrorFeatures
		If MirFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternFeatureList.Add(MirFeature)
		End If 
    Next
	For Each PatternFeature In PatternFeatureList
		hideCurveByFeature(PatternFeature,drawingView)
	Next
	For Each holeFeature In holeFeatureList
		hideCurveByFeature(HoleFeature,drawingView)
	Next
End Sub

Sub hideCurveByFeature(oFeature As PartFeature,oView As DrawingView)
    Dim DrawingCurves As DrawingCurvesEnumerator = oView.DrawingCurves(oFeature)
	Dim DrawingCurveSegmentList As List(Of DrawingCurveSegment) = DrawingCurves.Cast(Of DrawingCurve).SelectMany(Of DrawingCurveSegment)(Function(DrawingCurve) DrawingCurve.Segments.Cast(Of DrawingCurveSegment)).ToList()
    DrawingCurveSegmentList = DrawingCurveSegmentList.Where(Function(x) x.GeometryType = kcirclecurve2d OrElse x.GeometryType = kCircularArcCurve2d).ToList
	DrawingCurveSegmentList.RemoveAll(Function(x) x.Parent.ModelGeometry.Type = kFaceobject)
	If DrawingCurveSegmentList.Count = 0 Then Return
	biggestCircles =  DrawingCurveSegmentList.GroupBy(Function(item) Round(item.Geometry.Radius,5)).OrderByDescending(Function(Group) Group.Key).First
    For Each Circle As DrawingCurveSegment In biggestCircles
         If Circle.Visible = True Then
			Circle.Visible = False
		 Else
			Circle.Visible = True
		 End If
    Next
End Sub
0 Likes
Message 14 of 21

tkddud711
Advocate
Advocate

In the MirrorFeature_test5.ipt file:
Mirrored tabs as shown below are not applied.
I think it will be of great help to me once I complete this.

tkddud711_0-1702453745921.png

 

0 Likes
Message 15 of 21

yuzeaa
Advocate
Advocate
Accepted solution

Grouping curves by center point to handle different holes.

Sub Main()
    Dim drawingView As DrawingView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Select View")
	If drawingView Is Nothing Then Return
    Dim part As PartDocument = drawingView.ReferencedDocumentDescriptor.ReferencedDocument
    Dim partDef As PartComponentDefinition = part.ComponentDefinition
    Dim holeFeatureList As New List(Of HoleFeature)
	Dim PatternorMirFeatureList As New List(Of PartFeature)
	For Each holeFeature As HoleFeature In partDef.Features.HoleFeatures
		If HoleFeature.HealthStatus <> kUpToDateHealth Then Continue For
        If HoleFeature.HoleType <> HoleTypeEnum.kCounterSinkHole Then Continue For
		If HoleFeature.IsClearanceHole Then Continue For
		holeFeatureList.Add(HoleFeature)
    Next
	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each SketchPatternFeature As SketchDrivenPatternFeature In partDef.Features.SketchDrivenPatternFeatures
		If SketchPatternFeature.Definition.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(SketchPatternFeature)
		End If 
    Next
	For Each MirFeature As MirrorFeature In partDef.Features.MirrorFeatures
		If MirFeature.ParentFeatures.Cast(Of PartFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(MirFeature)
		End If 
    Next
	For Each PatternFeature In PatternorMirFeatureList
		hideCurveByFeature(PatternFeature,drawingView)
	Next
	For Each holeFeature In holeFeatureList
		hideCurveByFeature(HoleFeature,drawingView)
	Next
End Sub

Sub hideCurveByFeature(oFeature As PartFeature,oView As DrawingView)
    Dim DrawingCurves As DrawingCurvesEnumerator = oView.DrawingCurves(oFeature)
	Dim DrawingCurveSegmentList As List(Of DrawingCurveSegment) = DrawingCurves.Cast(Of DrawingCurve).SelectMany(Of DrawingCurveSegment)(Function(DrawingCurve) DrawingCurve.Segments.Cast(Of DrawingCurveSegment)).ToList()
    DrawingCurveSegmentList = DrawingCurveSegmentList.Where(Function(x) x.GeometryType = kcirclecurve2d OrElse x.GeometryType = kCircularArcCurve2d).ToList
	DrawingCurveSegmentList.RemoveAll(Function(x) x.Parent.ModelGeometry.Type = kFaceobject)
	If DrawingCurveSegmentList.Count = 0 Then Return
    biggestCircles = DrawingCurveSegmentList.GroupBy(Function(item) Round(item.Geometry.Center.X,5) & Round(item.Geometry.Center.Y,5)).Select(Function(Group) Group .OrderByDescending(Function(item) item.Geometry.Radius).First()).ToList()
    For Each Circle As DrawingCurveSegment In biggestCircles
         If Circle.Visible = True Then
			Circle.Visible = False
		 Else
			Circle.Visible = True
		 End If
    Next
End Sub
0 Likes
Message 16 of 21

tkddud711
Advocate
Advocate

`

0 Likes
Message 17 of 21

tkddud711
Advocate
Advocate
Works so perfectly!
You have freed me from the pain of my work!
Thank you for your hard work.
0 Likes
Message 18 of 21

tkddud711
Advocate
Advocate

hello~
I took a break over the weekend and applied the rules today, but a problem occurred.. ㅜㅡㅜ
When mirroring an extrusion or cut, an error occurs at line 30.
Modeling is attached.
Is it possible to fix the error?

0 Likes
Message 19 of 21

yuzeaa
Advocate
Advocate

Replace the following code.

20231218142302.png

	For Each MirFeature As MirrorFeature In partDef.Features.MirrorFeatures
		If MirFeature.ParentFeatures.Oftype(Of HoleFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(MirFeature)
		End If 
    Next
0 Likes
Message 20 of 21

yuzeaa
Advocate
Advocate
Accepted solution

I found more issues with the same reason in pattern features.

20231218144056.png

	For Each RecPatternFeature As RectangularPatternFeature In partDef.Features.RectangularPatternFeatures
		If RecPatternFeature.ParentFeatures.Oftype(Of HoleFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(RecPatternFeature)
		End If 
    Next
	For Each CirclePatternFeature As CircularPatternFeature In partDef.Features.CircularPatternFeatures
		If CirclePatternFeature.ParentFeatures.Oftype(Of HoleFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(CirclePatternFeature)
		End If 
    Next
	For Each SketchPatternFeature As SketchDrivenPatternFeature In partDef.Features.SketchDrivenPatternFeatures
		If SketchPatternFeature.Definition.ParentFeatures.OfType(Of HoleFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(SketchPatternFeature)
		End If 
    Next
	For Each MirFeature As MirrorFeature In partDef.Features.MirrorFeatures
		If MirFeature.ParentFeatures.Oftype(Of HoleFeature).Any(Function(item) holeFeatureList.Contains(item)) Then
			PatternorMirFeatureList.Add(MirFeature)
		End If 
    Next
0 Likes