Community Tip - New to the community? Learn how to post a question and get help from PTC and industry experts! X
Hi all,
I have a huge assembly file, and would like to assemble a bolt to many locations in model. I set up a skeleton with a shrinkwrap of a query in top model for all "coordinates" that are named HARDWARE_COORD*. Is there a way to auto assemble all the components to each and every coordinate? I would assume it can be done with programming , but I am not sure. I cant use a point pattern because there are many in different orientations. I can go through and do a repeat, but this is time consuming.
Solved! Go to Solution.
There are many options.... Here is an example using CSYS pattern "Fill" of a Spline... then cuts referencing the pattern.
These examples show the later portion of my previous response using Nitro-CELL and Excel to streamline the automation process in Creo.
NOW... The BASEPLATE.prt CSYS names are (by default) "CS#" Created by Creo upon regeneration.
In Nitro-CELL - we simply assemble to those using a WILDCARD -- "CS*"
The Result:
Now let's change the source BASEPLATE Design:
After running the SAME Script from Excel using Nitro-CELL - you get this:
Hiding the CSYS Names -- this is what it looks like:
So it is that easy to do.
But let's push it a bit further -- again using Excel and Nitro-CELL to RENAME CSYS References for a more Targeted Process:
This Renames Each Pattern to be more Targeted References... say for a green bolt vs a yellow bolt.
So this is what the CSYS names look like before the rest of the process is finalized:
And after the Nitro-CELL process finished...
A Change in the BASEPLATE_2.prt -- to adjust the patterns and paths...
And the SAME Nitro-CELL Automation results in this:
So the point I was trying to make is that if you can plan for the process - naming conventions and or workflows using stable references... things get pretty easy.
Hope that helps better understand my point.
Dave
If your hardware component has an interface defined, then you can Auto Place it. Works quite well for coincident CSYS-CSYS type of constraint, as you can do a search for coordinate system, etc...
Note that there are various configuration options that govern the behaviour of the interface-based placements, and it might be that given the huge assembly, this will crash your system, but worth a try...
@pausob - We were tired of dealing with this exact issue, so we wrote some code to automate it. coincidentally enough, the product is called "AutoAssemble" - which is why your post caught my eye 🙂
Here is a short video showing the capability. https://cadactive.com/products/cad-automation/autoassemble/
Feel free to reach out to me - phil.clukies@cadactive.com to talk further!
This really depends on the purpose of the hardware you are trying to assemble - and what you are trying to do.
If you are routing cables and connections - another posted response has a nice response.
If you are just trying to put the assembly together... e.g. CSYS-TO-CSYS. This is also easy - but not by default in Creo.
You have a couple of options. I am going to assume that these are not driven by a normal pattern placement or a pattern table for placement.
1) CREOSON - (open source - free) write a simple script to assemble parts/sub-assemblies into an assembly using CSYS name references.
Look for : FILE ASSEMBLE in http://www.creoson.com/functions.html
You can use CSYS Names for the constraints and also specify if you want to assembly to that location in the assembly structure or assemble into the root (add to end of the tree) of the main assembly. The only thing required is the component path where your placement will be done.
2) Nitro-CELL - (commercial option) This has a bit more power and is much easier to use for this type of application. (it uses the same CORE logic that CREOSON uses).
With Nitro-CELL you have a LOT more options for accomplishing this - everything is done using Excel to control the command execution/workflow for your automation. For example, you can assemble by wildcard - using CSYS Feature Names as your reference to assemble to - or just give it one specific CSYS at a time.
For example:
ASSEMBLE MODEL bolt.prt PRT_CSYS frame.asm BOLT_CSYS_* <-- works even if csys add/removes
-or-
ASSEMBLE MODEL bolt.prt PRT_CSYS frame.asm BOLT_CSYS_1
ASSEMBLE MODEL bolt.prt PRT_CSYS frame.asm BOLT_CSYS_2
ASSEMBLE MODEL bolt.prt PRT_CSYS frame.asm BOLT_CSYS_3
Much of this depends on how the CSYS's were put into the design and when you want to place the bolts in your final assembly - assuming there is some change happening that requires the process to re-run at some point.
IF you have a pattern table for the locations (e.g. CSYSs) that that is an option... you should look at just a simple pattern reference for the bolt (assuming they are all the same at each location) -- then make a variable name for the component placement using Pro/PROGRAM. Then drive the bolt that shows up using a variable in a relation to drive a parameter (variable). This is probably the fastest way - but assumes a design structure before you get that performance benefit. You also have to have very well defined/consistent references for any other optional models you want to use via the variable placement - they have to be the same name)
The last option I presented is the fastest overall - especially with very large numbers of assembly placements. But this also assumes the same components at each location.
Hope all that makes sense.
Dave
I am interested in your last option, but I thought pattern tables only really worked for dimensions? Not following exactly how this would work.
Thanks!
There are many options.... Here is an example using CSYS pattern "Fill" of a Spline... then cuts referencing the pattern.
These examples show the later portion of my previous response using Nitro-CELL and Excel to streamline the automation process in Creo.
NOW... The BASEPLATE.prt CSYS names are (by default) "CS#" Created by Creo upon regeneration.
In Nitro-CELL - we simply assemble to those using a WILDCARD -- "CS*"
The Result:
Now let's change the source BASEPLATE Design:
After running the SAME Script from Excel using Nitro-CELL - you get this:
Hiding the CSYS Names -- this is what it looks like:
So it is that easy to do.
But let's push it a bit further -- again using Excel and Nitro-CELL to RENAME CSYS References for a more Targeted Process:
This Renames Each Pattern to be more Targeted References... say for a green bolt vs a yellow bolt.
So this is what the CSYS names look like before the rest of the process is finalized:
And after the Nitro-CELL process finished...
A Change in the BASEPLATE_2.prt -- to adjust the patterns and paths...
And the SAME Nitro-CELL Automation results in this:
So the point I was trying to make is that if you can plan for the process - naming conventions and or workflows using stable references... things get pretty easy.
Hope that helps better understand my point.
Dave
Thank you for the detailed explanation. We will have to play around with many different ideas here, but one of them for sure will be using a standard naming convention for ease of filtering and auto placing. Definitely may have to look at Nitrocell or Creoson! Turns out that we also have IFX, so that may be a better option.