Community Tip - Did you get an answer that solved your problem? Please mark it as an Accepted Solution so others with the same problem can find the answer easily. X
I am working on creating an electric motor assembly that will adjust based on given parameters. For example I want to be able to adjust the rotor lamination and have the rest of the assembly adjust accordingly. The issue that I am currently running into is I am not sure how to create relations between seperate parts. Is there a way to do this in Creo 2.0?
Thanks
Solved! Go to Solution.
Definitely! There are multiple ways to do this. Probably the easiest is to simply create the necessary parameters in the top level assembly and then let the individual parts read them from this assembly. To keep things more robust, I'd recommend you recreate the relevant parameters in each part and then simply use the value from read from the assembly to set the part's parameter(s). This make it much easier to 'turn off' the top level assembly control when you want to make sure the part is behaving correctly.
To read parameters (or dimensions) from another model in an assembly, you have to use the parameter name (or dimension) followed by the session ID. For example, if the top level assembly has a parameter named "ASMPARAM" and, part has a parameter named "PRTPARAM", and the assembly has a session ID of "25", the syntax would be this:
PRTPARAM = ASMPARAM:25
You can find the session ID by going to Tools/Relations (while in an assembly) and clicking on Show/Session ID.
There's a module that is called Layout in WFx, not sure what the Creo name for it is. It is a 2D sketch location that allows multiple parts and assemblies to access a common set of dimensions and other values. Think of it as a cocktail napkin quality sketch with the important values on it.
I know there is a NEW! ALL NEW! CREO! Layout module, but I don't know if it's the same central information repository that it is under WFx.
Also formerly known as Pro/Notebook, I believe.
Definitely! There are multiple ways to do this. Probably the easiest is to simply create the necessary parameters in the top level assembly and then let the individual parts read them from this assembly. To keep things more robust, I'd recommend you recreate the relevant parameters in each part and then simply use the value from read from the assembly to set the part's parameter(s). This make it much easier to 'turn off' the top level assembly control when you want to make sure the part is behaving correctly.
To read parameters (or dimensions) from another model in an assembly, you have to use the parameter name (or dimension) followed by the session ID. For example, if the top level assembly has a parameter named "ASMPARAM" and, part has a parameter named "PRTPARAM", and the assembly has a session ID of "25", the syntax would be this:
PRTPARAM = ASMPARAM:25
You can find the session ID by going to Tools/Relations (while in an assembly) and clicking on Show/Session ID.
You can do so, as Tom described, but I'd suggest you search the PTC knoledge base and other sources for information on skeleton based top down design. A bit complex, but extremely powereful and designed for exactly what you are tying to do.
Doug Schaefer wrote:
You can do so, as Tom described, but I'd suggest you search the PTC knoledge base and other sources for information on skeleton based top down design. A bit complex, but extremely powereful and designed for exactly what you are tying to do.
I could be wrong, but I'm pretty sure you still need to create your relations to the skeleton parameters the same way you would to any other assembly/part. In this case, you're just choosing to refer to the skeleton part's parameters instead of the top level assembly's parameters.
Tom Uminn wrote:
I could be wrong, but I'm pretty sure you still need to create your relations to the skeleton parameters the same way you would to any other assembly/part. In this case, you're just choosing to refer to the skeleton part's parameters instead of the top level assembly's parameters.
I made the assumption that the "parameters" he intended to drive could be expressed in the actual geometry, in which case you would not need any relations. However, if they are non geometry values that are indeed stored in Creo / Proe parameters, then you are correct.
We use this the whole time.
Some rules:
The most interesting place to put the relations between an assembly and a part (or subassembly) in that assembly is in the component. This way the relations won't fail if you suppress the part for some reason, and you will still be able to open and edit the part without the assembly in memory.
A good practice is to use parameters in each part/assembly, and to write relations between these parameters.
To write a relation, you don't need to search for feature-ID's and component ID's. Creo will do that for you. Just click on the button to 'Insert Parameter Name from List', and select the part you want to see the parameters from. Creo will add the correct ID's by itself.
I am just wondering if I were to put the parameters in each of the individual components how can I use the parameters in multiple parts. For example the motor that I am trying to modify will change in length. The length will change most of the parts in the assembly. However, I do not want to have to go to each individual component to change the parameters. Is there a way to do this with a spreadsheet that parameters would read from or.....??
Thanks,
Brad
This is what the Layout tool does.
There used to be a poseable human-like figure model based on layout that had a table that drove poses.
Would you have an example of a layout or know of somewhere that I could get a tututorial on it? I am a little nervous to try the layout as I have never worked with it before.
Thanks,
Brad
I'd suggest the help topics under large assembly management - at least that's where it is described for WF5.
They are easier to use than most everything else. Lack of familiarity is the main problem - under the best circumstance one would create a single layout that could drive thousands of models and never have to modify the layout again, leaving one with the feeling that layouts are 1/1000th as usable as models, when the opposite is true.
Layouts are the Rodney Dangerfield of parametric modeling.
Also remember that layouts (and skeletons) require an advanced assembly license. Creating relations between parts and assemblies does not.
Agreed. It would be nice if PTC published a chart of all capabilities vs license/module so that one could more easily sort out needed/useable features. The 'contact PTC sales' message is not a good substitute.
"Layouts are the Rodney Dangerfield of parametric modeling."
I agree.. but I also think this was deserved in the case of Pro/NOTEBOOK. While I have seen some people force it to work, I gave up on it many years ago. For every time I've seen it used, there have usually been better, more efficient ways to do the same thing with less hassle and less overhead.
Tom Uminn posted some very good ideas... I'd like to piggyback on that. Tom's idea of using automation is very sound. In addition to the methods he listed (somewhere below down in this thread), you can also create a simple form using any web-development program. Very basic javascript or PERL can feed this data to Creo in several different ways. Rather than get into the details, I think it's more important to know why you're trying to achieve what you're asking.
If you're trying to perform an optimization of your design based upon rotor lamination, your may be able to have Creo do that for you without having to constantly re-tweak numerous parameters. It will take maybe a few hours to a day to set up... and probably a weekend to run... but Creo might be able to find the sweet spot for your design without all of the overhead of creating a layout-like assembly.
Many times you do not need for a design to be 'inifinitely variable'. Rather, you just need to create a few specific case studies and perhaps analyze them to determine which is best. Is this the type of work you're doing?
In 2002 or so, I created a very automated set of assembly models for a small company in North Carolina. Their entire business consisted of making variations on the same type of design. Some pieces would be larger or smaller, different motors would get swapped in, piping sizes would change, but overall the designs were always similar. In that instance, I used Pro/PROGRAM (of all things) with a web page interface to create new designs with drawings in just a few minutes.
There are several ways to attack your problem and some other people have posted really solid ideas. My point is that it really does matter what you're trying to accomplish. Selecting the right technique often depends upon it.
Thanks!
-Brian
Layouts are a place to keep commonly used values with a related mechanical schematic that shows relationships between items that are of possibly different scales. This schematic can be built prior to the building of any part, allowing multiple independent workers to create models asynchronously, with sufficient assurance that all the parts and assemblies made that depend on the layout will fit.
The on-layout schematic is also a place to collect notes about how the models are intended to function and how to use the parameters to make useful variations.
How is it less hassle to build models based on less information than what Layouts contain and make obvious and to depend on direct parent-child connections that are more difficult to manage?
Thanks!
-Dave
Tom's reply below illustrates just one issue with layouts as they were implemented in Pro/NOTEBOOK. I am specifically not talking about any modifications or enhancements implemented in Creo Layout.
While you've accurately described the PTC sales literature proclaiming the obvious benefits of a layout, in practice, it's a tremendous pain in the neck to manage. Declaring parameters back and forth is just one issue. If you ever wish to "back out" of the layout once your design has matured, you cannot. You're forever stuck having to manipulate your assembly with a complex series of relationships established by the layout. Although the promise of the layout is to gather engineering information in one location, document it, pictorially illustrate critical design parameters, and then share them to all relevant components, this is far tougher than it needs to be.
Creating illustrations alone was a huge hassle in Notebook. Go ahead and open up a new Notebook in Creo 2.0 then try to draw a BOX (literally a rectangle) and place two dimensions on it. First of all, you cannot sketch a rectangle using any normal means... you're drawing with sticks connected together... one line at a time. You're looking at a minimum of 12 clicks (I counted 15) and you'll have to mess with it for the sketch to look remotely decent. Now imagine trying to sketch a complex interaction between numerous components that are not as simple as a rectangle. Saying the layout illustration is akin to the sketch on a 'beer napkin' is unfairly maligning beer napkin sketches.
You cannot even steal a decent view of geometry from another Creo model. Sure, you can use an overlay, but you cannot dimension to it... making it useless. Unless you wish to export a DXF from Creo so you can re-import it to your notebook, you're out of luck. Why? Seems pretty foolish in 2014 to need to use such draconian tactics to force such a vaunted piece of software to live up to the sales pitch.
Then there's "automatic assembly of hardware". This was a big selling point! Imagine being able to automatically populate an assembly with the appropriate hardware from the layout. Wow... impressive... except when you have to edit a ridiculous table that's 5000 feet long to make it work. Oh, and then you have to go back and name every single reference on each component and each piece of hardware, declare it, etc. It's horrible.
I would sooner add all of the design intelligence to a PROGRAM embedded in the models than I would use Notebook. At least I can use a script to strip off the program when I'm done using it for design iteration and investigating 'what if' scenarios. Notebook, by comparison, is cumbersome, overly complicated, requires far too much setup, cannot be removed, has child-like tools that remind me of the "state of the art" in CAD (back in 1996), and so few people understand it, you're stuck perenially retraining every new hire to comprehend the mess you've created in the name of 'saving time'. PTC put out a masterful sales pitch for this product. But it worked for only a precious few customers and ultimately failed to deliver. Top down design and skeleton techniques have far eclipsed this tool. Perhaps Creo Layout is worth taking a look at but I have to stand by my original statement on Notebook.
Yuck.
The application does not need to optimize the design. The design is actually optimized by a genetic algorithm that outputs the parameters. We currently use those parameters to model a motor then we verify the results with CFD. The model that will be controlled by the parameters is to speed the process between genetic algorithm and CFD. We currently spend a week getting modesl ready for CFD and if there is a change that needs to be made it takes atleast a day to make the changes.
I think what I am going to try first is having all of the parameters that I need in the top level assembly. Then in the parts I will just have the parameters needed for that part and the relations will be built off those parameters. Once I get the model working I will investigate using VBA to make the modification to the parameters a little more user friendly.
Thanks
Brad
The layout tool has it's pros and cons. Basically a layout is nothing more than a drawing with parameters and relations. You can then "declare" this layout in other parts and assemblies. All that really happens is Proe copies all the layout parameters into each model/assembly. Unless PTC has made improvments, this causes all kinds of havoc in the PDM system. ALL parameters from the layout overwrite/override the same named parameters in the parts/assemblies. This means system parameters that exist in the parts/assemblies (of the same name) are no longer able to be set independently. (Think DESCRIPTION, MATERIAL, MANUFACTURER, etc.) They ALL display the layout value instead.
Layouts would be much more useful if you could choose which layout paramters are allowed to propogate. Better yet, allow each part/assembly that has the layout declared to choose which parameters they want propogated to them individually.
Again, unless something has changed, creating a layout with 300 parameters (I've tried it) means all 300 of those parameters are in EVERY part, when most parts only need a small subset of these.
I would think that a layout would not need any of the parameters mentioned, but I can see where, if they were used, it would be disruptive.
This is where the Product Line Manager responsible for Layout could step in and explain how the problems described can be handled in PDM.
The way I would do it:
- Create the parameter "LENGTH" in every part/subassy you need it in.
- Let this parameter drive the feature that needs the length (feature relation like "d14 = LENGTH"
- Create the parameter "LENGTH" also in the main assy
- Create the relations to all parameters. This can be don in the main assembly relations, or in the components, or in the parts. You're free to choose, every location has it's pro's and cons.
This would look something like:
LENGTH:0 = LENGTH
LENGTH:2 = LENGTH
LENGTH:4 = LENGTH
you can also add some more intelligence like
if LENGTH > 100
LENGTH:6 = LENGTH * 1.1
else
LENGTH:6 = LENGTH + 5
endif
- Now you can alter the parameter LENGTH in the main assembly, and everything will follow.
Exactly! The only caveat I would mention is that if you put the relations to drive the parameters in the top level assembly, then when you open just the part, the parameter values will not be "locked". The top level assembly will not be automatically loaded into session (in the background). You can easily make changes to the part and save them, but the next time you open the top level assembly (and regenerate it), the parts are going to snap back to their assembly level parameter values. This is why I would much rather have the parts be responsible for reading the upper level parameters. The assembly will automatically be loaded behind the scenes and the parameters will stay synchronized.
All right I think I am going to be most comfortable having the parts read from the upper level assembly. The reason being is how this model is going to be used. The model will be used by engineers who will open the upper level assembly and modify the parameters to make the models what they need for their analysis. The model will then be exported and used in CFD software. Therefore since I think that the parameters will only be changed in the upper level I would rather have the parts read from there.
The next question would be what is the best way to modify these parameters. There is going to be about 40-50 parameters that the engineers will want to control. I am afraid that modifying them in the parameter list will be clumsy and slow. Is there a way to modify them in excel much like the family table allows you to do?
A few ideas.
1.) Create a report of the assembly and then create a table with the different parameters in it. Then you simply open the drawing and double click on the parameter values you want to change. (This same approach could be used in a layout as well).
2.) Use automation (VBA, J-Link, etc.) or some third party program (ex. SmartAssembly) to read the Excel file and set the parameter values.
3.) Create a second sheet in the Excel file formatted to match the relations statements needed set the parameter values. Manually copy and paste these into Pro/e any time the values change. (You might have to copy and paste through notepad first to remove Excel specifc formatting.)
We use Smart Assembly from B&Wsoft to do this.
This is a very powerfull piece of software to automate the process from A to Z.
If it's only those 50 parameters to alter and to play with, SmartAssembly is in my opinion overkill...
It is however, like Tom said, possible to use Excel (+VBA) to create a connection to Creo. This way it is possible to alter the parameters by using a nice VBA form. It has also the possibility to create (pre-)sets of parameters.
I don't know exactly what you want to do, but I think this last idea seems to me the way to go.
You still need to write the parameters and relations first though, so all parameters can be set in the top level assembly. And afterwards, you can write a piece of VBA code to alter these parameters from within Excel or a VBA form.
Hi, i do something similar to what you want to achieve. Because notebook (formally known as layout) requires an additional licence, i do not have, my approach was as follows. I simply created a part file with no geometry, only a default co-ordinate system (used for assembly purposes). This part contains all my parameters & relations (i have around 200) & is assembled to every component in my top level assembly (including the top level assembly). This way i only ever have to change a given parameter once, & regenerate the top level assembly & i'm done. All my drawing format parameters are included in the part file too, such as customer name, designers name, process etc. Finally, i have a drawing which has this parameter part as its reference model, & i have created a table with all my parameters listed. I have created a series of 2d sketches explaining/showing what a given parameter is, like i said i have around 200. From this simple drawing i am able to control my entire project.
Hope this helps.
John
A notebook can be used to store all of your parameters and relations in one place. All of your parts can point to the notebook (declare is the command I think). If the values in the notebook change, the parts will change as well.
The parameters can be placed in table format to make modifying similar to using excel.