Smart questions
Smart answers
Smart people
INTELLIGENT WORK FORUMS
FOR ENGINEERING PROFESSIONALS

Member Login




Remember Me
Forgot Password?
Join Us!

Come Join Us!

Are you an
Engineering professional?
Join Eng-Tips now!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

Join Eng-Tips
*Eng-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.
Jobs from Indeed

Link To This Forum!

Partner Button
Add Stickiness To Your Site By Linking To This Professionally Managed Technical Forum.
Just copy and paste the
code below into your site.

apmckenna (Aerospace) (OP)
16 Jan 13 16:35
I have an assembly with several parts that are connected and oriented at specific angles. These angles can change, and we'd like to have an easy method of seeing what the assembly looks like in multiple configurations, so I am doing different arrangements.

Currently, I have the parts positioned using constraints, including orient angle constraints that are linked to expressions. This way, I can change the angles in the expressions dialog, which makes it easy to change all of the angles at once. What I'd like to be able to do is select an arrangement, use the expressions dialog to set the angles, and then move onto the next arrangement. However, when I try this, all of the arrangements end up being the same, and I can't find an arrangement-specific option within the expressions dialog. I know that I've set different values in different arrangements for the same constraint before but I just can't remember how, and it might have been in a previous version of NX. I'm currently using NX7.5.

Any help would be appreciated.

Thanks,
Andy

JohnRBaker (Mechanical)
16 Jan 13 16:59
First you have to create multiple, albeit redundant, Constraints (as many as the number of Arrangements). Then change Arrangements one at a time, each time selecting a different Constraint, pressing MB3 and selecting 'Arrangement Specific'. Now each Constraint will only be in effect for one of the Arrangements. Now simply set the desired angle value for each Constraint/Arrangement combination and you should be home free.

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.

apmckenna (Aerospace) (OP)
16 Jan 13 17:35
Thanks for the reply, John. I guess I was looking for an arrangement-specific option for expressions, and that unfortunately doesn't exist.

Following your solution, I found the "Arrangement Specific" option for the constraints, and I also found something called "Edit in Arrangements," which allows me to set expressions for each specific arrangement. It looks like I can then go into the expression editor and rename them something like Arr1_JointAngle1, Arr2_JointAngle1, Arr1_JointAngle2, etc. It's not exactly what I was hoping for, since I have to create and rename new expressions for each arrangement, but it saves me the trouble of creating new constraints, which I didn't want to do since Orient Angle constraints are a pain to figure out what to click. Plus, the expressions dialog is easy to use and this method should allow less-experienced coworkers to easily edit my expressions, which was a goal I didn't mention.

I find it odd that I can have arrangement-specific positions, constraints, suppression, and even exploded views, but I can't have expressions. Are there any plans to add this in future versions, or does it come up rarely enough that it's not really a significant problem?

Thanks for your help!
JohnRBaker (Mechanical)
16 Jan 13 19:02
Sorry about my earlier suggestion. I think I may have misunderstood what you were trying to do, so what you discovered with the 'Edit in Arrangement' is the better solution.

That being said, how exactly is this NOT creating Arrangement specific Expressions? How else would you expect it to work?

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.

kapmnit123 (Mechanical)
21 Jan 13 4:31
Hi,
I hope i am not that late to make a reply.I guess you can set the expressions values as per the arrangements (only for those expressions which are created from /originate from Constraints and not for every expression)for ex.Let us say giving a distance constartint).Please notice the usage of SPECIFIC in the dialog box.
I am attaching an image herewith.This shows how you can have different constraint expression values in different arrangements.
Hi John,
Please correct me if i am wrong.
Best Regards
Kapil Sharma
kapmnit123 (Mechanical)
21 Jan 13 4:33
JohnRBaker (Mechanical)
21 Jan 13 10:38
Yes, that's correct.

However, the word 'Specific' does not actually refer to the Expressions which are related ONLY to Constraints, but rather this allows you to define that a Constraint is 'Shared' by MORE than one Arrangement or that it's 'unique' or 'Specific' to a particular Arrangement. By definition, ALL Constraints are created and thus are considered 'Shared' by ALL Arrangements unless explicitly designated as being 'Specific' to one or more Arrangements.

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.

apmckenna (Aerospace) (OP)
22 Jan 13 17:24
Sharing the constraints works well - I can have a base arrangement where the constraints are linked to my joint angle expressions. After setting the proper joint angle, I can just make a new arrangement, click "Edit in Arrangements" on my orient angle constraints, and set the values to constants. This way, I can maintain an expression-linked arrangement at all times and still have different arrangements with my joint angles. Now I have another question about arrangements now too, but I'll start a new thread since it's different.

To answer your question, John (about how this approach is different from arrangement-specific expressions), I think it's partly where you edit it and partly because it's only related to constraints. In order to edit my arrangement-specific value, I have to right click on the constraint and change it. In my opinion, it would be much easier to open the expressions dialog and have either A) a drop-down at the top that changes what arrangement I'm currently editing, or B) the ability to right-click an expression and change its values for each arrangement - "x" is 4 in Arr1, 20 in Arr2, 40 in Arr3, etc. Both of these could also be nice.

The second reason I stated is that right now, these expressions only relate to constraints. If I use an expression for something else, like maybe to create a component array, I can't have that change per arrangement. Say I want three PartX's in one arrangement, and four PartX's in another, or I want to vary the distance between array components in a linear array for different arrangements. I could currently do that with constraints, but having 4 distance constraints instead of one component array seems redundant. It's probably not a major issue, and I've certainly never run into this problem before, but it could be a nice feature.

Thanks for the help!
JohnRBaker (Mechanical)
22 Jan 13 17:50
The issue is that an Expression can have ONLY a single value. Therefore, what the Arrangement specific dialog does is simply create a duplicate Expression which is then assigned to what is in essence now a 'duplicate' constraint that is only effective when ITS arrangement is active. The expression system is totally unaware of which Arrangement is active or not, so as far as it's concerned ALL the expressions are being used for something and just because a particular constraint in currently not effecting anything, i.e. it's inactive because it's not part of the current Arrangement, the rest of the system doesn't really care. Now it would be nice if there was a scheme inside the expression system where you could query for which was the current Arrangement since you could then use that information in a logical statement to determine the values of other expressions thus accomplishing what you're looking for, perhaps not in as direct an approach as you're looking for, but one which would end-up being just as effective. You may wish to contact GTAC and have them open an ER to that effec: "Provide a way to determine, using a built-in expression system 'function', the name of the current Arrangement."

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.

DidierPSICAD (Computer)
27 Jan 13 10:53
Hi,

I am looking for the same function and I will also open an ER.

Is there any way by visual basic ?


Regards
Didier Psaltopoulos
http://www.psi-cad.com

jpetach (Computer)
28 Jan 13 13:49

Didier,

CODE --> VB

'The arrangement of the work part...

            lw.WriteLine("Work Part Active Arrangement Name: " & workPart.ComponentAssembly.ActiveArrangement.Name.ToString)

' The arrangement used by child component (sub assemblies)

            Try
                lw.WriteLine(newIndent & "Arrangement Name: " & child.UsedArrangement.Name.ToString)
            Catch ex As Exception
            End Try 

' The Try is needed since leaf node components won't use an arrangement 

So it should be possible to determine the name of the active arrangement and the set the value of an expression based on the active arrangement name (each time the program is run). This technique could server as an interim solution.

HTH,

Joe
DidierPSICAD (Computer)
30 Jan 13 10:55
Hi Joe,

Thanks for your suggection, but in fact I am not able to write any lines of vb by myself.


Regards
Didier Psaltopoulos
http://www.psi-cad.com

Helpful Member!  jpetach (Computer)
30 Jan 13 12:35
Didier,

This journal will set (or create) the string expression "Active_Arrangement" (line 11) in the work part to the name of the active arrangement.

CODE --> VB

' J. Petach, Creative Commons (CC0) 2013
Option Strict On
Imports System
Imports NXOpen

Module Active_Arrangement_Expression
Sub Main

Dim theSession As Session = Session.GetSession()
Dim workPart As Part = theSession.Parts.Work
Dim Exp_title As String = "Active_arrangement"
Dim Arr_name As String = workPart.ComponentAssembly.ActiveArrangement.Name.ToString
Dim new_exp As String = exp_title & "=""" & Arr_name & """"
Dim edit_exp As String = """" & Arr_name & """"

Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Arrangement_Expression")

Dim expression1 As Expression
Dim nErrs1 As Integer

Try
    ' Create the expression if it does not already exist
    expression1 = workPart.Expressions.CreateExpression("String", new_exp)
    nErrs1 = theSession.UpdateManager.DoUpdate(markId1)
Catch Ex As Exception
    ' Modify the existing expression
    expression1 = CType(workPart.Expressions.FindObject(Exp_title), Expression)
    Dim nullUnit As Unit = Nothing
    workPart.Expressions.EditWithUnits(expression1, nullUnit, edit_exp)
    nErrs1 = theSession.UpdateManager.DoUpdate(markId1)
End Try

End Sub
End Module 

The resulting string expression "Active_arrangement" can be used to define the value for other NX expressions using "if/then"

CODE --> expression

if Active_arrangement = "Arrangement 2" then 2 else 0 

HTH,
Joe
DidierPSICAD (Computer)
31 Jan 13 13:28
Hi Joe

Thanks a lot. It's perfect smile


Regards
Didier Psaltopoulos
http://www.psi-cad.com

Reply To This Thread

Posting in the Eng-Tips forums is a member-only feature.

Click Here to join Eng-Tips and talk with other members!

Back To Forum

Close Box

Join Eng-Tips® Today!

Join your peers on the Internet's largest technical engineering professional community.
It's easy to join and it's free.

Here's Why Members Love Eng-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close