- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
@sam No Problem! I have only been using iLogic for a couple months now, but I tend to enjoy coding. My code is a mixture of what I could find and what I could make work. I initially had the parameters in the code because I was using it as an internal rule. When an internal rule has a parameter in it called by only using its name (eg. "MyParam", FYI: You can only do this in internal rules), when this parameter is changed or edited the rule will trigger. I created a form to extrude a bar and I put those parameters in the form for the user to fill out. This way when they could simply fill out a length width and height on the form to quickly create a bar (I did this to make people draw off the origin as much as possible). Anyway, I scrapped the parameters as a trigger by calling them with "Parameter("MyParam")" and added the iLogic code as a button on the end of the form. My final product with this code was using a macro to create a button on the ribbon that would prompt the form and the user inputs desired values and hits create. A bar is then created on the origin planes with the input parameters as its dimensions. Still doesn't work perfectly. I have a bug where when the bar is already created and the parameters are changed, it will no longer be on the origin. I just haven't bothered fixing it yet.
I moved all of my code over to external rules for ease of use on the network, and for legacy documents. Here is my full code and some screen shots of the process. Hope this helps, let me know if you have any other questions.
Dim oDoc = ThisDoc.Document If TypeOf ThisApplication.ActiveEditObject Is Sketch Then ' Set a reference to the active sketch. Dim OpenSketch As Sketch = ThisApplication.ActiveEditObject OpenSketch.ExitEdit End If Dim oDef As PartComponentDefinition oDef = oDoc.ComponentDefinition ' Get the X-Y work plane. Dim xyPlane As WorkPlane xyPlane = oDef.WorkPlanes.Item("XY Plane") Try ExtrusionExists = ThisApplication.ActiveEditDocument.ComponentDefinition.Features("Bar Extrusion") ThisApplication.ActiveView.Fit Catch Try SketchExists = ThisApplication.ActiveEditDocument.ComponentDefinition.Sketches("Bar_Sketch") SketchExists.delete Catch End Try ' Create a new sketch. Dim sketch As Inventor.PlanarSketch sketch = oDef.Sketches.Add(xyPlane, True) sketch.Name = "Bar_Sketch" ThisApplication.ActiveEditDocument.ComponentDefinition.Sketches("Bar_Sketch").Edit InventorVb.DocumentUpdate() ' Check to make sure a sketch is open. If Not TypeOf ThisApplication.ActiveEditObject Is PlanarSketch Then MessageBox.Show("A sketch must be active.", "iLogic") Return End If 'set a reference to the active sketch. Dim oSketch As PlanarSketch oSketch = ThisApplication.ActiveEditObject 'set a reference to the transient geometry collection. Dim oTransGeom As TransientGeometry oTransGeom = ThisApplication.TransientGeometry ' Create a rectangle width = Parameter("BAR_W") 'Trigger height = Parameter("BAR_H") 'Trigger length = Parameter("BAR_L") 'Trigger Dim oRectangleLines As SketchEntitiesEnumerator oRectangleLines = oSketch.SketchLines.AddAsTwoPointCenteredRectangle( oTransGeom.CreatePoint2d(0, 0),oTransGeom.CreatePoint2d(width*2.54/2, height*2.54/2)) Dim oSketchLine As Inventor.SketchLine Dim oDim As DimensionConstraint oSketchLine = oRectangleLines.Item(1) oDim = oSketch.DimensionConstraints.AddTwoPointDistance _ (oSketchLine.StartSketchPoint, oSketchLine.EndSketchPoint, _ DimensionOrientationEnum.kHorizontalDim, _ oTransGeom.CreatePoint2d(0, -(width/2 ))) oDim.Parameter.Expression = "BAR_W" oSketchLine = oRectangleLines.Item(2) oDim = oSketch.DimensionConstraints.AddTwoPointDistance _ (oSketchLine.StartSketchPoint, oSketchLine.EndSketchPoint, _ DimensionOrientationEnum.kVerticalDim, _ oTransGeom.CreatePoint2d(height+2, 0)) oDim.Parameter.Expression = "BAR_H" ThisApplication.ActiveEditDocument.ComponentDefinition.Sketches("Bar_Sketch").ExitEdit Dim extrudeProfile As Profile = sketch.Profiles.AddForSolid Dim oExtFeature As ExtrudeFeature oExtFeature = oDoc.ComponentDefinition.Features.ExtrudeFeatures.AddByDistanceExtent (extrudeProfile, "BAR_L", kSymmetricExtentDirection, kJoinOperation) oExtFeature.Name = "Bar Extrusion" ThisApplication.ActiveView.Fit iLogicVb.UpdateWhenDone = True End Try