Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  ObjectId heisst?

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  ObjectId heisst? (999 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 21. Aug. 2017 12:28    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

Code:
        public static Polyline GetBasePLine(SampleLine sline)
        {
            Polyline pline = new Polyline();
            int v = 0;
            foreach (SampleLineVertex vertex in sline.Vertices)
            {
                pline.AddVertexAt(v, vertex.Location.Convert2d(new Plane()), 0, 0, 0);
                v++;
            }
            return pline;
        }

Ich bin hier auf ein mir unbekanntes Problem gestossen. Das in der o.g. Methode Polyline-objekt ist zwar erzeugt, befindet sich jedoch noch nicht in der Zeichendatenbank, da die Poly.ObjectID leer ist  bzw. kein ms.AppendEntity(db) stattfindet.
Dennoch kann ich im weiteren Verlauf des Programmes auf die vertex-punkte zugreifen, wie ist das zu verstehen ?
Habe ich quasi nur eine Point2dCollection aber in einer Polyline-klasse?

------------------
Gruss Dirk
Blog

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 21. Aug. 2017 13:07    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 cadplayer 10 Unities + Antwort hilfreich

... ich würde mal so sagen: Das Transaction-Prinzip arbeitet nach der MVVM-Methodik --
Model->View | View->Model
Diese Methodik ist im Arbeiten mit Datenbanken üblich, eine Zeichnung ist nichts anderes.
Die Daten in einer Datenbank sind in aller Regel darauf ausgelegt, dass diese effektiv und nicht redundand gespeichert sind. Eine vollständige Objektbeschreibung erhält man erst durch Interpretation der Daten und derer Abhängigkeiten. In der Praxis benötigt man selten die Sicht auf die Daten, wie diese in der Datenbank abgelegt sind, sondern man schaut sich die Daten vor  dem Hintergrund einer zu erledigenden Aufgabe an --> View. Es ist also üblich, verschiedene Sichte auf die Daten zu definieren, was letztendlich auch die Basis einer schnellen Datenbankanwendung ist.
View ist also an dieser Stelle nicht als Ansicht im Sinne von AutoCAD-Ansicht zu verstehen, sondern als Ansicht auf das Datenmodell.
Das wäre das erste MV = Model->View.
Der Prozess, der zur Erledigung der Aufgabe abgearbeitet werden muss, findet nun in der View statt, die man ausgelesen hat. Das Prozessergebnis muss aber auch wieder zurück in die Datenbank, das ist das VM = View->Model.

Soll heißen, sein Code arbeitet die ganze Zeit in einer speziellen Sicht auf das Model. Die Elemente aus dem Modell holst du mit Transaction.GetObject(..) in die aktuelle Sicht. In dieser Ansicht auf das Datenmodell kannst du machen was du willst, solange du aus dieser Sicht nichts in das Modell zurück bringst, bleibt das Modell unverändert. Das Zurückbringen in das Modell erfolgt zweistufig:
-> Transaction.AddNewlyCreatedDBObject() fügt das Object an die richtige Stelle der Datenbank ein
-> Transaction.Commit() speichert die Änderungen an der Datenbank.

Klingt zunächst kompliziert, sollte aber unbedingt verstanden und auch für die eigene Arbeitsweise verinnerlicht werden, denn das ist das ultimative Grundverständnis für die objektorientierte Programmierung. Ich gehe in meinen AutoCAD-Programmen soweit, dass ich mir immer auch eine eigene, auf die Aufgabe passende View erstelle. Das macht den Code am Ende nicht nur lesbarer, sondern bewirkt, dass ich meine eigenen Code-Bibliotheken für die Kommunikation mit AutoCAD effektiv nutzen kann.
Der Code wird dadurch recht kleinteilig und die Kommunikation mit der AutoCAD-Datenbank funktioniert immer passend zur jeweiligen zu erledigenden Prozessaufgabe. Code-Änderungen sollten keinen Einfluss auf andere Prozessaufgaben haben, Erweiterungen der Aufgabenstellung lassen sich ohne Änderung der bereits existierenden Prozesse hinzufügen.

Ich hoffe, das ist soweit verständlich.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 22. Aug. 2017 08:14    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

Gut erklärt! - Danke!

------------------
Gruss Dirk
Blog

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)2023 CAD.de | Impressum | Datenschutz