Git Product home page Git Product logo

a2plus's Introduction

A2plus

DocumentationForumGit repository

Total alerts Language grade: Python

Description

Another assembly workbench for FreeCAD, following and extending Hamish's Assembly 2 workbench hence Assembly2plus.

The main goal of A2plus is to create a very simple, easy to use, and not over-featured workbench for FreeCAD assemblies. Using the KISS principle: KEEP IT SIMPLE, STUPID

A2plus workbench tries to implement a new constraint solving algorithm to avoid some problems that occurred with the original solver. It is still under development and experimental at this moment but is showing some potential.

This project started as a fork of Hamish's Assembly 2 workbench (development on A2 went dormant and was unmaintained for a long period). A2plus can be used with FreeCAD from v0.16 including support for importing parts from external files.

Assembly-of-gripping-unig

Assembly2 and A2plus

Similarities

  • The workflow and the UI, so users of Assembly 2 can use it in an intuitive way
  • Same as Assembly 2 it mainly aims at importing external files to the assembly.

Differences

  • A new designed solving algorithm, able to solve some more complicated relations.
  • Different and in future more constraints, internally with different names.
  • No animation for degrees of freedom, as difficult for new solver type.
  • No collision check of parts at moment. Planned for future versions
  • Some new small features as visibility helpers (isolate and show only selected parts, transparency of whole assembly)

Is A2plus compatible with Assembly2 ?

No. A2plus would have to handle everything in same way as Assembly 2, including bugs, exact orientations, etc. You have to assemble existing projects again.

Releases

There are prereleases available, please browse the releases section of this repository.

Known Issues

A weak point is, and is similar to Assembly 2, updating / reimporting parts from external files. Constraints will break. You should delete constraints of parts before reimporting them. After that please constrain these parts again.

This behaviour is due to FreeCAD's lack of Topological Naming and is difficult to correct at the moment. This phenomena is seen in many proprietary CAD solutions. Some work is being done to address this in future releases of FreeCAD which will improve this behaviour.

Installation

Automatic Installation

FreeCAD Addon manager status

The recommended way to install A2plus is via FreeCAD's Addon Manager under the Tools → 'Addon Manager' dropdown menu.

Manual Installation

The following directions explain how to install A2plus manually on different platforms

Linux

FreeCAD(version of your choice) has to be installed beforehand.

Use the CLI to install A2plus:

$ sudo apt-get install git python-numpy python-pyside
$ mkdir ~/.FreeCAD/Mod
$ cd ~/.FreeCAD/Mod
$ git clone https://github.com/kbwbe/A2plus.git

Once installed, use git to easily update to the latest version:

$ cd ~/.FreeCAD/Mod/A2plus
$ git pull
$ rm *.pyc

Windows

Pre-requisite: FreeCAD >= v0.16+

Download the git repository as a ZIP on to you local drive.

Refer to the corresponding tutorial on the FreeCAD wiki.

Unzip the downloaded repository within your Mod/ folder. A A2plus-folder should appear within you Mod/ folder.

If you a familiar with git you can git clone https://github.com/kbwbe/A2plus.git directly in to your Mod/ folder.

MacOS

(borrowed from Hamish2014)

  • download the git repository as ZIP
  • assuming FreeCAD is installed in "/Applications/FreeCAD/v 0.17", go to "/Applications/FreeCAD/v 0.17" in the Browser, and select FreeCAD.app
  • right-click and select "Show Package Contents", a new window will appear with a folder named "Contents"
  • single-click on the folder "Contents" and select the folder "Mod"
  • in the folder "Mod" create a new folder named "A2plus"
  • unzip downloaded repository in the folder "Contents/Mod/A2plus"

Features of the A2plus workbench

(work in progress)

Current Features like shown in the workbench's toolbar:

  • Add a part from external file (Shift+A) - Begin and continue here with importing existing part or subassembly .fcstd files to the assembly

  • Update parts imported into the assembly - Use this to refresh changed parts already assembled

  • Move part - Just move selected part

  • Duplicate part - Adds one or more previously imported part(s) into assembly (hold Shift for multiple times)

  • Convert part to A2plus form - Converts an imported part to internal representation without external dependency

  • Edit - Opens the selected assembly part or subassembly in a new tab, to be changed, don't forget to save and refresh the assembly

  • Constraint Tools - Open a dialog to define constraints. Find all constraints in the opening dialog! This is the access to the A2plus constraining possibilities.

    Depending on the context, like selected faces, edges, vertices, one or more of the following list of constraints may get selectable: (After selecting the constraint, a 'Constraint Properties' dialog will appear to appropriately ask you for details, like offsets, angles and directions.) Below, first selection is meant for the first part of the constraint (parent) and the second for the second part (child). Choices lists, what you can expect to edit in "Constraint Properties" and with the "Edit selected constraint" button later on.

    • Add a point-to-point identity {pointIdentity constraint} - (1. one point vertex, 2. second point vertex)
    • Add a point-on-line match {pointOnLine constraint} - (1. one point vertex, 2. a line vertex/ edge)
    • Add a point-on-plane match {pointOnPlane constraint} - (1. point vertex or center of a circle, 2. a plane) Choices: offset
    • Add a sphere-to-sphere constraint {sphereCenterIdent constraint} - (1. first spherical surface or vertex, 2. second spherical surface or vertex)
    • Add a circular-to-circular-edge match {circularEdge constraint} - (1. parent's circular edge, 2. child's circular edge) Choices: direction (aligned, opposed) +Flip, offset
    • Add an axis-to-axis identity {axisCoincident constraint} - (1. first cylinder face/linear edge, 2. second cylinder face/linear edge) Choices: direction (aligned, opposed) + Flip, lockRotation
    • Add an axis-to-axis parallelism {axisParallel constraint} (1. first cylinder face/linear edge, 2. second cylinder face/linear edge) Selected parts will get rotated, but the axis not coincident.
    • Add an axis-to-plane parallelism {axisPlaneParallel constraint} (1. first cylinder axis or linear edge, 2. second part's plane face)
    • Add a plane-to-plane parallelism {planesParallel constraint} - (1. parent's plane, 2. child's plane) Selected planes would be parallel but not coincident. Choices: direction (aligned, opposed) +Flip
    • Add a plane-to-plane coincident match {planeCoincident constraint} - (1. parent's plane, 2. child's plane) Selected planes would be parallel and you have more choices: Choices: direction (aligned, opposed) +Flip, offset
    • Add an angle-between-planes {angledPlanes constraint} - Selected planes make the latter object to be rotated by your edited 'angle' value. Keep the angle between aprox. 0.1° and 179.9° and use planesParallel for 0° and 180°.
  • Edit selected constraint - Select a constraint in the treeview and hit this button to edit it's properties

  • Delete constraints - Remove all constraints of exactly one selected part in one step

  • Solve A2plus constraints - Manually invoke the A2pus solver (especially when AutoSolve is OFF)

  • Toggle Autosolve - By pressing this button you can enable or disable automatic solving after a constraint has been edited. If Autosolve is disabled you have to start it manually by hitting the Solve button. Disabled, this can save computation time.

  • Flip direction of last constraint - does exactly what it means for suitable constraints

  • Print detailed DOF information to console - shows the degrees-of-freedom for the current constraints' solving state, useful for analysing eventually missing constraints

  • Generate HTML file with detailed constraining structure - useful to visualize the current constraint dependencies

  • Show connected elements - highlights the parts connected by a constraint selected in treeview

  • Toggle transparency of assembly - The whole assembly will get transparent

  • Show only selected items, or all if none selected - Another visibility helper for assembly analysis

  • Create or refresh simple shape of complete assembly - the newly created compound can be found in treeview

  • Repair the treeview, if damaged somehow - After pressing this button constraints will be grouped under corresponding parts again

  • Create a spreadsheet with logistic/ordering information - Adds a spreadsheet to the treeview, editable by double-click in a new tab for part's info

  • Create a spreadsheet with a partlist of this file - Adds a spreadsheet to the treeview, editable by double-click in a new tab for assembly's BOM info

Usage hints for the A2plus workbench

(work in progress)

Have a look on the Feature list above, and... Please, follow the Tooltips in the workbench's toolbar and in the "Constraint Tools" toolbox. They describe what to do in which order.

First steps to create an A2plus assembly:

  • Create a new empty document.
  • Save the active document with a name. If not, you'd be asked for by A2plus.
  • Add a part or shapes from external file. The first imported part or shape gets set as fixed position (by default). You can change it later.
  • Add a second part or shapes from external file.
  • Select some faces or edges or vertices, you want to constrain, and push the "Constraint Tools" button, the Tools menu pops-up, alternatively you can push the button first and select the constraint's context afterwards
  • Related to the context you'd be asked in the "Constraints Properties" (sub-menu), to edit the appropriate parameters, to delete the constraint, to solve and or accept it.
  • You can edit once-set "Constraints Properties" at any time later via the "Edit selected constraint" button.

Editing a subassembly:

  • As you can also load a subassembly as a .fcstd file, you can also open it via the A2plus edit command, to edit it. Please just make sure for higher assembly stages, to reload the changes file(s).

a2plus's People

Contributors

abetis avatar chennes avatar danmiel avatar donovaly avatar easyw avatar edwin-bergstedt avatar hasecilu avatar jhn98032 avatar kbwbe avatar leoheck avatar luzpaz avatar manuelkrause avatar pushkk avatar realthunder avatar riqueenz avatar robbeban avatar syres916 avatar triplus avatar turro75 avatar wandererfan avatar yhw-miracle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

a2plus's Issues

missing possibility to set angle between axis and plane

A2plus provides already the constraint angledPlanes. To be able to define an angle it must at first make the planes parallel afterwards the angle can be set.

This should also be possible for axes and linear edges: at first make them parallel to the plane, then set the angle. So what is missing is an analogon to angledPlanes for axes/lines on planes.

Left over selected parts after "Update Parts"

There is an issue after the last update(s) that some parts stay selected without me noticing and I delete them by mistake. Even in the inactive document!. Sometimes I catch it because it throws en error of "are you sure you want to delete this because that will brake etc" and I am wondering why this showed up since what I want to select is has not dependencies. Maybe its a Freecad problem, i do not know yet. In the beginning I though it was my impression but I am getting it more and more. I have not being able to replicate it yet in order to pin it down, but I will add more specific info soon. I posted just in case you may suspect something already.

Also another thing that may be easy to improve is this. If i have a "Circular Edge Connection" [(did you mean to write Circular Edge Constraint? :)] and I update something minor in an imported part, everything stays solid after the "Update Parts Imported in the Assembly" . But if I use the "Axial Constraint" instead, every super tiny irrelevant change on the updated part will brake everything! :) :)

Feel free to close this issue, I will post a new one when I will have a solid reproducable bug.
Thank you man, you have done GREAT GREAT job already with this!!!

allow vertices in circularEdge constraint

The sphere constraint allows to select either:

  • a spherical face and a spherical face
  • a spherical face and a vertex
  • two vertices

Therefore I see no reason why the circularEdge does not also allow:

  • circular edge and circular edge
  • circular edge and vertex
  • two vertices

Putting the center point of a circular edge onto a vertex is useful.

Undo constraint deletion places it in a wronk place in the tree

When constraint is added, it appears one level down under the object that it's attached to.
When deleted and after that restored with Undo (Ctrl+Z) the constraint appears as a stand alone leaf in the tree and do not get back to its previous location.

CenterOfMass direction rotates part

  • create a CenterOfMass constraint
  • in the appearing constraint properties dialog press a few times "Flip Dir."

result: the direction is correctly flipped but the part is also randomly rotated. This additional rotation is not necessary and only makes it more complicated to assembly further (at least in my tries).

Python bug on transparent view

I use
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.15780 (Git)
Build type: Release
Branch: master
Hash: f94e76c1116ec3b818961ff65131b3d86fa5b95e
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)

and the latest a2+ 0.2.9

When I click on the toolbar button "toggle transparency on an assembly" I get this python error:

Traceback (most recent call last):
File "C:\Users\USti\AppData\Roaming\FreeCAD\Mod\A2plus\a2p_importpart.py", line 878, in Activated
a2plib.setTransparency()
File "C:\Users\USti\AppData\Roaming\FreeCAD\Mod\A2plus\a2plib.py", line 207, in setTransparency
SAVED_TRANSPARENCY.append(obj.Name, obj.ViewObject.Transparency, obj.ViewObject.ShapeColor)
TypeError: append() takes exactly one argument (3 given)
Running the Python command 'a2p_ToggleTransparencyCommand' failed, try to resume

toolbar button to delete constraints is always enabled

  • select a constraint in the model tree
  • use the toolbar button to delete constraints

result: you get the info that there is no constraint is connected.
This is sensible since the button deletes constraints from a part. Therefore the toolbar button should be deactivated when no part with an existing constraint is selected.

Contraint define dialog is always completely disabled

  • open the constraint define dialog.

result: no matter what you have selected before opening the dialog, it is always completely disabled:

constraintdefinedialog

besides this, the dialog has also no default focus button. (Should be the help button)

edit part fails for already opened parts

  • open an FCStd file in FreeCAD
  • create a new assembly
  • add some pats, including the one that you have already opened in FC
  • now highlight the part you have opened in the assembly and press the icon "edit"

result: nothing happens. In the console you see this:

Running the Python command 'a2p_editImportedPart' failed:
Traceback (most recent call last):
  File "C:\Users\USti\AppData\Roaming\FreeCAD\Mod\A2plus\a2p_importpart.py", line 617, in Activated
    FreeCAD.open(fileNameWithinProjectFile)
The project 'D:\usti\FreeCAD\CPP1\Pumpen-Body.FCStd' is already open!

Since assemblies often consist often dozens of parts, it is not a rare case that one part is already opened in FC. a2plus should therefore either forward the info that the part to be edited is already opened or better no info but simply switching simply to the part in FC (to its tab).

typo in icon file name

The icon
a2p_ToggleTranparency.svg
should be
a2p_ToggleTransparency.svg

Besides this, it would be nice if either all icons start with a small or capital letter behind the "a2p_". (Makes life easier for the documentation.)

A2plus should use FC's file dialog

FC uses the native file dialog of the OS it runs on. A2plus should do this too if possible because some settings are OS-specific. Maybe A2plus can simply trigger the file dialog of FC to open/import parts.

A2Plus does not support system undo/redo facility

At some point, we will need to add the undo/redo stack when we update the model:

    FreeCAD.ActiveDocument.openTransaction("Add a2p part")
    FreeCADGui.doCommand('obj  = a2p.command1()')
    FreeCADGui.doCommand(obj  =  a2p.command2()'
    FreeCAD.ActiveDocument.commitTransaction()

misleading wording in tooltips

The button to make a sphereCenterIdent constraint informs about "spherical surfaces" while the one to make axes coincident speaks about "cylindrical faces" and the one to make axis parallel speak about "cylinderFace".

This is confusing for average users like me. A2plus should therefore use consistently use "face" because a face doesn't have to be a surface. It should be consistently "cylindrical faces" and no camel case (artificial) words like "cylinderFace".

axisPlaneParallel is in most cases not working

  • select a linear edge and a plane
  • create a axisPlaneParallel constraint

result: the edge will not be parallel to the plane. Both parts will stay as they are. I tried everything with different assemblies and constraint only works rarely for very simple assemblies. With no other constraint I have these problems thus i think there is probably a bug. I will send @kbwbe a test assembly by private mail where the constraints fails (does nothing) no matter what you try to use for the constraint.

on V0.1.5 the Partlist crashes (Freecad-daily 0.18)

The partlist crashes on these tested scenarios
a) Either-way I choose to do a recursive search of sub-assemblies or not
b) When I press the Partlist button after I open my assembly which is here
I tried it either with the "0-Master-CAD.fcstd" and with a smaller "saw bar assembly.fcstd" crashes on both

Hopefully that helps on debugging :) :)

Thank you guys!

highlight constraint has performance issues

  • select a constraint in the model tree
  • use the toolbar button to highlight the constraint

