Edit an existing Extrude feature

Edit an existing Extrude feature

Raider_71
Collaborator Collaborator
596 Views
3 Replies
Message 1 of 4

Edit an existing Extrude feature

Raider_71
Collaborator
Collaborator

Hi, I am trying to modify an existing Extrude feature using the API but keep getting an error saying Parameter is incorrect. I would like to change the Extrusion to be ToNext instead of a distance extrude. Please see the sample part attached.

 

My code:

 

    Private Sub BtnModifyExtrusion_Click(sender As Object, e As EventArgs) Handles BtnModifyExtrusion.Click

        Dim oDoc As PartDocument = oApp.ActiveDocument

        Dim oCompdef As PartComponentDefinition = oDoc.ComponentDefinition

        Dim oExtrude As ExtrudeFeature = oCompdef.Features.ExtrudeFeatures.Item("Extrusion1")
        Dim oExtrudeDef As ExtrudeDefinition = oExtrude.Definition

        Dim oSurfBody As SurfaceBody = oCompdef.WorkSurfaces.Item("TerminationSurf2").SurfaceBodies.Item(1)

        oExtrudeDef.SetToNextExtent(PartFeatureExtentDirectionEnum.kPositiveExtentDirection, oCompdef.WorkSurfaces.Item("TerminationSurf2").SurfaceBodies.Item(1))

    End Sub

 

Any advice would be appreciated. 

 

Cheers

0 Likes
Accepted solutions (1)
597 Views
3 Replies
Replies (3)
Message 2 of 4

aelqabbany
Advocate
Advocate

This is a bit "hacky", but it works:

    Private Sub BtnModifyExtrusion_Click(sender As Object, e As EventArgs) Handles BtnModifyExtrusion.Click

        Dim oDoc As PartDocument = oApp.ActiveDocument

                Dim oCompdef As PartComponentDefinition = oDoc.ComponentDefinition

        Dim oExtrude As ExtrudeFeature = oCompdef.Features.ExtrudeFeatures.Item("Extrusion1")
        Dim oExtrudeDef As ExtrudeDefinition = oExtrude.Definition
		Dim oExtrudeProfile As Profile = oExtrudeDef.Profile

        Dim oSurfBody As SurfaceBody = oCompdef.WorkSurfaces.Item("TerminationSurf2").SurfaceBodies.Item(1)

		Dim oExtrude2Def As ExtrudeDefinition = oCompdef.Features.ExtrudeFeatures.CreateExtrudeDefinition(oExtrudeProfile,PartFeatureOperationEnum.kNewBodyOperation)
		oExtrude2Def.SetToNextExtent(PartFeatureExtentDirectionEnum.kPositiveExtentDirection, oSurfBody)
		Dim oExtrude2 As ExtrudeFeature = oCompdef.Features.ExtrudeFeatures.Add(oExtrude2Def)
		
		oExtrude.Delete(True)
		oExtrude2.Name = "Extrusion1"
    End Sub
0 Likes
Message 3 of 4

Raider_71
Collaborator
Collaborator

@aelqabbany  thank you for the reply. That would be a valid solution but in my case it's going to cause some issues as I have a downstream drawing with dimensions attached to the edges of the original extrusion, hence the reason for wanting to modify the extrusion. 

Do you think it's an issue with the API or is there a property that I am missing?

0 Likes
Message 4 of 4

Raider_71
Collaborator
Collaborator
Accepted solution

I found the issue. You need to set the EOP (end of part) marker to above the extrude feature prior to editing its definition. Then it all works perfectly! I hope this helps someone else out there as I could not find anything online about the issue. ...after two days of searching, I found it in the sample code in the API help file... 😒

 

 

        oExtrude.SetEndOfPart(True)

        oExtrudeDef.SetToNextExtent(PartFeatureExtentDirectionEnum.kPositiveExtentDirection, oSurfBody)

        oCompdef.SetEndOfPartToTopOrBottom(False)

 

 

Cheers