-
Notifications
You must be signed in to change notification settings - Fork 26
How it works or should work
Chen Kasirer edited this page Jan 11, 2023
·
22 revisions
- Test edit
-
copy()
: features / trimmed geometries are not copied!?
-
assembly.parts
,assembly.beams
- Geometry:
beam.geometry
→ returns<class 'compas_rhino.geometry.brep.brep.RhinoBrep'>
beam._part_geometry
→ returns<class 'compas.datastructures.assembly.part.BrepGeometry'>
beam.shape
→ returns None
beam.geometry.native_brep
→ returns RhinoBrep
-
part.shape
:
base shape
→ still working??
type:BrepGeometry
orMeshGeometry
(inherit fromPartGeometry
fromGeometry
) -
part.geometry
:
including applied features
General stuff from compas Part
class [source]:
- types:
MeshFeature
,BrepFeature
,ParametricFeature
(?) - know their feature shape and operation
- store a deepcopy of previous part geometry after applying
- hold reference to
Part
- parts and joints hold list of references to features
- do not know where they come from (don't hold reference to e.g. joint)
- apply themselves
- do they know if already applied?
What part.add_geometry_feature()
does:
- creates a feature instance
- adds it to
part.features()
list - optionally calls
feature.apply()
What feature.apply()
does:
- performs feature operation
- stores new geometry of the part (transformed) in
part._part_geometry
Each joint type has specific features to apply to the parts, beams etc. For example: trim with a plane, extend length on one side, boolean subtract a notch geometry.
What joint.add_features()
does:
- using
part.add_feature()
:- creates joint-specific features
- adds them to
part.features()
list
- adds them to
joint.features()
list - optionally calls
feature.apply()
TODO:
- prevent duplicates of features from the same joint
- a failed operation (e.g. trimming) throws an error --> warning / ignore instead?
creates features:
- parametric feature: extend main beam (esp. if the cutting plane is not perp to main beam's centerline)
- geometric feature: trim main beam
whole action stack, for the main beam:
- unroll all features
- consolidate parametric features (e.g. extend by 1cm and extend by 2cm will only extend by 2cm)
- (re)apply parametric features
- restore (reapply) geometric features
- apply the new geometric features
action stack, for the main beam:
- find the features (extend + trim)
- unroll all features
- remove joint's features from feature list
- reapply all remaining features
- find joint features for both beams (extend+trim)
- remove (L-butt's) features (from feature lists?)
- add new (L-miter's) features
- unroll all features
- apply all features according to the new instructions/lists