kbwbe / A2plus

Another assembly workbench for FreeCAD, following and extending Hamish's Assembly 2 workbench
GNU Lesser General Public License v2.1
168 stars 69 forks source link

A2plus Feature Wishlist #88

Open ManuelKrause opened 6 years ago

ManuelKrause commented 6 years ago

As the A2plus assembly workbench for FreeCAD gets more attention over time, users may have wishes for e.g. added features, added constraints to apply and convenience enhancements etc.

This thread should give you room for adding wishes.

I'd continuously edit this top post to summarize the proposals in this thread. To ease reading I'd put fulfilled wishes at the bottom of this post. If interested, please, read the details in this thread. The current state is from 20190510, topics listed chronologically.

This is no voting, so please only add NEW proposals. And please also complain, if your topic wasn't picked up properly.

2.1 as assembly2 does, the multiple constraints for screws, bolts,... 2.2 be able to enable/disable a constraint without the need to delete and recreate it 2.3 constrain to system axes 2.4 symmetric constraint 2.5 make 2 faces of a part symmetric to 2 faces of another part 2.6 direct stp importing 2.7 a command to make all objs in the current file as a2p parts 4.1 Conversion routines from Assembly2, v0.16 and earlier versions of A2p. Backwards compatibility 5.1 Move any part inside the assembly directly by LMB-click + hold + swipe. Movement possible according to it's constraints and DOF 6.1 Use more universal Icons where applicable 7.2 Popup for Constraint's name/text editing 8.1 "fork" feature (?evolutive design habit?) 11.1 Dimensions Draft-WB comes not through subassemblies 11.2 Pictures comes not through subassemblies 13.1 a constraint for a circle <-> circle tangency, e.g to make cylinder parts tangent 14.1 pointPointDistance 14.2 pointLineDistance 14.3 angleBetweenLines 14.4 angleLineToPlane 16.1 Apply linear/ polar patterns to imported parts 16.2 Proper representation of these pattern-constrained parts in parts-list

Thank you all for participating, best regards, Manuel

List of fulfilled wishes: 2.8 BOM (Bill of Materials) to spreadsheet

DONE with A2plus' "Parts Info" and "Parts List" commands

2.9 a command that temporary changes colors of objects according to their DOF, i.e. red fully constrained, amber partially constrained, green free to move, blue overconstrained

DONE with A2plus' "Show DOF labels"

3.1 distance value entry popup for plane constraints and skip

DONE: in A2plus V0.4.xy

#WORKAROUND for "skip": Simply use the Undo function of FreeCAD

7.1 Constraint: A circle between a slot

DONE: pointOnPlane with center of circle as point-selection

9.1 circle cut cylinder, perpendicularity to a cylinder for "same axis" constraints (e.g. no way to constrain a tube in a hole)

DONE: done by @Turro75's help

10.1 ...helpful to have also a 'save and close'-button

DONE: in A2plus V0.4.xy

12.1 The conversion of fasteners to A2+ parts should allow multiple items selection

DONE: by @easyw: PR 238)

14.5 axisPlaneVertical

DONE within A2plus V0.4.19

15.1 The ability to import multiple and/or separate parts from the same fcstd file

DONE within A2plus V0.4.20, with "ImportShapeReference" command

ManuelKrause commented 6 years ago

First named feature wishes came from @Turro75 in the freecad forum, I'd like to cite:

1) as assembly2 does, the multiple constraints for screws, bolts,... very useful, I guess that hamish's code is nearly ready to be integrated 2) be able to enable/disable a constraint without the need to delete and recreate it. 3) constraint to system axes 4) symmetric constraint 5) make symmetric 2 faces of a part to 2 faces of another part (I'll provide an example at the right moment), I found it very useful in the past, in the end it is a plane constraint where the offset is defined by the distances of faces. 6) direct stp importing, and hopefully a command to make all objs in the current file as a2p parts 7) BOM to spreadsheet

and as last... 8) a command that temporary change color of objects according to its DOF, i.e. red fully constrained, amber partially constrained, green free to move, blue overconstrained or something like that

ManuelKrause commented 6 years ago

Koemi: added his wish in the forum: When adding a plane constraint a screen pops up asking for a distance (default=0); when necessary you can directly type in the value; if not necessary simply just click next to the popup-screen to make it disappear again. SolidWorks does this trick also.

luzpaz commented 6 years ago

@ManuelKrause you can use checkboxes example:

ManuelKrause commented 6 years ago

@luzpaz: Let's keep on only collecting ideas on here at first. Later @kbwbe decides what to do next. It's his project and only he decides the appropriate development pace.

WandererFan commented 5 years ago

Conversion routines from A2, v0.16 and earlier versions of A2p. Backwards compatibility was one of the big complaints in the v0.17 release.

rkoeman commented 5 years ago

Move any part inside the assembly directly by LMB-click + hold + swipe. Movement possible according to it's constraints. So if a part has DOF it can move (rotating, sliding etc.). Without DOF it stays. The 'Move part'-button necessity vanishes (I think).

slhh commented 5 years ago

Try to reuse the contraint icons of the sketcher, and use less, but more universal contraint icons where applicable. For a example: A 'coincident' icon can be used to generate the following constraints based on the type of selection:

Even the following contrains might share the same icon, because it's still some kind of partial coincidence:

A 'parallel' icon can be used to generate the following constraints:

polemidis commented 5 years ago
silopolis commented 5 years ago

Le dim. 28 oct. 2018 à 02:59, Manolis Karamousas notifications@github.com a écrit :

-

I liked the new feature recently added to the assembly2, when a new constraint was created, a pop up screen asked for some extra text. So the user could easily add a "z" or "y" or some other identification to the text string of the constraint. Made it easier to identify them later. Of course a graphical approach could be used later, but the text solution should be easily adopted for now

Seconded, I'm using it for all the constraints I create

kbwbe commented 5 years ago
* A constraint that I regularly miss is a circle between a slot!

This has been done within version V0.1.5.1 Use pointOnPlane with center of circle as point-selection. Now it is possible to use an offset.

silopolis commented 5 years ago

Hi, I'm badly missing the "fork" feature. Used to use it constantly in a kind of evolutive design habit.

f4grx commented 5 years ago

Hello, What I miss is the ability to use a circle cut perpendiculary to a cylinder for "same axis" constraints, eg I have no way to constrain this tube in this hole: freecad_howtoconstrain

Thanks for your awesome plugin.

Turro75 commented 5 years ago

Hello,

do You mean this?

[image: image.png]

Il giorno mer 16 gen 2019 alle ore 17:44 f4grx notifications@github.com ha scritto:

Hello, What I miss is the ability to use a circle cut perpendiculary to a cylinder for "same axis" constraints, eg I have no way to constrain this tube in this hole: [image: freecad_howtoconstrain] https://user-images.githubusercontent.com/5264483/51264182-32e32500-19b6-11e9-8af2-e90393c754b5.png

Thanks for your awesome plugin.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/kbwbe/A2plus/issues/88#issuecomment-454850446, or mute the thread https://github.com/notifications/unsubscribe-auth/AKY85s5sA4cur3_HxaUmpwDBOnY4BSzMks5vD1bSgaJpZM4Wc7ie .

walterwissmann commented 5 years ago

We have an 'open subassembly'-button: open_subassembly

It would be very helpfull to have also a 'save and close'-button save_close_subassembly

to navigate fast trough subassemblies

f4grx commented 5 years ago

