Das war wohl der Beitrag :-)
> Zur Ezeugung einer 2D Zeichnung über die CIP Schnittstelle
> erstelle ich 3DPunkte, 3DLinien und möchte auch 3DKreise
> (Texte) erzeugen.<BR>Die Z-Koordinate wird nicht für die
> Zeichnung benötigt, da MegaCAD nur im 2D Modus betrieben
> wird. Durch Anklicken der Kreise (Texte) aus dem Infomenü
> sollen aber die Höhen (Z-Koordinate) angezeigt werden. Bei
> Texten wird die Z-Koordinate auch angezeigt, allerdings immer
> mit 0. Gibt es eine Möglichkeit die Z-Koordinate zu setzen?<BR>
Hallo,
Herr Hochbaum hat den Beitrag zwar gelöscht, aber noch für mich zuvor gerettet :-)
Ich verstehe zwar nicht, warum man im 2D-Modus 3D-Daten erzeugen will, aber das ist ja mein Problem :-)
Grundsätzlich kann man bei der Erzeugung eines Elementes eine Transformationsmatrix der Struktur t_mat44 mitgeben. Diese kann man später dann auch wieder auslesen und die Punkte über beliebige Ebenen zurückrechnen.
Die 4x4-Matrix ist wie folgt aufgebaut:
( 0 1 2 3 )
( 4 5 6 7 )
( 8 9 10 11 )
( 12 13 14 15 )
Die Elemente ( 0, 4, 8) bilden den X-Vektor.
Die Elemente ( 1, 5, 9) bilden den Y-Vektor.
Die Elemente ( 2, 6,10) bilden den Z-Vektor.
Die Elemente ( 3, 7,11) bilden den Verschiebungs-Vektor.
Das Element ( 15 ) ist der Skalierungsfaktor.
Die Elemente (12,13,14) sind immer 0.0.
Damit man nicht soviel Stress bei der Erstellung der Matrix hat, kann man auch über 3 Punkte die Matrix automatisch errechnen lassen ( Funktion PointsToEcs.
Das Element wird ja mit folgender Funktion erzeugt:
EXT(212) ulong CreateEntity( // store an entity
ushort type, // entity type
t_attribs *attr, // entity attributes (may be NULL)
void *data, // entity data
t_applic *appl, // application data (may be NULL)
t_mat44 *ecs); // entity coordinate system
Und siehe da, hier übergibt man die Matrix...UND SCHON IST DAS Element im Raum plaziert.
Man hat sich für die Ebenen-Methode entschieden, weil man ja in der Regel Elemente nicht nur einen z-Wert mitgeben will - dass ist ja nur ein einfacher Sonderfall - sondern man muß die Elemente ja auch auf einer beliebigen Ebene ausrichten können. Hierfür eignet sich hervorragend diese Methode.
Wenn man aber MegaCAD nur im 2D-Modus betreibt, dann wird natürlich auch 2D gespeichert. Das macht ja auch Sinn...Also darf man in diesem Fall nicht unter Setup - Einstellungen in MegaCAD die Checkbox 2D-Modus aktiviert haben....ansonsten wird eine 3D-Zeichnung platt wie eine Flunder gebügelt, spätestens beim Speichern.
Wenn man aber nun unbedingt 2D-Dateien haben will, dann besteht die Möglichkeit, die Z-Koordinate in den Elementinfos einzufügen. Mann, oder Frau, muß sich dann aber eine eigene Abfragefunktion schreiben. Und wenn man schon am Programmieren ist, dann würde ich auch nicht die Elementinfo nutzen. Man kann nämlich jedem Element aus der Struktur t_applic zwei ulong Variablen (L1, L2) zuweisen. Diese beiden Variablen könnte man dann zur Referenzierung / Idendifizierung in einer externen Datenbank nutzen, die sich ja auch wieder in die PRT einbetten läßt (siehe Struktur t_embedfile). Ein derartiges Programmlayout wäre sicher sehr geschickt um eine Vermessungsapplikation zu schreiben, da man die Punkte mehrfach nutzen kann (Berechnung von Triangulierungen, Umgrenzende Kontur, Höhenlinien....)
So, war doch eine Menge Info...ich hoffe das es auch zur Lösung des Problems beigetragen hat. Ansonsten wäre eine Nähere Beschreibung der Aufgabenstellung sinnvoll. Auch die eingesetzte MegaCAD - Version wäre hilfreich, wenn man etwas nachvollziehen möchte.
Viele Grüße aus Hamburg
Bernd Knoop
Megatech Software GmbH
Niederlassung Nord
[Diese Nachricht wurde von Knoop am 06. April 2001 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP