Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Unterschied Line vs Line3d

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:  Unterschied Line vs Line3d (700 mal gelesen)
KevinK
Mitglied



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

Beiträge: 12
Registriert: 05.09.2012

erstellt am: 10. Okt. 2012 10:45    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 Zusammen,

ich habe folgenden Code:

Code:

Database db = HostApplicationServices.WorkingDatabase;

Transaction tr = db.TransactionManager.StartTransaction();

BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

Point3d _upperLeft = new Point3d(0.0, 0.0, 0.0);
Point3d _upperRight = new Point3d(0.0, 50.0, 0.0);       
                     
Line mRect = new Line(_upperLeft, _upperRight);                                     
                     
btr.AppendEntity(mRect);         
tr.AddNewlyCreatedDBObject(mRect, true);
tr.Commit();
tr.Dispose();

Wenn ich nun dasselbe mit Line3d machen wollte, wie würde
das dann aussehen?

Line hat den Typ Entity. Line3d den Typ Line3d.

Worin besteht hier der Unterschied?

Weiterhin worin liegt der Unterschied zwischen dem obigen Code und folgenden?

Code:

Database db = Application.DocumentManager.MdiActiveDocument.Database;   
Transaction trans = db.TransactionManager.StartTransaction();
           
BlockTableRecord mSpace = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);

Point3d _Startpoint = new Point3d(0.0, 0.0, 0.0);
Point3d _Endpoint = new Point3d(5.0, 5.0, 5.0);

Line linie1 = new Line(_Startpoint,_Endpoint);
           
mSpace.AppendEntity(linie1);

trans.AddNewlyCreatedDBObject(linie1,true);
trans.Commit();
trans.Dispose();



Hab das noch nicht ganz begriffen.

Vielen Dank.

Grüße

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: 10. Okt. 2012 20:42    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 KevinK 10 Unities + Antwort hilfreich

Hallo,
Line3d erbt nicht von Entity, folglich kannst du kein grafisches Element davon erzeugen. Ein anderes Beispiel ist auch das Curve-Object.

Unterschiede:
Das erste öffnet immer den Modellbereich und fügt dort das Entity hinzu, das andere den Blocktablerecord des aktuellen Modell-oder Papierbereich.

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

KevinK
Mitglied



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

Beiträge: 12
Registriert: 05.09.2012

erstellt am: 11. Okt. 2012 17:26    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

Für welche Zwecke verwende ich z.B. dann Line3d.

Noch eine Frage:
Ich habe jetzt eine Abfrage erstellt, die alle ObjectIds ausliest.
Wenn ich nun eine leere Zeichnung nehme und die Abfrage ausführe, erhalte ich eine ID von einem nicht gezeichneten Objekt.

Um welches Objekt handelt es sich da?

Vielen Dank!

Grüße

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: 11. Okt. 2012 17: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 KevinK 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KevinK:
Für welche Zwecke verwende ich z.B. dann Line3d.

keine Ahnung. Mit diesem Objekt habe ich noch nichts gemacht.


Zitat:
Original erstellt von KevinK:
Ich habe jetzt eine Abfrage erstellt, die alle ObjectIds ausliest.
Wenn ich nun eine leere Zeichnung nehme und die Abfrage ausführe, erhalte ich eine ID von einem nicht gezeichneten Objekt.

Um welches Objekt handelt es sich da?



ohne zu wissen, wie du die ID's ausliest, kann man dazu nichts sagen. Schau dir doch aber das Objekt an (öffnen zu lesen), dann solltest du doch zumindest mal den Typen des und die Eigenschaften des Objektes in Erfahrung bringen können und daraus dann Rückschlüsse ziehen können?

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

KevinK
Mitglied



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

Beiträge: 12
Registriert: 05.09.2012

erstellt am: 11. Okt. 2012 18:15    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

ausgelesen habe ich es so:


Code:

                    PromptSelectionResult pen;

                    pen = ed.SelectAll();

                    int i = new int();
                    i = pen.Value.Count;

                    ObjectId[] ps = new ObjectId[i];

                    ps = pen.Value.GetObjectIds();

                    BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);   
             

                    for (int j = 0; j < i; j++)
                    {                       
                        ed.WriteMessage(ps[j].ToString());
                        object neu;

                        neu = tr.GetObject(ps[j], OpenMode.ForRead);

                        ed.WriteMessage(neu.GetType().ToString());
                                                                   
                    }   


 

das Ergebniss ist:
(8796087825312)Autodesk.AutoCAD.DatabaseServices.Viewport

Layer?

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

KevinK
Mitglied



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

Beiträge: 12
Registriert: 05.09.2012

erstellt am: 11. Okt. 2012 19: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

Mein ganzer Code sieht jetzt folgendermaßen aus.

Code:

namespace ACADnet
{
    public class select
    {
        [CommandMethod("sel")]
        public void Command1_Method()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Editor ed = MgdAcApplication.DocumentManager.MdiActiveDocument.Editor;
           
            try
            {
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    PromptSelectionResult pen;

                    pen = ed.SelectAll();

                    int i = new int();
                    i = pen.Value.Count;                   

                    ObjectId[] ps = new ObjectId[i];

                    ps = pen.Value.GetObjectIds();

                    BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);   
             

                    for (int j = 0; j < i; j++)
                    {                       
                        ed.WriteMessage(ps[j].ToString());
                        object neu;

                        neu = tr.GetObject(ps[j], OpenMode.ForRead);


                        if (neu.GetType() == typeof(Line))
                        {
                            Line mline = new Line();
                           
                 
                           
                            ed.WriteMessage("ist eine Linie");
                        }                                                                 
                       

                        ed.WriteMessage(neu.GetType().ToString());
                                                                   
                    }                                                                               
                                     
                    tr.Commit();
                }
               
            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                ed.WriteMessage(ex.ToString());
            }
        }

    }
}


Bei der If-Abfrage möchte ich jetzt alle Linien die vorhanden sind ansprechen.
Also sowas in der Art:
mLine = tr.GetObject(ps[j], OpenMode.ForRead);

Wie kann ich jetzt die Objekte, die eine Linie sind auch als Linie ansprechen?

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: 11. Okt. 2012 22:25    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 KevinK 10 Unities + Antwort hilfreich

Hallo,
wie mir scheint, bist du anscheinend vollkommen autodidaktisch unterwegs. Deine Frage wie man nun ein Objekt gezielt als Line anspricht kann ich dir zwar beantworten, würde aber dann auch nur weitere Fragen provozieren. Folglich müsste ich sehr weit ausholen, was aber zum einen über das Forum nur sehr schwer möglich ist, und zum anderen die Forenhilfe übersteigt. Dieses Grundwissen ist für die Forenkommunikation notwendig und kann im Forum auch nicht vermittelt werden.
Das soll jetzt bitte nicht falsch verstanden werden, ich bin gerne bereit zu helfen. Ich möchte aber in aller erster Linie nicht einfach nur Lösungen in einem Programmierforum posten, sondern auch das Verständnis, weshalb die Lösung so ist, erreichen. Speziell bei diesem Thema triffst du den Kern der objektorientierten Programmierung: die Vererbung. In meinen Schulungen wende ich dafür einen ganzen Tag auf. Ich denke, nun wird klar, welchen Umfang meine Antwort haben müßte.

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

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