@Turro75 Sorry for the late reply. I cant see your image :(

Turro75 commented 5 years ago

@f4grx

@Turro75 Sorry for the late reply. I cant see your image :(

image

f4grx commented 5 years ago

Turro: exactly!

So how do you do that, I cant find an axis for the intersecting hole.

Turro75 commented 5 years ago

Simply I selected the green parts and then set an axis constraints

Regards

Il giorno gio 14 feb 2019, 15:27 f4grx notifications@github.com ha scritto:

Turro: exactly!

So how do you do that, I cant find an axis for the intersecting hole.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/kbwbe/A2plus/issues/88#issuecomment-463646419, or mute the thread https://github.com/notifications/unsubscribe-auth/AKY85iDfFYhbsr60NCiukXyhfvcCBIZQks5vNXI1gaJpZM4Wc7ie .

walterwissmann commented 5 years ago

These two techniques are day by day work pieces. They should come.

Walter

polemidis commented 5 years ago

Feature request plz: The conversion of fasteners to A2+ parts should allow multiple items selection :)

easyw commented 5 years ago

@polemidis @kbwbe

Feature request plz: The conversion of fasteners to A2+ parts should allow multiple items selection :)

please have a look at my latest PR ... it should address this feature request

walterwissmann commented 5 years ago

Hi, i have found an issue with transparency. I am not sure it comes from A2Plus... So, i will send the files for test it to you. But it is an assembly with around 30 Files in around 10 folders.

Now my Idea is A2plus could collect them in a ZIP-File... This is also practical to send huge assemblies to other developers ;)

VG Walter

ManuelKrause commented 5 years ago

@walterwissmann The transparency issue is known and present since months. This particular thread is not the place to complain about it. And by the way, you don't need to send huge assemblies related to your original post. If current FC code goes wrong it also occurrs with smaller assemblies! (2nd level with one transparent part vs. one fully colored) I'm really trying my best to test other color-handling variants, but haven't found enough time for all so far.

Manuel

walterwissmann commented 5 years ago

Ok, thank you, Manuel.

BR Walter

Perlovka commented 5 years ago

Hi, is it possible to highlight selected constraints? E.g. when you select constraint in parts tree, it's subelements becomes highlighted in main window. Thanks.

ManuelKrause commented 5 years ago

@Perlovka

Hi, is it possible to highlight selected constraints? E.g. when you select constraint in parts tree, it's subelements becomes highlighted in main window. Thanks.

This is already effectively working with A2plus: Just select the constraint and then click the (red-lighted) Lense from the A2plus WB, then you get a highlighted view of your constraint.

ManuelKrause commented 5 years ago

Can there be a constraint for a circle <-> circle tangency? In the following meaning: I want to attach one cylinder's outer shape to one other cylinder's inner shape. This may be also interesting for some gear assemblies, attaching one radial face to another.

Perlovka commented 5 years ago

@ManuelKrause thanks! I missed this button )

kbwbe commented 5 years ago

Can there be a constraint for a circle <-> circle tangency? In the following meaning: I want to attach one cylinder's outer shape to one other cylinder's inner shape. This may be also interesting for some gear assemblies, attaching one radial face to another.

Hi Manuel, there are several useful constraints still missing. Your case could be managed by an axisOffset constraint.

Others useful constraints could be:

Each new constraint causes a lot of work, especially the tests and the debugging in 3D. I hope i can add some few new constraints within next time. (this could be several month)

ManuelKrause commented 5 years ago

Hi @Turro75 : I've had taken some of your feature wishes from the FC forum to this Wishlist in last September: One of them, cited below, seems to be solved for me by A2plus' ability to attach colored labels for the DOF of parts.

and as last... 8) a command that temporary change color of objects according to its DOF, i.e. red fully constrained, amber partially constrained, green free to move, blue overconstrained or something like that

Does it fulfill your needs? Then I can strike it out in the top posting's list.

Turro75 commented 5 years ago

Hi Manuel,

Yes it is

m0n5t3r commented 5 years ago

Not sure if this is the right place or it should be filed as a bug, but:

The ability to import multiple parts from the same fcstd file would be nice; any moderately complicated thing will have parts that depend on other parts, so the current working workflow is to export all parts as stp and import into a2plus for assembly, and then re-export everything when things change...

