Commit Graph

24 Commits

Author SHA1 Message Date
Kacper Donat
651cefde4d Gui: Use getObject<T>() helpers in classes
This commit is generated using regex based find and replace:

```
s/[\w:]+_cast\s*<([^>]+)\*>\s*\(\s*getObject\(\s*\)\)/getObject<$1>/
s/[\w:]+_cast\s*<([^>]+)\*>\s*\(\s*([^)]*)\s*->\s*getObject\(\s*\)\)/$2->getObject<$1>()/
```

To regenerate if needed.
2024-12-06 18:29:39 +01:00
wmayer
b4c5a6d5ba Fix several regressions:
+ improve PropertyMaterialList::readString
+ fix transparency handling in ViewProviderPartExt
+ do not register the private member '_diffuseColor' as property because it would be exposed to the
  public where it can be modified
+ fix ViewProviderPartExt::finishRestoring() to correctly restore old project files
+ fix ViewProviderPartExt::setHighlightedFaces() to correctly show face colours if VBO is enabled
+ fix ViewProviderBoolean::updateData()
  fix ViewProviderMultiFuse::updateData()
  fix ViewProviderMultiCommon::updateData()
  fix ViewProviderCompound::updateData()
  fix ViewProviderFillet::updateData()
  fix ViewProviderChamfer::updateData()
  that all set invalid transparency values
+ Filter ShapeAppearance in ViewProviderBody::unifyVisualProperty
  because body features usually have different number of faces than the body itself
+ manually fix some bad looking auto-formatted code
+ clean up code and remove duplicated code
2024-06-11 11:58:32 +02:00
David Carter
8b5a3b1124 Material: Appearance Updates 2
Improves the use of the ShapeAppearance property for the Part workbench.

    removes DiffuseColor property
        adds Python compatibility using custom attributes
        transitions DiffuseColor to ShapeAppearance on open
    Improved UI elements for setting object appearance, and appearance per face
    Lays the foundation for future texture support
2024-06-01 19:57:16 -05:00
David Carter
495a96a0f5 Material: Material appearance
Uses new material system for appearance

Each feature object now has a property called ShapeMaterial that
describes its physical properties. If it has a shape, it has a
material.

The ShapeColor attribute is replaced by a ShapeAppearance attribute.
This is a material list that describes all appearance properties, not
just diffuse color. As a list in can be used for all elements of a
shape, such as edges and faces.

A new widget is provided to allow the user to select materials in a
consistent fashion. It can also launch the material editor with its
more advanced capabilities.
2024-04-04 07:39:58 -05:00
Florian Foinant-Willig
eb55f1fe52 Part: modernize type checking 2023-10-23 18:12:03 +02:00
wmayer
a0d86224f3 Part: modernize C++: use equals default 2023-08-22 15:14:03 +02:00
wmayer
312975edba Part: modernize C++: use range-based for loop 2023-08-16 21:56:32 -05:00
wmayer
899932cec0 Part/PD: modernize C++: redundant void arg 2023-08-05 16:50:31 +02:00
Uwe
eabffee3a5 [Part] ViewProvider: 2 to M: remove unused includes 2022-07-31 15:36:20 +02:00
wmayer
62dbfc5290 Part: if boolean/compound object has set transparency then override the values of the input shape 2022-07-27 17:03:47 +02:00
Zheng, Lei
18c0d8ab12 Part: fix dangerous static_cast usage in view provider
Because Gui::ViewProviderLink can be used to override the view provider
of any object, it is not safe to assume view provider type without
explicit checking.
2020-09-09 13:16:46 +02:00
Zheng, Lei
6da72b9859 Part: changes to Part Module
* Added Part::Feature::getTopoShape/getShape() function that can obtain
  shape from any object with proper implementation of getSubObject(). It
  can even construct compound from group object with proper implementation
  of getSubObjects().

* Modified ViewProviderExt to work on any object, because it now obtain
  the shape using Part::Feature::getShape()

* Modified various Part features to obtain base/tool shapes using
  Part::getShape(), which allows them to be any type of object,
  including Link and groups.

* Modified various Part command to relax type requirement on selected
  objects.

* Add support of link and group to dimension, and add dimension refresh
  command

* Support link and group in simple command command, and add a few more
  copy command variations.

* Add special handling of 'Shape' attribute in PropertyContainerPy and
  use Part::Feature::getShape() to return shape for any object without
  Shape property. This allows many python feature work with any object
  without modification.

* GeometrySurface/CurvePy, add convenience attribute 'Rotation'

* TopoShapePy:

    * Extended support of sub shape attribute, e.g. Compound1, Solid2,
      SubShape3 ('SubShape' is used to access child shape of a compound)

    * makeWires(), new API to sort and return wires given a list of edges.

    * transformed/translated/rotated/scaled(), return a new shape with
      some transformation.

    * findPlane(), find the plane of a planar shape

    * isCoplanar(), check if two shape are coplanar
2019-08-17 15:08:35 +02:00
wmayer
b60a736c0d fixes 0004010: Box Selection + Part -> MakeCompound will crash FreeCAD 2019-06-12 11:20:48 +02:00
DeepSOIC
f275a95008 PartGui: use icon in Compound viewprovider 2018-12-27 14:30:05 +01:00
plgarcia
792bb8282a Drags and drop with groups 2018-11-29 21:25:28 +01:00
wmayer
c582b069ba fix compiler warnings with py3 and msvc 2018-04-16 18:24:53 +02:00
Stefan Tröger
d0954e6e42 Allow interchangable use of link properties and their derivatives 2017-09-09 16:47:07 +02:00
wmayer
d84c2d3544 drag and drop for compound objects 2017-08-11 12:53:35 +02:00
wmayer
d896d11fa4 always update colors after updating shape to get rid of previously set transparency 2017-08-11 10:26:54 +02:00
Yorik van Havre
08d8f70691 Part: Support subcomponent transparencies in compounds 2017-03-08 15:54:44 -03:00
wmayer
e8b36592c0 fix Coverity issues 2016-08-21 18:46:40 +02:00
wwmayer
e7441149f0 + fix many minor warnings, activate -Wall for gcc 2015-08-02 22:32:18 +02:00
wmayer
097b95f686 Show linked objects of compound objects as children in tree view 2013-07-14 15:53:57 +02:00
wmayer
a81639afe1 Add a parametric compound command 2013-07-13 15:05:13 +02:00