result: everything works fine, within a few milliseconds the assembly gets transparent and the constraint is highlighted.

  • now you want to go back to the normal view and therefore left-click somewhere in the assembly

result: it takes here on my special and thus fast CAD PC 3 seconds until I get back the default view of the assembly. On slower machines it will take more seconds and might hinder the workflow.

Unwishfull import of part of an object

I find a specific replicable bug.
After a Part/Mirror is applied to a Part/Thickenss which was applied to a Body, that Body is showing when this file is imported.
Steps to replicate
a) Got PD workbench, Create body. Create a sketch with a simple square
b) Pad it to a nice size so to look like cube,
c) select to opposite faces, and with these selected got to Part/Thickness, give a minor NEGATIVE value. You should have a tube now in your screen,
d) Go to Part/Mirroring and mirror that Thickness to any plane.
Save it.
e) Open a new file and A2+/Add Part from external file and import the saved file from the previous step.
What gets imported other the the Mirrored Thicknesses, is the Body too, which it shouldn't. Hiding it does not help.

My apologies if thats a bug, and if I should follow a different route. Plz let me know.
Thank you!

improve parallel

Hello,

any chance to insert a plane to line parallel constraints?

image

manual constraints calculation

Hello again,

my laptop isn't exactly a gaming pc, could You please disable automatic constraints resolver? as the assembly increases in complexity the UI become quite unusable because every time I move/modify something the solver recalculate everything.

Compatibility issue with Fasteners workbench

Hello, I hope I not annoying you!.
I found another weird behavior. Again on my firewood processor project.
If you open the "saw bar assembly.fcstd" you will see a bolt with some washers and nuts.
Now, this assembly is imported to the "0-Master CAD.fcstd". You can see that the bolt is missing!
Going back, the bolt was imported when there were no nuts or washers, but as soon as I added these to the assembly the bolt stop being imported to the Master CAD.

I can also post this issue to the Fasteners page if you think its something in their code.

Thank you for your effort!!!

A2p releasecandidate is not py3 compatible

I have some issue with the 'Constraint Tool' dialog and the 'Constraint property' dialog
Adding a constraint will give the following error:
tested with (FreeCAD_0.18.15481_Conda_Py3QT5-WinVS2015_x64.7z)

Running the Python command 'a2p_ConstraintDialogCommand' failed:
Traceback (most recent call last):
File "C:\Users\mau\AppData\Roaming\FreeCAD\Mod\A2plus\a2p_constraintDialog.py", line 821, in Activated
p = a2p_ConstraintPanel()
File "C:\Users\mau\AppData\Roaming\FreeCAD\Mod\A2plus\a2p_constraintDialog.py", line 784, in init
self.move(screen_center(self))
File "C:\Users\mau\AppData\Roaming\FreeCAD\Mod\A2plus\a2p_constraintDialog.py", line 783, in
screen_center = lambda widget: QtGui.QApplication.desktop().screen().rect().center()- widget.rect().center()

Internal C++ object (PySide2.QtWidgets.QWidget) already deleted.

conversion to a2plus part cannot be undone

  • select an imported part and convert it to an a2plus part
  • now you see that you selected the wrong part and thus want to undo the conversion

result: this is not possible.
If this is technically impossible for a FC addon, please close this bug.

Part/Mirror does not gets imported

Hello guys, thats maybe a quick fix.
When I import a part where a body is mirrored with the Part/Mirror, the mirror bodyt is imported but not the original body.

Is this intentional? I have a turnaround by making a fussion between the 2 bodies, but why adding more steps?

Thank you for the great job!
P.S. Do you want to put new issues that I found here or in the freecad forum?

ViewProvider Claims Extra Children

ImportedPartViewProviderProxy claims all children in its InList as children. If any other object (drawing, dimension, etc) has a link to the importedPart, it will be claimed. The VP needs to check if InList objects are constraints (any other a2p objects?).

A2plus Feature Wishlist

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

Constraint dialog appears sometimes outside of screen

When adding constraints the constraint dialog appears on random positions (which is not nice btw.). Sometimes the position is so that parts of the dialog are outside the screen and thus not visible. Here an example where the upper part is outside my desktop:
constraintpropertiesdialog-too-high2

Sometimes the whole dialog is out of screen and then no dialog appears visibly.

If possible the constraint dialog should appear where the last opened constraint dialog appeared. The first appearing dialog of a session should appear in the center of the screen.

TODO: Explore the UNDO and REDO functionality

The WB should register all objects positions to FreeCAD's undo module, so after the assembly user could Ctrl+Z to return to previous positions.
I generally prefer iterative work, so I might want to add a constraint, resolve, see how does it looks like, press Ctrl+Z to get back to the "exploded" situation and add next constraint and so on...

inconsistent A2plus menu

The menu of A2plus is currently inconsistent:

a2plus-menu

  1. The menu name should be "A2plus" not "A2p"

  2. The menu entries should

  • Begin consistently with capital letters
  • Should be uniform in their name. E.g. not only "edit" but e.g. "Edit a part of the assembly"
  • The naming should be consistent to the tooltip of the corresponding toolbar button
  1. All menu entries should have a button. Currently the last entry "convert absolute paths..." has no icon. It should also appear in the A2plus toolbar.

direction setting has no effect in constraint properties dialog

  • select 2 edges
  • create a constraint "axisParallel"
  • in the appearing dialog change the direction from "aligned" to "opposed"

result: nothing happens

  • click on "Flip Dir."

result: now you can see the change in the assembly and also aligned changes to opposed. Nevertheless it should also work when explicitly setting the direction.

constraint dialog has no default focus

  • select a constraint in the model tree
  • use the toolbar button to edit constraints
  • you see that everything is fine and therefore you just press Return

result: nothing happens because the dialog has no button connected to have focus. The default focus should be on the Accept button. (pressing Return issues this button)

A2p doens't update recursively sub assemblies

If in an assembly there are sub-assemblies, and a sub-part of a sub-assembly is changed, the user needs to update manually each sub-assembly that has this sub-part changed ...
the desired behavior would be to have an automatic update of sub-assemblies, when the A2p update button is clicked...

updated parts loose their color.

This is a new issue after the latest updates.

When you made some modification on an already imported part, save it , and update the parts, then it looses the color information.
But if you delete that part, and re-import is everything looks fine. (other than reapplying the constraints). :)
At the following image you can see that lever. I imported again and it carries the color information, but the existing one lost it and became grey.
image

icon tooltips are inconsistently named

This is a very minor issue but I notice this every time I work with a2plus:

  • move the mouse over the different icons in the toolbar

result: sometimes the tooltip text begins with capital letters, sometimes not.

solutions:

  • For a "professional feeling" ;-) all tooltips should begin with a capital letter.
  • All tooltips should have the same structure describing the feature. This is already the case for most icons, but for example the icon to edit a part has only "edit" as tooltip.

missing angle spin buttons in constraint properties dialog

When creating an angular plane constraint the dialog does not provide spin buttons to change the angle easily in steps of e.g. 15°:
constraintproperties-missing-angle

Also by default 6 digits is overkill. I think for an assembly there should be a integer by default but the input field must allow a float in case the user really needs fractions of a degree.

FC provides always spinboxes, as example the spinboxes from the dialog of the subtractiv cylinder (part design WB):
spinboxes-in-fc

missing documentation

I searched around and cannot find a proper documentation. I already wrote some docs for different programs and if you like, I could set up some Wiki pages here in GitHub or we ask the FC guys idf I can ass Wiki pages there.
I think a documentation would be helpful because e.g. for new users is is not clear why a2plus does not take into account that an already assembled part that is later on modified is not taken into account with the current shape but with the shape when it was assembled. Or it is not clear what is the most suitable way to replace a part in an assembly.

duplicate part not working

Hello,

I modified importpart.py in line 335 from:
if hasattr(newObj.ViewObject, p) and p not in ['DiffuseColor','Proxy']:
to:
if hasattr(newObj.ViewObject, p) and p not in ['DiffuseColor','Proxy','MappedColors']:

now duplicate works again

Best Regards

A2plus does not support translation