What I expected to happen when I tried to import a fcstd file with multiple objects was something along the lines of "here's a list of bodies / parts from the file, which ones do you want to import?"; I'm ok with requiring bodies to be placed in part containers for this, as a means of signaling "this is a thing you should import as one object".

ManuelKrause commented 5 years ago

@m0n5t3r : I actually don't get your point. Can you please explain your use case a little more? Normally I'd set objects of a part .fcstd as invisible, if I don't want to work with them for assembly purposes. The A2plus assembly WB would only work with the visible objects then. Upon changes the A2plus reload button would recover the scene (and constraints) if all shown objects' number remains the same. You could also divide the current multiple-parts .fcstd into multiple single object's .fcstd s and assemble them with A2plus, but that's the additional work you want to avoid IIUC. If this stuff above doesn't help, it may be better, you just ask the same question in the Forum https://forum.freecadweb.org/viewtopic.php?f=20&t=29207&start=1600. There are many helpful and experienced people.

Best regards

m0n5t3r commented 5 years ago

say I have a file with multiple objects (in my case, quadcopter frame - there's the base frame, 4 legs, a lower plate, 4 small reinforcement parts); they need to be in the same file because all dimensions / shapes depend on the main frame's dimensions (shape binders)

Right now, I need to export each of them to a separate file and then import those into the assembly; it would be nice if it was possible to import all existing objects from the file as separate parts (because it imports everything as a single part now, even if I have a single thing visible)

ManuelKrause commented 5 years ago

@m0n5t3r: Ah yes, thank you for your explanation! Now your proposal makes sense. I haven't had knowledge of or used this way of construction, so far, thanks for letting me know. :) Let's wait and see what Klaus, @kbwbe, the A2plus workbench maintainer, can say regarding your idea. Maybe he can point you to another more simple way to achieve your goal with current A2plus' infrastructure. Your proposal, from my first thoughts about, would make it necessary to implement a list of imported (3D) objects per import file within the assembly file, where the entries are pointing to the different (3D) objects in the subordinate file.

kbwbe commented 5 years ago

@m0n5t3r Why do you export all parts separatly to a file and import them separatly to A2plus ? If you have done an important sub assembly within e.g. Part-Design, you could import this complete document to A2plus in one step. There are draw backs regarding parts list. But for first design of whole concept, a simplified workflow is possible by this way. If the design has been completed, PD docs could be split up for separate production documents.

daniel-scatigno commented 5 years ago

@kbwbe What do you mean by "important sub assembly within e.g. Part-Design" I have a document with 2 Distinct parts (and one different body for each) when I import the file(FSCAD with more than one part/object) , They all came as one part! And so I can not constraint anything, Am I missing something? I have seen some tutorials on youtube, they all import each file with single Part.

easyw commented 5 years ago

@m0n5t3r @zmp2000 please have a look at here https://github.com/easyw/Manipulator/issues/20 there is a mixed solution using A2p and Arch external references... @kbwbe External references, as used by Arch could be useful also for A2p WB when a user needs to have parts in the same file because all dimensions / shapes depend on the main frame's dimensions (shape binders) Arch external reference forum topic

m0n5t3r commented 5 years ago

external references seem to work, indeed, but need to be converted to a2plus objects: https://forum.freecadweb.org/download/file.php?id=82820 (from https://forum.freecadweb.org/download/file.php?id=82820)

easyw commented 5 years ago

@m0n5t3r infact, the idea would be to add to A2p a field to chose what to import like in Arch Ext Ref. Then when importing it would be possible to import all visible objs or a single Part feature like in Arch. @kbwbe what do you think?

kbwbe commented 5 years ago

@easyw yes, adding such field makes sense. As A2p objects are not totally different from Arch Ext Ref in basic idea. I will have a look at yorik's source code /freecad/Mod/Arch/ArchReference.py i guess.

daniel-scatigno commented 5 years ago

@easyw I don't follow. Sorry if it´s a dumb question (I´m a newbie) but when I import using external references (E, X shortcut), the parts imported don't have a property "fixed position" and so when I try to create any constraints I got a waning (No parts with fix position) and constraints don't work!

As @m0n5t3r stated, it only works if we convert it to A2Plus object, but than we loose the ability to update the object!

easyw commented 5 years ago

As @m0n5t3r stated, it only works if we convert it to A2Plus object,

true

but than we loose the ability to update the object!

ATM you can 1) create a file using Arch Ext Ref (i.e. arch-ext-ref-1.FCStd) 2) create a file in A2p (A2p-asm.FCStd) and import the previous file (arch-ext-ref-1.FCStd) 3) when you want to update the A2p-asm.FCStd you need to update and save your Arch Ref file (arch-ext-ref-1.FCStd) and then update the top level file (A2p-asm.FCStd)

