Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Variant Part cannot use chained LCS reference as with Linked Part #505

Open
OrdoScintilla opened this issue Jul 2, 2024 · 3 comments
Open

Comments

@OrdoScintilla
Copy link

I have created an assembly with 2 LCSs on a first file.

On a separate file, I have an assembly, to reference multiple instances of my file.

When I use the function "Insert Part" which creates a Linked Part, or when I use the function "Create a Variant Part" the procedure is practically the same. Both work well for my part.

Yet, in the dialog box "Place Linked Part" when I insert a Linked Part, in the combo box "Attach to" the options include "Parent Assembly" as well as any other Linked Parts that have been inserted before.

image

So I can insert a Link1 with LCS1 and LCS2. Then insert Link2 (same source part) and place a constraint to match LCS1 of Link1 with LCS2 of Link2, and so on. Thus, creating a chained reference.

This is not the same case when using a Variant. When inserting a second variant, the first one doesn't appear in the combo box "Place Linked Part".

In case of first inserting a Link and then a Variant, the variant CAN be chained to the Link but not viceversa.

Given that the original part in the first file is the same, I don't understand why this is. I've tried creating assemblies where the LCS is subortinated to a Part inside an Assembly and Assembly with and without Part. What can be the explanation? Is this a problem with me knowing the right building procedure or is it a programming issue?

Thanks

@Zolko-123
Copy link
Owner

What can be the explanation ?

yes this is the expected behavior. The explanation is the following: a normal Link is a link to an object in a document (file) on the hard-disk. For a variantLink , the object is first copied into a new hidden temporary document, then modified as per variant variables, and then linked into the assembly. This means that a variantLink is a normal link to a temporary object that is re-built at each re-opening, therefore the document is different at each session. Thus, references to this temporary object would change at each re-openening, and that defies the current logic of Asm4.

@OrdoScintilla
Copy link
Author

OrdoScintilla commented Jul 5, 2024

Thanks,
The way I see it, this is a needed feature at this moment for me with the Variant. Because every positioning I have to do it's necessary for me to build the positioning manually with my own variables, and need to remember exactly what is where.
Since the positioning screen only allows numerical values and 90 degrees angle variations, I do it manually in the "data" tab for the variant, inside "assembly" group. This works well, and persists, the hassle is that it is all positioned from the assembly's origin and I have to calculate my variables and subtract or add the width of my profile because the variant's sketch constraints are not translated into the LCS's I created, as in the Linked Part.

Maybe this could be resolved in another way by the ASM4 WB.

My current alternative, If I want to work less manually with the positioning is to use the Linked Part, but then every single profile has to have its own file, so as to avoid the variants. Otherwise, when a single dimension is edited in one instance, all others are changed. This is very expensive in memory.

@Zolko-123
Copy link
Owner

for me to build the positioning manually with my own variables

think again : the assembly knows the variables of the variantLink – since it's the assembly that assigns them – therefore you should be able to calculate the position of the target LCS in the variantLink directly from within the assembly. For example if the variantLink is for a custom length of a an extruded beam, you can create an LCS in the assembly, offset by the same value as the variable of the variantLink.

And from the coding point of view it's far from trivial, the current behavior is a best compromise

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants