cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Did you know you can set a signature that will be added to all your posts? Set it here! X

increasing the quantity in top down design and skeleton

ss3
7-Bedrock
7-Bedrock

increasing the quantity in top down design and skeleton

Hi 

I am working on a Top down design with skeleton creation. I created skeleton which is working perfectly fine. 

i am stuck with quntity to be increased. Let me explain in brief: Assume a base or platform of LXWXD= 600X1000X20(all dimensions in mm). And is assembled with 4 panels of same length and width of 250mm each.

If i control these LXWXD in my skeleton, my assembly is regenerating succesfully. (attached jpeg for reference)

 

But i need a solution like, if i increase width from 1000mm to 1500mm, instead of 4 panles of 375mm each, i need 5 panels of 300 mm each OR 6 panles of 250 mm each. I need quantity of panles to be increase and also if i decrease the width from 1000mm to 600mm , number of panles should decrease.

 

How can i control quantity;

1) Is there any way in pro-programing(i think it can cntrol relations only)

   Can i use if else relation?

 

2) can i use family table for my skeleton or to my main assembly? if so help me with procedure.. 

 

3) Or need to take help of CAD customization or J link?

 

Please help me out if any other solutions for this!

 

Thank you, Sateesh

25 REPLIES 25
jbob
11-Garnet
(To:ss3)

Pattern the panels, create a length paramter and write a relation something like

if length is greater than 900 but less than 1100, # of panels equals 4, if # of panels equals 4

lenght of panel equals 250. add as many variations of this as required.

ss3
7-Bedrock
7-Bedrock
(To:jbob)

Hi @jbob You meant to say to write the program in assembly level or skeleton level!  please can you help me with the programming! 

jbob
11-Garnet
(To:ss3)

sure, what determines the width, is it the size of the panels or do you just select a width? If it is the panels, can the panels be manufactured in any width or are the made in 50mm increments or some other number?

jbob
11-Garnet
(To:jbob)

if you have a skeleton feature  where the width is d1:2 and the length is d2:2 and the depth is d0:2

your panel is width d1:0 and the length is d2:0 and the depth is d0:0

pattern the panel and you have 3 of components as p2:1 and dist between panels as d1:1

then you could have assembly relations something like

