Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  MegaCAD
  Infos über Texte per C-Programmierung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Webinar für CAD-Konstrukteure im Metallbau: Industrietreppen, Balkone, Geländer in einer nahtlosen 2D- und 3D-CAD-Umgebung
Autor(20117) Thema:  Infos über Texte per C-Programmierung (548 mal gelesen)
Hochbaum
Ehrenmitglied



Sehen Sie sich das Profil von Hochbaum an!   Senden Sie eine Private Message an Hochbaum  Schreiben Sie einen Gästebucheintrag für Hochbaum

Beiträge: 1795
Registriert: 14.08.2000

MegaCAD alles und in jeder Form
i7, 12GB, Quadro K2200
WIN10/64

erstellt am: 05. Apr. 2001 15:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ki-Klaus,

sorry, aber ich habe den Beitrag (unabsichtlich, kann ich aber als Moderator :-() gelöscht.
Soweit ich das verstanden habe, ging es darum, bei Texten die z-Höhe über einen Klick zu erfragen, obwohl der Text eigentlich keinen reellen z-Wert hat, da er im 2D-Modus erstellt wurde? Richtig?

Frage: Ist das für Daten aus dem Vermessungswesen gedacht? Als Idee wäre hier die Elementinfo zu nennen. Man kann einem beliebigen Element "unsichtbare" Infos zuordnen, die dann natürlich mit einer entsprechenden Routine wieder ausgelesen und dargestellt werden können, z.B. als Text "unterhalb" des Kreises.

Habe ich es begriffen?

E.Hochbaum


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Knoop
Mitglied
Dipl.-Ing. masch.


Sehen Sie sich das Profil von Knoop an!   Senden Sie eine Private Message an Knoop  Schreiben Sie einen Gästebucheintrag für Knoop

Beiträge: 409
Registriert: 09.10.2000

erstellt am: 06. Apr. 2001 11:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hochbaum 10 Unities + Antwort hilfreich

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

Niko
Mitglied
EDV-Berater

Sehen Sie sich das Profil von Niko an!   Senden Sie eine Private Message an Niko  Schreiben Sie einen Gästebucheintrag für Niko

Beiträge: 9
Registriert: 12.04.2001

erstellt am: 12. Apr. 2001 08:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hochbaum 10 Unities + Antwort hilfreich

Hallo Herr Hochbaum, hallo Herr Knoop,

vielen Dank für die Antworten, ich habe den Beitrag erst jetzt wiedergefunden, da ich ihn unter anderem Namen gesucht hatte.

Die Sache mit dem Koordinatensystem, ecs etc. muß ich erst mal wirken lassen!

Aber habe ich das richtig verstanden? Eine Linie (line3D) mit z-Koordinate erzeugt wird "platt", wenn man sie im 2d Modus abspeichert ? Warum ? Ich will mir die Objekte doch nur als 2D ansehen. Dann stimmen ja auch die Längen nicht mehr.

Ich glaub, ich mache erst mal Osterurlaub.
Schöne Ostern
Klaus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Knoop
Mitglied
Dipl.-Ing. masch.


Sehen Sie sich das Profil von Knoop an!   Senden Sie eine Private Message an Knoop  Schreiben Sie einen Gästebucheintrag für Knoop

Beiträge: 409
Registriert: 09.10.2000

erstellt am: 12. Apr. 2001 09:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hochbaum 10 Unities + Antwort hilfreich

Hallo,

wenn man ein 3D- Element 2D speichert, dann ist das 3D-Element halt keins mehr...ist doch auch logisch.

Man kann die 3D-Elemente ja auch 2D anschauen. Vermutlich möchten sie die Draufsicht sehen, aber vielleicht auch die Seitensicht von links, oder wollen sie die Vorderansicht sehen? Also, wenn man 3D Elemente hat, sollte man die Zeichnung auch 3D speichern...Man muß also nur die Projektionsdaten definieren.

mfg
Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niko
Mitglied
EDV-Berater

Sehen Sie sich das Profil von Niko an!   Senden Sie eine Private Message an Niko  Schreiben Sie einen Gästebucheintrag für Niko

Beiträge: 9
Registriert: 12.04.2001

erstellt am: 17. Apr. 2001 09:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hochbaum 10 Unities + Antwort hilfreich

Hallo,

logisch ist das schon.
Mich hat nur verwundert, daß beim expliziten Speichern als 3D-Objekt (Line3D, nicht Line) Daten "verloren" gehen können, nur weil der Anwender die Ansicht auf 2D stehen hat.
Ich hatte vermutet, daß die Z-Koordinaten erhalten bleiben, da ja die Datenstruktur 2D/3D die gleiche ist.
Nun ja, wissen muß man es eben.
Gibt es denn eine Möglichkeit zu verhindern, daß der Anwender eine PRT im 2D Modus abspeichert?

Gruß
Klaus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Knoop
Mitglied
Dipl.-Ing. masch.


Sehen Sie sich das Profil von Knoop an!   Senden Sie eine Private Message an Knoop  Schreiben Sie einen Gästebucheintrag für Knoop

Beiträge: 409
Registriert: 09.10.2000

erstellt am: 17. Apr. 2001 17:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hochbaum 10 Unities + Antwort hilfreich

Hallo,

verhindern ist ja immer solche Sache....man könnte den Funktionsaufruf von Speichern durch was eigenes ersetzen. Man könnte eine Cip-Programmieren, die zuvor immer

EXT(565) void SetMod2D(
ushort mod2D ); // TRUE mod2D else mod3D

aufruft und stellt somit sicher, das MegaCAD 3D arbeitet.

Diese Funktion erfordert aber ein Anpassen der Dateien Megamenu.ini.


[Diese Nachricht wurde von Knoop am 18. April 2001 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz