Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  absoluter Anfänger möchte eine Linie zeichnen

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:  absoluter Anfänger möchte eine Linie zeichnen (1524 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: 05. Sep. 2012 13:37    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,

habe gerade mit C# und AutoCad angefangen.
Meine ersten Versuche ist es eine Linie zu zeichnen.

Mein Code sieht bisher folgendermaßen aus:

Code:

namespace CADDrawing
{

    /// <summary>
    /// Eine einfache Klasse für die Erzeugung von Objekten in ACAD
    /// </summary>
    public class CADDrawing
    {
        #region Felder
        /// <summary>
        /// Felder für die Punkte
        /// </summary>
        private static Database db = new Database();
        private static Transaction trans = new Transaction();
        private static BlockTableRecord mSpace = new BlockTableRecord();
       
        private double[] _startPoint = new double[3];
        private double[] _endPoint = new double[3];
       
     
        #endregion

        #region Eigenschaften
        /// <summary>
        /// Gets oder sets den Start Punkt
        /// </summary>
        public double[] StartPoint
        {
            get
            {
                return this._startPoint;
            }
            set
            {
                this._startPoint = value;
            }
        }

        /// <summary>
        /// Gets oder sets den End Punkt
        /// </summary>
        public double[] EndPoint
        {
            get
            {
                return this._endPoint;
            }
            set
            {
                this._endPoint = value;
            }
        }
        #endregion

        #region Methoden

        // Methode für das Zeichnen einer Linie
        public void DrawLine()
        {
            // Zeichnet den Start und Endpunkt
            db = Application.DocumentManager.MdiActiveDocument.Database;
            trans = db.TransactionManager.StartTransaction();
            mSpace = trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
           
                       
            Point3d startPoint = new Point3d(_startPoint[0], _startPoint[1], _startPoint[2]);
            Point3d endPoint = new Point3d(_endPoint[0], _endPoint[1], _endPoint[2]);

            Line3d line = new Line3d(startPoint, endPoint);

            mSpace.AppendEntity(line);
            trans.AddNewlyCreatedDBObject(line, true);
            trans.Commit();

           
                       
        }
       
       
       
       
        // Modal Command with localized name
        [CommandMethod("MyGroup")]
        public void MyCommand() // This method can have any name
        {
            CADDrawing linie1 = new CADDrawing();
            linie1.StartPoint[0] = 0;
            linie1.StartPoint[1] = 0;
            linie1.StartPoint[2] = 0;

            linie1.EndPoint[0] = 5;
            linie1.EndPoint[1] = 5;
            linie1.EndPoint[2] = 0;
           

        }

        #endregion
    }

}


Ich habe das mit der Oberfläche und der Datenbank schreiben noch nicht
wirklich verstanden.

1. Die derzeitige Oberfläche(Modellbereich) zum Schreiben öffnen
2. Die Linie erzeugen
3. Die Linie dem Modell hinzufügen.

Wie muss ich das oben programmieren, damit das funktioniert?

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: 05. Sep. 2012 17: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 Kevin,

zum erklären ist's mir zu viel. Du hast den Code anscheinend irgendwie zusammenkopiert und noch keine klare Vorstellung, wie das mit den Classen funktioniert.
Daher habe ich den Code einfach mal umgestellt, so wie es mal etwas klarer sein sollte und auch funktioniert (getestet habe ich nicht)

Code:

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

namespace CADDrawing
{
    /// <summary>
    /// Eine einfache Klasse für die Erzeugung von Objekten in ACAD
    /// </summary>
    public class mLine
    {
        #region Eigenschaften
        private Line _acLine;
        /// <summary>
        /// Startpunkt der Linie
        /// </summary>
        public Point3d StartPoint
        {
            get { return _acLine.StartPoint; }
            set { _acLine.StartPoint = value; }
        }
        private Point3d _endPoint;
        /// <summary>
        /// Endpunkt der Linie
        /// </summary>
        public Point3d EndPoint
        {
            get { return _acLine.EndPoint; }
            set { _acLine.EndPoint = value; }
        }
        /// <summary>
        /// X-Koordinate des Startpunktes
        /// </summary>
        public Double StartX
        { get { return _startPoint.X; } }
        /// <summary>
        /// Y-Koordinate des Startpunktes
        /// </summary>
        public Double StartY
        { get { return _startPoint.Y; } }
        /// <summary>
        /// Z-Koordinate des Startpunktes
        /// </summary>
        public Double StartZ
        { get { return _startPoint.Z; } }
        /// <summary>
        /// X-Koordinate des Endpunktes
        /// </summary>
        public Double EndX
        { get { return _endPoint.X; } }
        /// <summary>
        /// Y-Koordinate des Endpunktes
        /// </summary>
        public Double EndY
        { get { return _endPoint.Y; } }
        /// <summary>
        /// Z-Koordinate des Endpunktes
        /// </summary>
        public Double EndZ
        { get { return _endPoint.Z; } }

        /// <summary>
        /// Gets oder sets den End Punkt
        /// </summary>
       
        #endregion

        #region Konstruktor
        public mLine(Point3d _SP, Point3d _EP)
        {
            _acLine = new Line(_SP, _EP);
        }
        #endregion Konstruktor

        #region Methoden

        // Methode für das Zeichnen einer Linie
        public void DrawLine(BlockTableRecord _ownerSpace, Transaction _tr)
        {
            // Zeichnet den Start und Endpunkt
            _ownerSpace.AppendEntity(_acLine);
            _tr.AddNewlyCreatedDBObject(_acLine, true);
            _acLine.Close();           
        }
        #endregion
    }
    public class Commands
    {
        // Modal Command with localized name
        [CommandMethod("MyGroup")]
        public void MyCommand() // This method can have any name
        {
            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(0.0, 0.0, 0.0);

            mLine linie1 = new mLine(_Startpoint,_Endpoint);
            linie1.DrawLine(mSpace, trans);
            mSpace.Close();
            trans.Commit();
            trans.Dispose();
        }
    }
}


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: 05. Sep. 2012 19:22    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

Danke sehr.

Habs jetzt hin bekommen. Dein Code hatte soweit funktioniert.
Nur für was hast du die Eigenschaften definiert? Weil sie werden
doch am Ende garnicht verwendet.

Aber trotzdem Danke! Funktioniert ja :-)

vg

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: 05. Sep. 2012 20:22    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:
... Nur für was hast du die Eigenschaften definiert? Weil sie werden doch am Ende garnicht verwendet.

.. einfach nur, um den Horizont zu erweitern. Dein Konstrukt schien mir sehr wirr zu sein, weshalb ich das einfach gemacht habe.

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