Commit Graph

92 Commits

Author SHA1 Message Date
PaddleStroke
4f79c675b7 Assembly: Property change from Object/Part to Reference 2024-07-29 17:48:25 +02:00
luzpaz
9a1f487cdb Fix various typos throughout the codebase 2024-07-08 17:19:20 -05:00
PaddleStroke
cf5314919a Assembly: Change Object1/2 from strings to PropertyXLinkSub and Remove Element1/2 and Vertex1/2 2024-07-01 11:22:30 -05:00
PaddleStroke
a0c4a273ba Assembly: Enable moving objects while making joints. 2024-06-27 09:10:38 +02:00
PaddleStroke
2114da3bbb Assembly: Limits: Set one checkbox for each limit. 2024-06-26 17:06:02 +02:00
PaddleStroke
8913e3ffdc Assembly: Do not attempt to drag grounded objects. 2024-06-25 09:14:59 -05:00
Chris Hennes
879b71cbc3 Merge pull request #14608 from Ondsel-Development/asm_del_obj
Assembly: Makes sure deleting assembly deletes the joints and views
2024-06-17 10:49:58 -05:00
PaddleStroke
9fad901fa8 Assembly: Fix bug by replacing const char* by std::string for variables that need to be swapped. 2024-06-11 12:11:16 +02:00
PaddleStroke
b463846bea Assembly: Add validation step during dragging to ignore steps where grounded objects moved. 2024-06-10 11:35:04 -05:00
PaddleStroke
48cfc90049 Assembly: Add preference to enable debug files of dragging 2024-06-10 11:13:12 -05:00
PaddleStroke
d5eacd7945 Assembly: Fix bad limits automatically. Fixes https://github.com/Ondsel-Development/FreeCAD/issues/61 2024-05-30 10:33:59 +02:00
PaddleStroke
cecb965f50 Assembly: Add 'Angle', 'Perpendicular' and 'Parallel' joints. 2024-05-27 11:59:06 -05:00
Jiří Mácha
9d2f72a34f Missing property Object1 or Object2 of fixed joint causing crash (#13912)
* Assembly: removal of object of fixed joint causing crash

FreeCAD is crashing if the 'Object'
property of fixed joint (Assembly/Joints/Fixed/Joint Connector 1/Object1 or
Assembly/Joints/Fixed/Joint Connector 2/Object2) is manually removed.

Steps to reproduce:

 - make simple Assembly e.g. of two cubes with Fixed joint
 - Select Fixed joint in the tree and go-to property 'Data' tab
 - Select 'Object1' or 'Object2' of the 'Joint Connector 1' or 'Joint Connector 2'
   and remove this reference
 - click by your pointing device (mouse) to the arbitrary other property

The FreeCAD will crash here because the call
App::DocumentObject* obj = getObjFromNameProp(joint, propObjName, propPartName);
will return NULL pointer.

This problem is similar to the
4b5d079e6b.

* Assembly: fixed warning message text

The warning message text is not describing two cases which can happen,
but only one - property of specific joint.

* Assembly: avoiding possible crash in rack pinion joint code

Similar problems:

07c6df61f8456a6b02e88b369dcef5643ac1574e
and
4b5d079e6b

were causing real crashes (Linux + Sway Wayland compositor) when
Fixed joint type was used.

This patch tries to avoid the same situation, but now for the
rack pinion joint type.

The returned pointer value (part1 and obj1) can get NULL pointer value
and is used in the code:

    if (obj1->getNameInDocument() != part1->getNameInDocument()) { ....

a few lines later.
2024-05-27 10:46:02 -05:00
PaddleStroke
344b125a07 Core: Add getRootObjectsIgnoreLinks and fix bugs in tree.cpp and AssemblyObject.cpp, CommandInsertLink.py, UtilsAssembly.py 2024-05-13 17:58:34 +02:00
wmayer
40b9c972c5 Assembly: Fix warning: -Wunused-variable 2024-05-07 19:48:33 +02:00
PaddleStroke
3e049b6420 Assembly: add try/catch blocks in drag step. 2024-05-06 18:32:00 +02:00
PaddleStroke
98c518835c Assembly: Make RackPinion and Screw easier to setup. 2024-05-06 18:32:00 +02:00
PaddleStroke
b44505db39 Assembly: Fix small bugs in AssemblyObject.cpp, JointObject.py and UtilsAssembly.py 2024-05-06 18:32:00 +02:00
PaddleStroke
d5beaf900e Assembly: Introduce Belt joint. 2024-05-06 18:32:00 +02:00
PaddleStroke
b5a6a26166 Assembly: Drag: switch from solver Solve to dragStep. 2024-05-06 18:32:00 +02:00
PaddleStroke
748ed561db Assembly: Adds limit and RackPinion/Screw/Gears 2024-05-06 18:32:00 +02:00
PaddleStroke
ff4684fcd7 Assembly: Add Screw/Pulley/Gears/RackPinion icons. Credits to @maxwxyz 2024-05-06 18:32:00 +02:00
PaddleStroke
85bfb99715 Assembly: Solve on recompute. Fixes #12983 2024-05-06 18:32:00 +02:00
PaddleStroke
8fd15eaf28 Assembly: Exploded view refactoring 2024-05-06 18:32:00 +02:00
PaddleStroke
1213967c76 Assembly: Fix distance 0 between 2 vertex. Issue mentioned in #12490 2024-05-06 18:32:00 +02:00
PaddleStroke
56051b83bc Assembly: Remove bad joints : joints between a part and itself. Fixes #12752 2024-05-06 18:32:00 +02:00
PaddleStroke
51feeb89f1 Assembly: Fix #12887: changing offset can move grounded parts in some cases. 2024-05-06 18:32:00 +02:00
PaddleStroke
5349d08abe Assembly: Fix #12889 : deleting a part does not delete joint and later crashes freecad. 2024-05-06 18:32:00 +02:00
PaddleStroke
ef010e6f7c Assembly: define nested assemblies. Fixes 12440 2024-05-06 18:32:00 +02:00
PaddleStroke
b537d0724a Assembly: Add DistanceType enum and getDistanceType function. 2024-05-06 18:32:00 +02:00
Jiří Mácha
4b5d079e6b Assembly: fix segfault when Part property of Joint Connector is missing
FreeCAD is crashing during 'Solve Assembly' call if the Part property
(Assembly/Joints/Fixed/Joint Connector 1/Part1 or Assembly/Joints/Fixed/Joint
Connector 2/Part2) of fixed Joint is unset.

Steps to reproduce:

 - make simple Assembly e.g. of two cubes with Fixed joint
 - Select Fixed joint in the tree and go-to property 'Data' tab
 - Select Part1 or Part2 of 'Joint Connector 1' or 'Joint Connector 2'
   and remove this reference
 - call 'Solve Assembly' now

The FreeCAD will crash here because the call
App::DocumentObject* part = getLinkObjFromProp(joint, propPartName);
will return NULL pointer.

The property Part1 or Part2 can get empty (unset) during usual
construction operations - during changing construction history
and it can be very hard to find the cause of FreeCAD crash on a big
model.

This patch tries to fix the crash in such situation.
2024-04-08 18:00:40 +02:00
luzpaz
5839134e95 Fix various typos throughout the codebase (#13029)
* Fix various typos throughout the codebase

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-03-18 16:54:30 -05:00
wmayer
51a01b9e2b Fix compiler warnings:
fix [-Winconsistent-missing-override]
fix [-Wunused-lambda-capture]
fix [-Wunused-variable]
fix [-Wswitch]
2024-02-26 11:01:37 -06:00
PaddleStroke
2a5b22f0c8 Assembly : Fixes for sketches in bodies 2024-02-13 08:26:54 +01:00
Paddle
cdb1af6543 Assembly : Add support for perspective camera.
Remove exportASMT from toolbar.
Fix Fixedjoint name and tooltip
Fix various bugs
Introduce solver drag functions.
2024-02-13 08:25:46 +01:00
Paddle
d13df26333 Assembly: Adds a pre-solve when creating joint, preventing wrong orthogonal solutions from solver. 2024-02-13 08:25:46 +01:00
Paddle
48173f2b9d Assembly: Implement special drag mode for revolute. 2024-02-13 08:25:46 +01:00
Paddle
43019a8f34 Assembly: Add support for body subobjects (coordinate systems, datums...) and various fixes 2024-02-13 08:25:46 +01:00
Paddle
22e4d7f2dd Assembly: Change the joint placements to be relative to the object rather than to the doc origin.
This enable 'detaching' them, so that they are not recomputed
2024-02-13 08:25:46 +01:00
Paddle
4a119c43f1 Assembly: Add support to external objects. (And various fixes) 2024-02-13 08:25:45 +01:00
Paddle
323deff46a Assembly: Replace Tangent+Parallel+Planar by 'Distance'. 2024-02-13 08:25:45 +01:00
Paddle
d77cd7acf5 Assembly: Introduce core functionality of assembly workbench. 2024-02-13 08:25:45 +01:00