At some point, we will need to add
def translate(context, text, disambig=None):
return QtCore.QCoreApplication.translate(context, text, disambig)
and
QtCore.QT_TRANSLATE_NOOP()

to allow dialogs and tooltips to be displayed in user's preferred language.

About the new way of editing of constraint parameters

Hello just a few comments on the new window for "edit a selected constraint"

Personally I do not like that I can no longer edit the values of the constraint on the Property Box on the left. Is that any way that this will be still available?
If not the new pop-up window with the constraint properties needs an enhancement plz! The user should be able to adjust the value with the scroll mouse as it generally the common approach in Freecad.

Great job man!
(p.s. the Partlist now works in ubuntu 18.10)

After installing a2plus

Hi, I've tried to install A2plus, and I got this error :

Program received signal SIGSEGV, Segmentation fault.
#0 /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f3c10800f20]
#1 0x7f3c112f16fd in QObject::setObjectName(QString const&) from /usr/lib/x86_64-linux-gnu/libQtCore.so.4+0xd
#2 0x7f3c1345ee0e in Gui::WorkbenchGroup::setWorkbenchData(int, QString const&) from /usr/lib/freecad/lib/libFreeCADGui.so+0xae
#3 0x7f3c1345f451 in Gui::WorkbenchGroup::refreshWorkbenchList() from /usr/lib/freecad/lib/libFreeCADGui.so+0x221
#4 0x7f3c1345f5f5 in Gui::WorkbenchGroup::addTo(QWidget*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x25
#5 0x7f3c134682df in Gui::CommandManager::addTo(char const*, QWidget*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x1bf
#6 0x7f3c137296dc in Gui::MenuManager::setup(Gui::MenuItem*, QMenu*) const from /usr/lib/freecad/lib/libFreeCADGui.so+0x61c
#7 0x7f3c13729d71 in Gui::MenuManager::setup(Gui::MenuItem*) const from /usr/lib/freecad/lib/libFreeCADGui.so+0x1c1
#8 0x7f3c13740566 in Gui::Workbench::activate() from /usr/lib/freecad/lib/libFreeCADGui.so+0x96
#9 0x7f3c13741b1b in Gui::WorkbenchManager::activate(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x1b
#10 0x7f3c133f818d in Gui::Application::activateWorkbench(char const*) from /usr/lib/freecad/lib/libFreeCADGui.so+0xa7d
#11 0x7f3c1340553c in Gui::Application::sActivateWorkbenchHandler(_object*, _object*, _object*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x6c
#12 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x8010) [0x7f3c123ea1d0]
#13 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8) [0x7f3c1251a278]
#14 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19) [0x7f3c123e2029]
#15 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyRun_StringFlags+0x76) [0x7f3c12485546]
#16 0x7f3c12964b46 in Base::InterpreterSingleton::runString[abi:cxx11](char const*) from /usr/lib/freecad/lib/libFreeCADBase.so+0x66
#17 0x7f3c133fa76a in Gui::Application::runApplication() from /usr/lib/freecad/lib/libFreeCADGui.so+0xdfa
#18 freecad(main+0x6db) [0x561f8e91c4db]
#19 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f3c107e3b97]
#20 freecad(_start+0x2a) [0x561f8e91d68a]

OS : Ubuntu 18.04
FreeCAD version : 0.17

Can't set color to an object

Objects can't be set to a desired color, only random color works.
Looks like the opened dialog expects faces and not objects, so it doesn't allow to select the color.

imported parts should support relative path

Hi,
In order to contribute to an assembly project with several people, a good point would be to be able to support relative path (./mypart1.fcstd instead of /home/joe/myproject/mypart1.fcstd ) in the source file field in order to be able to share a zip containing all the files with other people or to be able to put the files in a versioning system.
I saw the option to put everything in the same folder in the preferences menu but it seems to be different to what is expected from a relative path.

Does not constrain non-imported parts.

I mean if I create 2 bodies on the same file, I cannot constraint them. Is it intentional? My apologies if that is the case. I found out that I can use the assembly2 constraints specifically for this case, but I am worried that it will complicate things or cause some problems later.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.