/*length
d2:0 = d2:2
/*depth
d0:0 = d0:2
/*width
IF d1:2 == 1000
 p2:1 = 4
 d1:0 = d1:2/4
 d1:1 = d1:0
ELSE
IF d1:2 == 1500
 p2:1 = 5
 d1:0 = d1:2/5
 d1:1 = d1:0
ENDIF
 ENDIF

you would just change the skeleton feature to adjust the model. this is limited because the user would need to enter the correct number for the skeleton width dimension.

ss3
7-Bedrock
7-Bedrock
(To:jbob)

Thank you @jbob, i got some idea. 

 

What if , if width is in incrememnt of 25mm?

 

And how can i control the range in program..

that is,

if width is ranges from 800-1200mm i need number of panles to be 2

if width is ranges from 1200-1400mm i need number of panles to be 4

if width is ranges from 1400-1600mm i need number of panles to be 6

 

Sorry if i am asking too much questions! i am stuck with this and facing these issues to proceed!

 

Thank you 🙂

dschenken
21-Topaz I
(To:ss3)

P-A-N-E-L-S

jbob
11-Garnet
(To:ss3)

here is a sample of what you could do, this is not complete but you can see where this would go.

/*length
d2:2 = d2:0
/*depth
d0:2 = d0:0
/*width
IF d1:0 >=800 & d1:0 <= 824
 d1:2 = 800/2
 p2:1 = 2
 d1:1 = d1:2
ELSE
IF d1:0 >=825 & d1:0 <= 849
 d1:2 = 825/2
 p2:1 = 2
 d1:1 = d1:2
ELSE
IF d1:0 >=850 & d1:0 <= 874
 d1:2 = 850/2
 p2:1 = 2
 d1:1 = d1:2
ELSE
IF d1:0 >=875 & d1:0 <= 899
 d1:2 = 875/2
 p2:1 = 2
 d1:1 = d1:2
ELSE
IF d1:0 >=1200 & d1:0 <= 1224
 d1:2 = 1200/4
 p2:1 = 4
 d1:1 = d1:2
ELSE
IF d1:0 >=1225 & d1:0 <= 1249
 d1:2 = 1225/4
 p2:1 = 4
 d1:1 = d1:2
ELSE
IF d1:0 >=1250 & d1:0 <= 1274
 d1:2 = 950/4
 p2:1 = 4
 d1:1 = d1:2
ELSE
IF d1:0 >=1275 & d1:0 <= 1299
 d1:2 = 1275/4
 p2:1 = 4
 d1:1 = d1:2
ENDIF
 ENDIF
  ENDIF
   ENDIF
    ENDIF
     ENDIF
      ENDIF
       ENDIF

ss3
7-Bedrock
7-Bedrock
(To:jbob)

Thank you @jbob,  i made the same above relations simpler and skeleton is working fine.

 

After skeleton, 

Now i modeled panel parts using particular Skeleton curve as a reference,

When i decrease the width number of panels are not getting suppers.

Means when i decrease width from 1600mm  to 900mm , skeleton is working fine but sub-parts are relates to main assembly, they need to get suppress here i think.

 

Can we suppress features using relations written in skeleton model?

 

 

jbob
11-Garnet
(To:ss3)

did you pattern the panels? If yes did you change the number of panels in the relations? I think the relations could be at the assembly level as well

ss3
7-Bedrock
7-Bedrock
(To:jbob)

Yes @jbob i pattern the panels.

As my relations are in skeleton, Took refernce from it and pulled sketches into my sub assembly.

 

But i am getting popup in both top level and sub level to give twice the input , i.e if i wanna change the width, in top level assembly and also in sub assembly i need to give same value and regenerate both.

 

Is this right method? May be any other paths to get skeleton relations into assembly!

Have you defined any INPUT parameters in the sub-assembly? If so, you will need to EXECUTE those parameters from your main-assembly.

jbob
11-Garnet
(To:ss3)

I put the relations at the assembly level not the skeleton level.

rmcboaty
7-Bedrock
(To:jbob)
ss3
7-Bedrock
7-Bedrock
(To:jbob)

Great, i transferred all skeleton level relations to assembly level. I can able to control the quantity. Thanks @jbob

 

Can we suppress a part or number of parts with the help of proprogram?

Yes you can suppress part(s) with PRO/PROGRAM

 

If you look at the PRO/PROGRAM of an assembly, you will see:

 

INPUT

END INPUT


RELATIONS

END RELATIONS

 

THE MODEL TREE OF YOUR ASSEMBLY

 

ADD PART DIN965_M5X40
INTERNAL COMPONENT ID 235457
PARENTS = 16973(#54)
END ADD

 

MASSPROP

END MASSPROP

 

You can write "IF THEN ELSE" statements around the features and components to suppress/resume those with PRO/PROGRAM.

 

For example:

 

IF INSERT_BOLT == YES

ADD PART DIN965_M5X40
INTERNAL COMPONENT ID 235457
PARENTS = 16973(#54)
END ADD

END IF

 

Where INSERT_BOLT is a parameter which can be defined in the INPUT or in the RELATIONS.

Ofcourse there are also the EXECUTE statements (assembly only) and the POSTRELATIONS section (part or assembly).

ss3
7-Bedrock
7-Bedrock
(To:HamsterNL)

Thanks for the rply,

 

How to know -

PARENTS = XX(XX) --->>VALUE?

 

If my master assy is XXX.asm, and XXX-A is subassembly. and inside this sub assembly i need to suppress parts. and my program is in master assy XXX.asm

If i open program in XXX-A.asm, i can see 

 

ADD PART partname1

INTERNAL COMPONENT ID 48

END ADD

 

ADD PART partname2

INTERNAL COMPONENT ID 49

END ADD

 

ADD PART partname3

INTENAL COMPONENT ID 52

END ADD

 

If i define DEPTH>=850 & DEPTH<=1000; partname2.prt & partname3.prt should get suppress.

If i define DEPTH>=1001 & DEPTH<=1600; partname1.prt  should get suppress.

 

In your example, does DIN965_M5X40 gets suppress or resume?

because its saying command ADD PART

 

And also heard "ADD SUPPRESSED PART" -How to use this!

If you want to use a parameter from your master-assembly in a sub-assembly, you can use EXECUTE statements drive the parameters.

 

Open the PRO/PROGRAM of your subassembly XXX-A and add an input parameter DEPTH:

INPUT

DEPTH NUMBER

END INPUT

 

Now, open the PRO/PROGRAM of your masterassembly XXX and add:

INPUT

DEPTH NUMBER

END INPUT

 

RELATIONS

...

END RELATIONS

 

EXECUTE ASSEMBLY XXX-A

DEPTH = DEPTH

END EXECUTE

 

Explanation: DEPTH (defined in XXX-A) will get the value of DEPTH (as defined in XXX)

 

Now you can test if the EXECUTE statements are working: regenerate your master-assembly XXX and enter a value for DEPTH. Regenerate the master-assembly. Open your sub-assembly XXX-A and evaluate the value of DEPTH. The value of DEPTH should be the same.


@ss3 wrote:

 

In your example, does DIN965_M5X40 gets suppress or resume?

because its saying command ADD PART


In my example, DIN965_M5X40 will be resumed. In short, if the statement is true, then the part will be resumed. If the statement is false, the part will be suppressed.

 


@ss3 wrote:

And also heard "ADD SUPPRESSED PART" -How to use this!


You don't.

 


@ss3 wrote:

ADD PART partname1

INTERNAL COMPONENT ID 48

END ADD

 

ADD PART partname2

INTERNAL COMPONENT ID 49

END ADD

 

ADD PART partname3

INTENAL COMPONENT ID 52

END ADD

 

If i define DEPTH>=850 & DEPTH<=1000; partname2.prt & partname3.prt should get suppress.

If i define DEPTH>=1001 & DEPTH<=1600; partname1.prt  should get suppress.

 


 

It's easier to think "when should the part be shown" 🙂

 

IF DEPTH >= 850

IF DEPTH <= 1000

   ADD PART partname2

   INTERNAL COMPONENT ID 49

   END ADD

 

   ADD PART partname3

   INTENAL COMPONENT ID 52

   END ADD

ELSE

   ADD PART partname1

   INTERNAL COMPONENT ID 48

   END ADD

END IF

END IF

ss3
7-Bedrock
7-Bedrock
(To:HamsterNL)

Thanks for the rplys.

I tried the mentioned procedures unfortunately it dint worked.

Pease let me know the program to be to suppress part/s. I tried different ways but facing errors to do it through pro/program.

 

I uploaded 2 assemblies,(CHECK3 & CHECK4 ATTACHED) one assy has direct formula and 2nd assy has family table.

In both the cases i dint get to suppress part.

 

IF LOAD=="5P"

(i need SHT1.prt)

 

IF LOAD=="6P"

(i need SHT1.prt)

 

IF LOAD=="8P"

(i need SHT2.prt & SHT3.prt and SHT1.prt should suppress)

 

thank you.

Sadly I don't have Creo (still on Wildfire 4.0), but your PRO/PROGRAM should look like this

 

IF LOAD=="5P" | LOAD=="6P"

ADD PART SH1

...

END ADD

END IF

 

IF LOAD=="8P"

ADD PART SH2

...

END ADD

ADD PART SH3

...

END ADD

END IF

BenLoosli
23-Emerald II
(To:ss3)

If your panels are all 250 wide, then divide the total length by 250 and this will give you the number of instances you need, assuming that the total width is in multiples of 250.

if you need a narrow width panel to fill in, total width is 1650, then you will have 6 full panels and you can manually add the last 150 wide panel.

Multiple ways to calculate and place the panels.

It depends on if your panels are all the same size or do you have different widths to factor in.

You could take the 1650 with 6 250 wide panels and a 150 fill in panel.

You could also take the 6 panels and then recalculate the panel width so you have 6 275 wide panels.

ss3
7-Bedrock
7-Bedrock
(To:BenLoosli)

Hi @BenLoosli My panles should be of same width and as i stated earlier i stuck with increasing or decreasing the quantiy of panles. If i am having width 1000mm made of 4 panles of width 250 mm and if i change the width to 1600 then it should get chnge to 6 panles of eqvii spaced width.

 

It can be stated with  range; "Width can be 300mm is minimum and 1600mm being max width."

If width is 300mm, number of panels  equal to #1.

If width ranges from 400mm to 800mm, number of panles equal to #2

If width ranges from 800mm to 1200mm, number of panles equal to #4

If width ranges from 1200mm to 1600mm, number of panles equal to #6

 

Like this if i change the width, number of panles should get chnge.

Thank you,

 

How many different panels do you have?

I see these numbers: 250mm 300mm 375mm

 

Does the program need to calculate the optimum number of panels? (with the least amount of wasted space)

 

Any way, please don't use a zillion IF THEN ELSE statements...

 

WIDTH = 300
/***************************************************************
/* PANELS - 250mm
/***************************************************************
PANEL_250_COUNT = FLOOR(WIDTH/250)
PANEL_250_WASTE = WIDTH-PANEL_250_COUNT*250

/***************************************************************
/* PANELS - 300mm
/***************************************************************
PANEL_300_COUNT = FLOOR(WIDTH/300)
PANEL_300_WASTE = WIDTH-PANEL_300_COUNT*300

/***************************************************************
/* PANELS - 375mm
/***************************************************************
PANEL_375_COUNT = FLOOR(WIDTH/375)
PANEL_375_WASTE = WIDTH-PANEL_375_COUNT*375

With only 3 different panels widths, you could now compare the waste:

 

/***************************************************************
/* PATTERN
/***************************************************************
IF MIN(PANEL_250_WASTE,PANEL_300_WASTE) == PANEL_250_WASTE
/* PANEL 250 IS MORE EFFICIENT IN WASTE
/* NOW COMPARE 250 TO 375
IF MIN(PANEL_250_WASTE,PANEL_375_WASTE) == PANEL_250_WASTE
/* PANEL 250 IS MOST EFFICIENT
/* SET PATTERN PARAMETERS TO 250

ELSE
/* PANEL 375 IS MOST EFFICIENT
/* SET PATTERN PARAMETERS TO 375

ENDIF
ELSE
/* PANEL 300 IS MORE EFFICIENT IN WASTE
/* NOW COMPARE 300 TO 375
IF MIN(PANEL_300_WASTE,PANEL_375_WASTE) == PANEL_300_WASTE
/* PANEL 300 IS MOST EFFICIENT
/* SET PATTERN PARAMETERS TO 300

ELSE
/* PANEL 375 IS MOST EFFICIENT
/* SET PATTERN PARAMETERS TO 375

ENDIF
ENDIF

Top Tags