BTW I think @kbwbe is going to implement this option inside A2p WB, avoiding this workarund :smile:

kbwbe commented 5 years ago

@easyw , @m0n5t3r, @zmp2000 Hi guy's, please checkout the devel branch and test. There is a second new import command, which imports selectable bodies from a multibody document. This is the button:

icon

easyw commented 5 years ago

@kbwbe it seems to working fine... it is a nice addition! :smile_cat: I think you missed to add @ InitGui.py#L155 'a2p_ImportShapeReferenceCommand', otherwise you get the command enabled only if recursive update is enabled.

m0n5t3r commented 5 years ago

confirming it works, I had to dig through code to figure out it needs recursive update :)

daniel-scatigno commented 5 years ago

@kbwbe It works like charm after adding the import 'a2p_ImportShapeReferenceCommand'

kbwbe commented 5 years ago

I updated the devel branch. The new button is now available without need to activate recursive updates. Also a first small bug is fixed (function getIcon() of importedParts got struggled)

ManuelKrause commented 5 years ago

@easyw , @m0n5t3r, @zmp2000, @kbwbe Hi people, yet another nice example for successful collaboration based on the "open-source" principles. Good ideas, good hints and a good implementation. Thank you all for your invested time and work. I've just tested it for fun with a true A2plus assembly (although I know there are better means, e.g. to avoid future confusion) and it works upto one level below (where the assembled part names are shown).

ManuelKrause commented 5 years ago

Hi again, thanks for using this thread for helping to improve A2plus.

When reviewing the proposals list i get to some limits. Currently I have four categories: (a) I dont understand it, due to language misunderstandings. (aa) I don't understand it without more detailed use-case description. (aaa) All info clear, it's developer's choice to pick it up or not. (aaaa) Not sure, if applicable within FreeCAD so far. I'd focus on the first two categories first:

Please help me to improve your proposal by adding more information: (a) language: 2.1 "as assembly2 does, the multiple constraints for screws, bolts,..." @Turro75 Please clarify what you mean with "the multiple constraints". 8.1 "fork" feature (?evolutive design habit?) @silopolis I completely don't understand this. Please clarify! (aa) use case/ more info needed: 2.8 BOM to spreadsheet @Turro75 What do you expect happenening, in more detailed description? 6.1 Use more universal Icons where applicable @slhh Do you want more and different Tools grouping? 7.2 Popup for Constraint's name/text editing: @polemidis I can edit the Constraint's name in the tree view. Isn't that sufficient for you?

@kbwbe: Regarding the following: 3.1 distance value entry popup for plane constraints and skip: Wouldn't it indeed be a good idea to add a skip button to the planeCoincident command (and maybe related), to give the ability to revert the movement after having hit "Solve" before reverting it? ATM parts remain in the solved state anyway. This is not always the wanted position. 7.2 regarding "Popup for Constraint's name/text editing:" testing I've noticed this: Maybe a BUG?: After editing the first constraint's name in TreeView the counterpart's mirror constraint doesn't take it up.