So I want to place a parameter into a sketch that will be embossed. Here's the problem, I got the code to do what i want but it places the parameter as a string instead of a parameter (because i want it to automatically update if i change that parameter). Any help would be greatly appreciated! Thank You! I can code in both vb.net and c# so you can use whatever you prefer, but here is my code:
Dim oPart As PartDocument = invApp.ActiveDocument 'resetting part document
Dim oDoc As Document = invApp.ActiveDocument
Dim oComponentDefinition As ComponentDefinition = oPart.ComponentDefinition
Dim oFace As Face = invApp.CommandManager.Pick(SelectionFilterEnum.kPartFaceFilter, "Pick a face")
Dim Sketch As PlanarSketch = oComponentDefinition.Sketches.Add(oFace, True)
Dim oTG As TransientGeometry
oTG = invApp.TransientGeometry
Dim oEdge As Edge
Dim oEdge2 As Edge
oEdge = invApp.CommandManager.Pick(SelectionFilterEnum.kPartEdgeMidpointFilter, "Pick Left Hand Edge")
oEdge2 = invApp.CommandManager.Pick(SelectionFilterEnum.kPartEdgeMidpointFilter, "Pick Bottom Edge")
Dim userParameters As UserParameters = oPart.ComponentDefinition.Parameters.UserParameters
Dim param As Parameter = userParameters.Item(1)
Dim oTextBox As Inventor.TextBox
oTextBox = Sketch.TextBoxes.AddFitted(oTG.CreatePoint2d((oEdge.PointOnEdge.X + oEdge2.PointOnEdge.X) / 2, (oEdge.PointOnEdge.Y + oEdge2.PointOnEdge.Y) / 2), param)
Dim oPaths As ObjectCollection
oPaths = invApp.TransientObjects.CreateObjectCollection
oPaths.Add(oTextBox)
Dim oProfile As Profile
oProfile = sketch.Profiles.AddForSolid(False, oPaths)
Dim oExtrudeDef As ExtrudeDefinition
oExtrudeDef = oComponentDefinition.Features.ExtrudeFeatures.CreateExtrudeDefinition(oProfile, Inventor.PartFeatureOperationEnum.kCutOperation)
Call oExtrudeDef.SetDistanceExtent(0.25, Inventor.PartFeatureExtentDirectionEnum.kNegativeExtentDirection)
Dim oExtrude As ExtrudeFeature
oExtrude = oComponentDefinition.Features.ExtrudeFeatures.Add(oExtrudeDef)
Solved! Go to Solution.
Solved by MjDeck. Go to Solution.
Hi! I think this is fairly easy to do. But, before you automate the process, you want to make sure it works manually. You still need a text parameter. Here is what you need to do.
1) Go to Parameters table -> create a text parameter.
2) Create a sketch -> Text -> insert the text parameter to the sketch.
3) Create the Emboss feature based on the text.
Now if you change the text parameter, the Emboss feature will update accordingly.
Is this what you are looking for?
Many thanks!
Sure, that's how you do it in inventor. I would like to do it through code.
(not making a parameter, assigning a parameter to a string)
@johnsonshiue wrote:
Hi! I think this is fairly easy to do. But, before you automate the process, you want to make sure it works manually. You still need a text parameter. Here is what you need to do.
1) Go to Parameters table -> create a text parameter.
2) Create a sketch -> Text -> insert the text parameter to the sketch.
3) Create the Emboss feature based on the text.
Now if you change the text parameter, the Emboss feature will update accordingly.
Is this what you are looking for?
Many thanks!
@johnsonshiue wrote:
Hi! I think this is fairly easy to do. But, before you automate the process, you want to make sure it works manually. You still need a text parameter. Here is what you need to do.
1) Go to Parameters table -> create a text parameter.
2) Create a sketch -> Text -> insert the text parameter to the sketch.
3) Create the Emboss feature based on the text.
Now if you change the text parameter, the Emboss feature will update accordingly.
Is this what you are looking for?
Many thanks!
This is undocumented and I can't guarantee that it will continue to work in future versions of Inventor. But this should do it:
Change the last argument in the call to TextBoxes.AddFitted from param to param.Value
Add this statement after that:
oTextBox.FormattedText = String.Format("<Parameter Resolved='True' ComponentIdentifier='{0}' Name='{1}' Precision='3'>{2}</Parameter>", oDoc.FullFileName, param.Name, param.Value)
@MjDeck wrote:
This is undocumented and I can't guarantee that it will continue to work in future versions of Inventor. But this should do it:
Change the last argument in the call to TextBoxes.AddFitted from param to param.Value
Add this statement after that:
oTextBox.FormattedText = String.Format("<Parameter Resolved='True' ComponentIdentifier='{0}' Name='{1}' Precision='3'>{2}</Parameter>", oDoc.FullFileName, param.Name, param.Value)
This is perfect but, using http://help.autodesk.com/view/INVNTOR/2018/ENU/?guid=GUID-915B75BA-4696-4fc7-A2C6-54B2BACDE7E1 as a reference, is it not possible to input a Design Tracking Property as a parameter? I also have not found a way to specifically convert a [Property](which is what you use for iproperties see code) into a parameter.
'Dim oPropSets As PropertySets
'oPropSets = oDoc.PropertySets
'Dim oPropSet As PropertySet
'oPropSet = oPropSets.Item("Design Tracking Properties")
'Dim param As [Property] = oPropSet.Item("Part Number") '<--- change this into a "Parameter"
Nevermind,
I found a way around this.
@Houston_Shimala wrote:
@MjDeck wrote:
This is undocumented and I can't guarantee that it will continue to work in future versions of Inventor. But this should do it:
Change the last argument in the call to TextBoxes.AddFitted from param to param.Value
Add this statement after that:
oTextBox.FormattedText = String.Format("<Parameter Resolved='True' ComponentIdentifier='{0}' Name='{1}' Precision='3'>{2}</Parameter>", oDoc.FullFileName, param.Name, param.Value)This is perfect but, using http://help.autodesk.com/view/INVNTOR/2018/ENU/?guid=GUID-915B75BA-4696-4fc7-A2C6-54B2BACDE7E1 as a reference, is it not possible to input a Design Tracking Property as a parameter? I also have not found a way to specifically convert a [Property](which is what you use for iproperties see code) into a parameter.
'Dim oPropSets As PropertySets
'oPropSets = oDoc.PropertySets
'Dim oPropSet As PropertySet
'oPropSet = oPropSets.Item("Design Tracking Properties")'Dim param As [Property] = oPropSet.Item("Part Number") '<--- change this into a "Parameter"
Thank you for your help!
You're welcome. And thanks for finding out that it actually is documented. I was wrong about that.
Can't find what you're looking for? Ask the community or share your knowledge.