Custom subassembly that interacts with other subassemblies - Is it possible ?

Custom subassembly that interacts with other subassemblies - Is it possible ?

Anonymous
Not applicable
4,301 Views
13 Replies
Message 1 of 14

Custom subassembly that interacts with other subassemblies - Is it possible ?

Anonymous
Not applicable

Hello everyone. I have a question about custom subassemblies.

Is there a way to make a subassembly in the subassembly composer that can track other subassemblies and define the geometry based on them. 

So here is an example:

I have got this assembly made out of a couple of custom subassemblies made by me. 

1.jpg1.jpg

 

I would like to be able to make a subasembly that has the layers of the sidewalk.

 

Let's say

Layer 1 - 0,04m
Layer 2 - 0,04m

Layer 3 - 0,27m

 

These layers need to be in between the two curbs but there is the concrete (underneath and behind the curbs) used to fix them to the surface (That quality needs to be taken out.)  So here are a couple of screenshots:

I don't want this: 
3.jpg3.jpg

 

I would like to have this: 2.jpg2.jpg

 
Is this possible at all ?
If not I would like to hear a couple of workarounds.

Thanks in advance. 

0 Likes
Accepted solutions (4)
4,302 Views
13 Replies
Replies (13)
Message 2 of 14

Simon_Blain
Advocate
Advocate
Accepted solution

I'd try using Mark Point if I were you. I think it will do the trick 🙂

 

https://knowledge.autodesk.com/support/autocad-civil-3d/learn-explore/caas/CloudHelp/cloudhelp/2017/...

 

 

Message 3 of 14

Anonymous
Not applicable

I don't want to attach to points but to links.

I could actually play around and try to see if I can get the points to form my geometry in a subassembly and then link up the points to get the boundaries.
Then use intersections to build my layer geometry. Something like this:

Read the points (red circles):
6.jpg6.jpg

 

Link them up:

7.jpg7.jpg

 

Build the new geometry:

8.jpg8.jpg

 

 

 

I'll try it out. 

Hope to hear from other members for a different idea or workaround.

0 Likes
Message 4 of 14

Simon_Blain
Advocate
Advocate

Maybe with «set output parameter» you could but I never tried using it

 

https://forums.autodesk.com/t5/autocad-civil-3d-forum/custom-subassembly-that-interacts-with-other-s...

 

IMO the simplest is probably using a couple of mark points or using a single subassembly instead of 3

Message 5 of 14

KMercier_C3D
Advisor
Advisor
Accepted solution

To expand on what @Simon_Blain said above, you would want to use a few Set Mark Point definitions in your curb subassembly, you would likely want a total of 4 in order to be able to test where your layers will fall:  TopBackCurb, TopSubbaseFront (where it touches the curb), TopSubbaseBack, BottomSubbaseBack. However you are going to need a total of 8 Get Mark Point in your sidewalk subassembly the 4 listed above but a right version and a left version. Therefore at the bottom of your curb subassembly definition I'd add a Decision with Side="Left" and then on the True/Left side define four marked points called LeftTopBackCurb, LeftTopSubbaseFront, LeftTopSubbaseBack, LeftBottomSubbaseBack, and then on the False/Right side do the same but replace Left with Right. Don't forget quotes around your Mark Names. (Alternatively , instead of defining them in SAC, you could add all the MarkPoints from the Generic Tab in Civil 3D onto the curbing using the same type of namings that I listed above.)

 

Then in your sidewalk subassembly you will want to use Auxiliary Mark Point for a total of 8, each of the Left/Right marked points in the curb subassembly. You will then use logic and API functions testing the elevations of each auxiliary mark point to determine how your sidewalk layers will be truncated or not. You may also want to work in some logic to test if the auxiliary mark point exists in the first place in order to allow your sidewalk subassembly to still work even if there are no marked points (and therefore nothing would be truncated on that side).

 

Get Mark Point Info

Set Mark Point Info

 

If you don't like mark points you could also consider doing a similar type of thing with Input Parameters/Output Parameters and Use Parameter Reference. But I think that would end up being more complicated in the long run. 



Kati Mercier, P.E. | LinkedIn | AutoCAD Civil 3D Certified Professional
Pronouns: She/Her
Co-author of "Mastering AutoCAD Civil 3D 2013"
AU2019 Speaker::: CES321590: Analyze and Revise Existing Subassembly Composer PKT Files for AutoCAD Civil 3D
AU2017 Speaker::: CI125544: Analyze and Devise in Subassembly Composer
AU2012 Speaker::: CI3001: Reverse Engineering with Subassembly Composer for AutoCAD Civil 3D
AU2011 Speaker::: CI4252: Create Subassemblies That Think Outside the Box With Subassembly Composer for AutoCAD® Civil 3D®

Message 6 of 14

Anonymous
Not applicable

Does the Set Mark Point and Get Mark Point need to be in one subassembly ? 

0 Likes
Message 7 of 14

Anonymous
Not applicable

Sorry some questions came up.

Is there an order that I need to follow when adding the subassemblies to my final assembly ? 
Do the subassemblies need to be connected through a marker point or can there be another subassembly in between ?

Thanks in advance.

0 Likes
Message 8 of 14

Simon_Blain
Advocate
Advocate

