Drawing3d documented Class Library

ISerializePath Interface

This interface is implemented in all MNComponents. It gives a unique relation between Path and object.

For a list of all members of this type, see ISerializePath Members .

[Visual Basic]
Public Interface ISerializePath
[C#]
public interface ISerializePath

Types that implement ISerializePath

Type Description
ActiveCtrl The ActiveCtrl inherits from DrawCtrl. It holds properties and methods to implement interactive manipulations of graphical datas.
With the Mouse- and Keyevents you have an instrument to handle actions of an user. By a click you get information about the tag, which is set as parameter to these methods.
...
protected override void draw(MNDevice device)
    { 
    ...
        ctrlMarker(new xyz(4, 4, 0), 2006);
        // draws a marker at position (4 / 4/ 0)
        // if the mouse moves over this marker, it will be highlighted with 
        //hovercolor
        ctrlMarker(new xyz(0, 4, 0), 2007);
        ctrlMarker(new xyz(0, 0, 0), 2008);
        
    ...
        
    }

protected override void MouseMove( System.Windows.Forms.MouseEventArgs e)
    {
    if (CurrentHit!=null)
     switch ((int)CurrentHit.Tag)
     {
        case 2006 :// Mouse is at Marker  4/ 4/ 0 
                    break;
        case 2007 :// Mouse is at Marker  0/ 4/ 0 
                    break;
        case 2008 :// Mouse is at Marker  0/ 0/ 0 
                    break;
     }
    }
...
DrawCtrl The class DrawCtrl contains a lot of controlled drawing methods:setparen The methods ctrlMarker, ctrlLine, ctrlCurve, ctrlCircle and ctrlPoly are nice drawing methods. They change the Color ( HoverColor if the mouse is positioned over it. In addition they have a "Tag". With this Tag you can identify the DrawCtrl and so this class is very useful to make interactive components. It is related to a Device and is located as child of Work
Cursor3d The class can be used to get interactively some 3D-cordinates. The Cursor3d catches the mouse position and calculates the nearest point to the cordinate axes, which is associated to the Base. This point you get from the Posxyz-property.
With the Position-property you set the Base.BaseO.
Entity Entity is the foundation class for all graphical classes. She contains a Transformation and can ordered in a treestructured system because she is an instance of MNComponent. Additionally, she has a public virtual Paintmethod, which will be called by the parent. To start this painting one of the parents must be setted as Root of a device or as child of Work of a device. In order to that the device starts the painting by its own Paint-Method.
The method Paint is called by the protected method draw. Its better to override draw than Paint, because in the Paintmethod some calls enclose the drawmethod (for example the transformation will be setted).
MeshContainer A Meshcontainer is an Entity, whose overrides the draw-method. It contains Meshes, which is a List of Mesh and it draws this list. Additionally it contains MaxBox and Center. Whith this two properties you can calculate a position for drawing.
With the method LoadFromFile you can load a 3ds-File.
MNComponent MNComponent is the rootclass from which some important classes are derived. The class is typical for a tree-structure. So it contains children and has a parent by himself. With the property Name a node inner a parent is unique. With the function fullPath you get an unique node description with names separated by "/". If you set the parent, the MNComponent is added to the children of this parent. In case of generatenames = true a valid name is generated and set to the MNComponent. The default indexer is set to a MNComponentclass
DiscreteCone Ein DicreteCone ist fast dasselbe wie ein Cone mit dem Unterschied, dass die Mantelfäche des DiscreteCone aus lauter Ebenen Flächen besteht (entsprechend UResolution und VResolution) und ein Cone ein Cone als Tägergeometrie für den Matel besitzt. Der Grund liegt darin, dass zum jetzigen Zeitpunkt der Entwicklung, auf Solids, von denen alle Faces eine ebene Geometrie haben (Surface = PlaneSurface mengentheoretische Operationen wie Vereinigung, Durchschnitt und Komplementaäsolid angewandt werden können.
DiscreteSolid Ein DiscreteSolid enthält nur eben Faces, deren Surface eine PlaneSurface ist.
Solid Die Klasse Solid im SolidSurface-Modell realisiert einen massiven 3D-Körper und nicht nur ein Oberflächenmodell.

Folgende Listen sind habe zentrale Bedeutung:

1. Die Punkteliste (VertexList)

2. Die Kantenliste (EdgeList)

3. Die Oberflächenliste (FaceList)

4. Die 3D-Kurvenliste (EdgeCurveList)


Durch diese Listen sind die Geometrie und die Topologie des Körpers vollständig definiert.

Die Punkteliste

Sie enthält alle Eckpunkte eines Körpers. Die Koordinaten zweier verschiedener Punkte sind im Allgemeinen gleich, aber es kann durchaus vorkommen, dass sie übereinstimmen.
Die Punkte sind Klassen vom Typ Vertex3d.

Die Kantenliste:
Die Kanten sind vom Typ Edge.
Eigenschaften von Edge:
- EdgeStart und EdgeEnd: Zu jedem Paar von von Punkten A, B des Solid gibt es ein Paar(!) von "Softwarekanten" Edge. Die eine Kante hat A als Anfgangspunkt EdgeStart und B als Endpunkt EdgeEnd, die andere Kante hat A als Endpunkt und B als Anfangspunkt. Die beiden Kanten nennen wir zu einander duale Kanten. Es ist oft wichtig, zu einer Kante ihre duale Kante zu bestimmen.
Ein Quader besitzt somit 24 Edge.
Zu jeder Edge ist eindeutig ein Face zugeordnet. Rechterhand derKante liegt die Oberfläche von Face. Alle Kanten, die zu einem Face gehören, umschließen eine Fläche. die im Uhrzeigersinn umlaufen wird.
- ParamCurve: Eine zweidimensionale Kurve, die sich auf den Parameterraum von Face bezieht. Sie stellt die Grenzen der Oberfläche dar, deren Geometrie durch Face bestimmt wird. .
Ist z.B. das Face der Mantel eines Zylinders ( Cone) und ParamCurve eine Gerade von (0,0) nach (PI,0), so ergibt dies einen Halbkreis in R³.

- EdgeCurve: Eine dreidimensionale Kurve, die identisch ist mit der durch ParamCurve und definierten Kurve. Eine Kante und ihre duale Kante besitzen nur eine gemeinsame EdgeCurve. Z.B.: besitzt ein Quader 12 EdgeCurves. Siehe EdgeCurveList.
Eine 3D-Curve besitzt die Eigenschaft Neighbors, ein array bestehend aus den zwei benachbarten Faces. Diese Eigenschaft ist wichtig, um von einem Face via Edge zum Nachbarface zu gelangen.
-SameSense: Durch die ParamCurve und ddie zugehörige Geometrie wird eine 3D-Curve definiert. Ist SameSense = true, so ist diese Kurve identisch mit EdgeCurve andernfalls ist diese Kurve invertiert.

Die Oberflächenliste:
Sie besteht aus Oberflächen, die das Solid begrenzen: Faces.
Eigenschaften von Face:
- Surface: Enthält die Geometrie der Obfläche. Von ParamCurves wird sie verwendet, um 3D- Kurven zu evaluieren.
-ParamCurves: Sie bestimmen die Berandung der Oberflächen. Tatsächlich werden sie immer wieder neu berechnet, wenn sich ein Änderung der Topologie oder der Geometrie des Solids ereignet hat. Sie werden lediglich zu raschen Renderung des Solids benötigt. Neu berechnet können sie werden aus den Inhalten von Bounds mit der Methode RefreshParamCurves.
-Bounds:
Sie bestehen aus Listen von EdgeList. Die 0-te EdgeList gibt die äußere Kontur des Face an und sollten die Overfläche im Uhrzeigersinn um laufen. Liegt eine Edgelist geometrisch innerhalb einer anderen, so muss deren Umlaufssinn umgekehrt sein.
Besitzt z.B.: eine Flaäche eine Umrandung und ein Loch, so ist Bounds.Count = 2. Bounds[0] ist im Uhrzeigersinn und Bounds[1] im Gegenuhrzeigersinn. Natürlich muss Bounds[1] vollständig innerhalb von Bounds[0] liegen.
/
Die 3D-Kurvenliste:/
Zu jeder "physikalischen" Kante eines Solids gibt es genau eine Curve3D. Zwei zueinander duale Kanten besitzen die gleiche Kurve. Für die Topologie des Solids ist das Feld Neighbors wichtig, das beide Nachbarfaces enthält die an einander entlang der 3D-Kurve grenzen.
SolidBox Ein massiven Quader der Größe Size.
SolidCone Ein massiver Kegelstumpf.
SolidExtrude Definiert ein Solid, das entsteht, wenn man eine Loxy extrudiert mit einer bestimmten Höhe. Alle Surfaces sind PlaneSurface
TaskCtrl The class TaskCtrl is specially made for bigger interactive actions. He inherits from ActiveCtrl and has additionally two important parts: The taskhandling with StateBusy and Terminate
. The Undo-Redo-handling: Most of them is static. So CommitList, RedoListMaxCommitUnDoReDoLastCommit Only Commit are not static and the virtual Undo- and Redo-methods, which are called from the static ones.
The handling is easier as it seems to be.
1. You have to override GetUndoData and GetRedoData
2. Override UnDo and ReDo
3. You have to call "Commit" at several points in your code.
In GetUndoData you return the data that you need in Undo.
The correspondence is given by an id.

Requirements

Namespace: Drawing3d

Assembly: Drawing3d (in Drawing3d.dll)

See Also

ISerializePath Members | Drawing3d Namespace