AnsweredAssumed Answered

[VBA Macro] First selected extrude up to body to second selected body

Question asked by Daniel Plucinski on Dec 16, 2014
Latest reply on Apr 1, 2015 by Mitchell Conklin

I'm trying to write a macro that will allow me to select an extrude and a body to extrude it to within an assembly. My application for this is defining lengths of pipes between joints. Here are some screenshots to explain further:


Here is my default pipe.


Its boss extrude is set to blind and 10" long.


I change it to up to body and select the opposite joint to define the pipe length. I select "This configuration" so that I may have different lengths in my assembly.


This works, but there's several clicks that can be saved if it were made into a macro.


This is what I have so far. I make two selections. First, I select the pipe. Then, I select the joint and run my macro.


This is what happens after running my macro.


If I roll the boss extrude forward and edit it, it's changed correctly, but it has failed to update into my assembly. Plus, I'd like the macro to only modify "This configuration".


Here is my macro thus far:




Dim swApp As SldWorks.SldWorks

Dim Model As ModelDoc2

Dim PipeSelection As Object

Dim PipeFeature As Feature

Dim PipeDefinition As ExtrudeFeatureData2

Dim JointSelection As Object

Dim JointBody As Object

Dim isGood As Boolean

Dim SelMgr As SelectionMgr


Sub main()


Set swApp = CreateObject("sldWorks.application")

Set Model = swApp.ActiveDoc

Set SelMgr = Model.SelectionManager


Set PipeSelection = SelMgr.GetSelectedObject6(1, -1)

Set PipeFeature = PipeSelection.GetFeature


Set JointSelection = SelMgr.GetSelectedObject6(2, -1)

Set JointBody = JointSelection.GetBody


Set PipeDefinition = PipeFeature.GetDefinition

isGood = PipeDefinition.AccessSelections(Model, Nothing)


PipeDefinition.SetEndCondition True, 7

PipeDefinition.SetEndConditionReference True, JointBody


isGood = PipeFeature.ModifyDefinition(PipeDefinition, Model, Nothing)


End Sub




I couldn't find any solutions within the documentation, but hopefully someone knows how to remedy this issue.