No, you use a Set Mark Point in your first assembly and Get Mark Point in the 2nd one (the Get Mark Point will call open the Set Mark Point for the other subassembly)

 

So in your case you'd use Set Mark Points for your curbs and Get Mark Points for your sidewalk. KMercier_C3D

 

Message 9 of 14

KMercier_C3D
Advisor
Advisor
Accepted solution

In Civil 3D you need to define the subassembly that has the Set Mark Point in it before you use the subassembly that has the Get Mark Point in it. (i.e. on the Construction Tab of the Assembly Properties the Get Mark Point subassembly should be lower in the definition than the Set Mark Point subassembly)

 

Mark Point Info



Kati Mercier, P.E. | LinkedIn | AutoCAD Civil 3D Certified Professional
Pronouns: She/Her
Co-author of "Mastering AutoCAD Civil 3D 2013"
AU2019 Speaker::: CES321590: Analyze and Revise Existing Subassembly Composer PKT Files for AutoCAD Civil 3D
AU2017 Speaker::: CI125544: Analyze and Devise in Subassembly Composer
AU2012 Speaker::: CI3001: Reverse Engineering with Subassembly Composer for AutoCAD Civil 3D
AU2011 Speaker::: CI4252: Create Subassemblies That Think Outside the Box With Subassembly Composer for AutoCAD® Civil 3D®

0 Likes
Message 10 of 14

Anonymous
Not applicable

I did them separately.

So I added my subassemblies in this order: The order I add my subassemblies.The order I add my subassemblies.

 And the result is this (reads the left but not the right points): 

Reads the left but not the rightReads the left but not the right

 Got in the eventviewer:  P6, P7, P8 "Markpoint does not exist":

7.jpg7.jpg

 

I tried this way around with the "move" (marked in the yellow square) command from the tool palette:

 

giphygiphy

 

I got the same problem as before. 

I had a try without using the move command but by grabbing the blue square box and moving it that way - Boom no problem with reading the Get Mark Points but then i had a look - it doesn't change with the sidewalk slope change... it stays stationary at that point in the assembly... any ideas ?  

giphygiphy

 
Thanks in advance.

0 Likes
Message 11 of 14

joantopo
Mentor
Mentor
I am doing it and it is perfect.
Some tricks to take into account:

-If you will do mirror in the assembly, put a Decision (Side=Left) to put 2 set mark points with different mark name pointing to the same point.
For example, I put in the mark name the sufix "_RIGHT" or "_LEFT" according to the same.
Or even you could add a string variable with the content of the mark name.
Remember that mark name must be always in capital letter.

-you can use the "delta x" or "delta y" of an auxiliary point to save data such as length, index of a selected enumerarion, etc.. so that in the second subassembly you can check that data with a get mark point.
This way, you don't have to use output parameters to transfer data between subassemblies.

-Regarding the second subassembly with gwt mark points, due to SAC cannot recognize them in SAC, I have a bool input parameter called "Test-SAC" which if the Decision is Yes then uses directly a point, not a get mark point. (3 points with he same number point)
Here I check the side of the subassembly to get the properly mark point according to the mark name with its side.
When I use this second subassembly in civil 3d, I change the parameter "Test-SAC" to No.
Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
Message 12 of 14

Anonymous
Not applicable

Could you get a screenshots or something for the tricks. I can't seem to get the hang of some of them. I got it working, by importing a subassembly with just two points before I insert my garden curbs. 

0 Likes
Message 13 of 14

joantopo
Mentor
Mentor

Ok.

In the next post I will put some screenshoots.

 

I must say that I had to do this not to expand a subassembly or because I wanted to do it for pleasure.

 

 

SAC has a big problem with its performance when the subassembly starts to be a little bit big ( I am laughing every time that I think that 45 KB file is a big file.. )

 

 

https://forums.autodesk.com/t5/autocad-civil-3d-forum/sac-performance/td-p/7826139

 

So, I had to use set/get mark points by obligation and I had to split my subassembly in several subassemblies.

 

 

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
0 Likes
Message 14 of 14

joantopo
Mentor
Mentor
Accepted solution

If I had to do again the first subassembly, I would put the Decision at the end of the code line taking advantage of the same Decision to put all the "set mark" points.

 

This way, it would be tidier.

 

sa-1.jpgsa-1.jpg

 

 

 

 

And here the second subassembly:

I missed to say that the normal point used to "Test-SAC" = Yes is also used in Layout mode.

 

I highlighted the point in order to you could see the properties.

 

sa2-a.jpgsa2-a.jpg    sa2-b.jpgsa2-b.jpg

 

 

Regards.

 

Autocad C3D 2019 SP3, 2020 & 2021
Intel I9 9900K with frontal watercooler alphacool eisbaer 360 (original fans mounted in pull)- 3 fans Corsair 120 ML PRO in push.
MOBO Gygabyte Z390 Aorus Master- Corsair RGB Vengeance 64GB RAM (4x16) CL16
Nvidia Quadro RTX 4000
Samsung 970 EVO PLUS 1TB (unit C). Samsung 970 PRO 512GB (for data)
Power Supply: Corsair TX850M PLUS


Descubre mi programa VisorNET para Civil 3D:
https://apps.autodesk.com/CIV3D/es/Detail/Index?id=appstore.exchange.autodesk.com%3avisornet_windows32and64%3aes
0 Likes