Issue 5096: File CadGeometryExtens
Issue 5097: struct HyperbolaStruct should be moved from CadSurface to CadCurve
Issue 5098: struct OffsetCurveStruct
Issue 5099: File CadMain: Method add_child and remove_child
Issue 5843: Model creation parameters
Issue 5847: CadFoundation::EntityPropsStruct
Issue 5850: different tessellation structures for different kind of entities
Issue 5851: return value of CadFoundation::Entity::cad_model()
Issue 5855: exception CadConnection::BadParameter does not match the method anymore
Issue 5872: description for CadMain::Model::unique_ids_to_entities() is missing
Issue 5873: method CadMain::Model::unique_ids_to_entities()
Issue 5877: CadBrep module issue
Issue 5878: CadBrep::OrientedEdge interface issue
Issue 5881: CADServices 1.1 issue
Issue 5882: Data in CadGeometry::EdgeTessellationStuct
Issue 5911: CadMain::Model interface issue
Issue 5912: Documentation for CadMain::Model::unique_entities()
Issue 5096: File CadGeometryExtens (cad-ftf)
Click here for this issue's archive.
Source: Open CASCADE (Mr. Mikhail Kazakov, m-kazakov(at)opencascade.com)
Nature: Uncategorized Issue
Severity:
Summary:
File CadGeometryExtens:
1.
struct SurfacePatchStruct{
BoundedSurface parent_surface;
TransitionCode u_transition;
TransitionCode v_transition;
boolean u_sense;
boolean v_sense;
};
Should be
struct SurfacePatchStruct{
CadGeomerty::Surface parent_surface;
TransitionCode u_transition;
TransitionCode v_transition;
boolean u_sense;
boolean v_sense;
};
because parent_surface can be any type.
struct HyperbolaStruct{
CadUtility::TransformationStruct location;
double semi_axis;
double semi_imag_axis;
};
Should be moved from module CadSurface to CadCurve, because it is used
only by "curve"
interfaces.struct OffsetCurveStruct{
double distance;
CadUtility::VectorStruct ref_direction;
boolean self_intersect;
};
Should contain also field CadGeometry::Curve BasisCurve.
File CadMain: 1. Method add_child and remove_child from CadMain::Model should has CadMain::ModelInstance in parameter instead of CadMain::Model.
Where can one get the CadFeature::Parameter instances from to use in CadSystem::create_model() ? As far as I know, the instance of a idl interface can only be created on the server (in a get method or in a factory) and I can see no way of creating empty CadFeature::Parameter instances. Besides, why was CadFeature::ParameterSeq used on Model level (CadMain::Model::create_model(), CadMain::Model::get_parameter_set()) and not as in other places CosProperyService::Properties? It is not clear to me, what information is supposed to be behind these parameters. This looks like a valid concern. We can fix this by using either CosProperyService::Properties in place of the CadFeature::ParameterSeq or we can created a CadFeature::ParameterFactory. I suggest the use of Properties.
In CadFoundation::EntityPropsStruct one variable is named ref_position in the pdf and ref_positions in the idl files. Should be ref_position
There are some different tessellation structures for different kind of entities (geometric and topologic) and some are for both (e.g. EdgeTessellationStruct). Three of the four structs have a obj_ref member with type Object. Issues: 1. The type Object for obj_ref is too generic. 2. Some of the tessellation structs are for the use with one single interface (ConnectedFaceTessellationStruct -> Body) while some others are used in more than one interface (EdgeTessellationStruct -> Edge, Curve). 3. In some cases the obj_ref member of a single tessellation struct references a geometric entity (Curve, Surface), in others a topologic entity (Edge, Face, Body) Proposed Solution: For each interface which provides tessellation (has a tessellate() method) there should be one corresponding tessellation struct with a obj_ref member of the type of the interface which generated the struct. Edge -> EdgeTessellationStruct Face -> FaceTessellationStruct Curve -> CurveTessellationStruct Surface -> SurfaceTessellationStruct Body -> ConnectedFaceTessellationStruct It would be much clearer that way and the redundancies pretty few.
The return value of CadFoundation::Entity::cad_model() is Object. It would be clearer if it would return CadMain::Model (forward declaration).
after changing the fourth parameter of CadConnection::CadSystem::create_model from CadFeature::ParameterSeq to CosPropertySevice::Properties recently, the exception CadConnection::BadParameter does not match the method anymore. It should either be changed in a similar manner or kicked out completely (it is only used by create_model).
In the PDF document for CADServices 1.1 (03-02-02) the description for CadMain::Model::unique_ids_to_entities() is missing
The method CadMain::Model::unique_ids_to_entities() can throw the CadMain::NotValidCadType exception but unlike the other methods able to throw this does not get TypeCodes as input. If the exception is there by accident I suggest it be removed.
In the CadBrep module there are almost always two ways to traverse the topology: from the top level entities like Body to the underlying entites like Shell, Face, Edge, ... and the other way. For example I can get from Face to the OrientedFace which aggregates the Face or I can ask the OrientedShell in which Body it is contained. This does not make much sense to me. I always thought the topology is more or less hierarchical with Body is composed of OrientedShells which has reference to Shell and so on. Unless I am missing something important, it is just some not so small overhead to have all those relations at hand and being uptodate with them. I would place such things in a client for I see it as application specific, if it is neccessary or not.
The CadBrep::OrientedEdge interface has two very similar methods to get the Face/OrientedFace which uses the OrientedEdge. That's pretty redundant. Besides: Both methods deliver useful information only when the OrientedEdge belongs to one and only one Face. Otherwise an exception is generated. I don't really see the usefulness of those two method, especially since for many cases there are two Faces for the Edge and one can always traverse there via the EdgeLoop.
In the PDF document (03-02-02) for the CadServices the return value for CadFoundation::Entity::reference_position is CadUtility::PointStruct, but in the idl files it is CadUtility::PointStructSeq. I couldn't verify it against the newest documents (maybe newer than mine), because they were unreachable. Besides, the description of this method is not very helpful (at least to me). I have no clue how to interpret it.
I have a problem understanding how to interpret the > vertex_number's for > the points in CadGeometry::EdgeTessellationStuct. I don't see > the need > for a indexing here. It is just sequencial. Are there people, > who want > to do this another way?
CADServices 1.1 1. In The CadMain::Model interface there is no clear way to get the DesignFeatures of a Model. The only possible way would be via top_level_entities() or unique_entities(), but these calls are for geometric entities (so it is written in the documentation). Proposed Solution: add a call "CadFeature::DesignFeatureSeq design_features()" to CadMain::Model. The DesignFeatures should be more clearly seperated from the BrepEntities as they are to different sights on the same data and should not be mixed per chance.
2. The Documentation for CadMain::Model::unique_entities() and CadMain::Model::top_level_entities() says the only valid types asked for are geometric entity types but there is only mention and used CadFoundation::Entity (in the doc and in the return types). If this should really be only geometric entities, the return types could be CadBrep::BrepEntity and the documentation should be much clearer on what is allowd and what a invalid type.