Startseite

Über Jürgen A. Becker

Impressum

CAD-Dienstleistungen

Schulungsangebot

Archiv für die Kategorie „Allgemeines“

Autodesk //Labs - Plugin des Monats Dezember -

Dienstag, 8. Dezember 2009

Das ADN Plugin des Monats Dezember ist der Layer Reporter von Terry Dotson (Fa. DotSoft),für AutoCAD 2007 und spätere Versionen Kean Walmsley hat eine überarbeitet Version auf seinem Blog: Through the Interface veröffentlicht.

Das Plugin erstellt eine HTML-Seite mit einer Liste der Layer einer Zeichnung, diese Liste kann dann in Excel übergeben werden.

Ein sehr schönes Tool.

Hier der Artikel mit den entsprechenden Links auf dem Autodesk //Labs-Blog .

Viele Grüße

Ihr Jürgen A. Becker

AutoCAD 2010 und .Net-Framework - Verwalten von eigenen Daten innerhalb einer Zeichnung (Teil 5) -

Dienstag, 8. Dezember 2009

Im vorherigen Post habe ich erläutert wie das gesamte Xrecords eines Dictionaries ausgelesen werden können. In diesem Post möchte ich erläutern wie ein einzelner XRecord mit Hilfe des Names ausgelesen werden kann.

Zunächst wird das NamedObjectDictionary-Objekt mit folgendem Code bestimmt.

hNod =
     (DBDictionary)hTr.GetObject(
           db.NamedObjectsDictionaryId,
           OpenMode.ForWrite);

Ist das Dictionary (der Name steht in der Varibale hDictName) vorhanden, wird das Objekt mit Dem Dictionary erstellt und der XRecord mit der Methode GetAt und dem Namen des XRecord

hDict =
   (DBDictionary)hTr.GetObject(
             hNod.GetAt(hDictName),
             OpenMode.ForRead);
ObjectId hObjectID = hDict.GetAt(XRecordName);
hXr = (Xrecord)hTr.GetObject(hObjectID, OpenMode.ForRead);

Hier ist der vollständige Code der Methode.

using AcAp = Autodesk.AutoCAD.ApplicationServices;
.
.
.

public Xrecord ReadXrecord(string XRecordName)
{
  Xrecord hXr = null;

  Database db =
     AcAp.Application.DocumentManager.MdiActiveDocument.Database;
  Transaction hTr = db.TransactionManager.StartTransaction();
  hNod =
     (DBDictionary)hTr.GetObject(
           db.NamedObjectsDictionaryId,
           OpenMode.ForWrite);

  if (hNod.Contains(hDictName) == true)
  {
    try
    {
      hDict =
         (DBDictionary)hTr.GetObject(
             hNod.GetAt(hDictName),
             OpenMode.ForRead);
     ObjectId hObjectID = hDict.GetAt(XRecordName);
     hXr = (Xrecord)hTr.GetObject(hObjectID, OpenMode.ForRead);
   }
   catch (System.Exception e)
   {
     System.Windows.Forms.MessageBox.Show(e.Message);
   }               
  }
  hTr.Commit();
  return hXr;
}

Viel Spaß beim Ausprobieren

Autor: Dipl.-Ing. Jürgen A. Becker
Kontakt: Juergen.Becker@CAD-Becker.de oder Juergen.Becker@AUGI.COM

  • Langjährige Schulungserfahrung
  • Autorisierter AutoCAD Trainer (AutoCAD, Mechanical Desktop etc.)
  • Software- und Datenbankentwicklung

AutoCAD und .Net-Framework - Eingaben von Keywords -

Donnerstag, 8. Oktober 2009

In diesem Artikel möchte ich die Möglichkeit einer Keyword-Eingabe erläutern.

Das Beispiel zeigt ein Methode, die eine Zeichnung in unterschiedlichen Darstellungen zur Anzeige bringen soll.

Ich möchte eine Zeichnung in einer Knotenansicht etc. darstellen oder einen Dialog aufrufen, der mehr Möglichkeiten der Darstellungseinstellung bietet.

Zunächst wird eine Instanz der Klasse clsDraw erstellt. Die Klasse implementiert die Methoden zur Darstellung der Zeichnungen, diese werden hier nicht erläutert.

clsDraw hDraw = new clsDraw();

Die erforderlichen KeyWords werden mit der Methode KeyWords.ADD der Instanz der Klasse PromptKeywordOptions hinzugefügt.

string hPrompt = "Zeichnungsansicht ";
PromptKeywordOptions hPromptKeyword =
  new PromptKeywordOptions(hPrompt);
hPromptKeyword.Keywords.Add("knotenNummer");

Eine Definition des Default-Wertes ermöglicht eine Bestätigung per Eingabetaste.

hPromptKeyword.Keywords.Default = "Dialog";
hPromptKeyword.AllowNone = true;

Dazu ist es erforderlich, dass die Eigenschaft AllowNone auf true gestellt wird.

Die Eingabeauforderung sieht dann folgendermaßen aus:

PromptResult hPromptKeyResult = ed.GetKeywords(hPromptKeyword);

Das Ergebnis sieht nun in der Befehlszeile so aus:

Befehl: dwgview
Zeichnungsansicht [knotenNummer/Dialog]

:

Hier das Code_Beispiel:

using AcAp =
 Autodesk.AutoCAD.ApplicationServices.Application;
.
.
.

[CommandMethod("DWGView")]
static public void SetDrawingView()
{
 clsDraw hDraw = new clsDraw();
 Document doc = AcAp.DocumentManager.MdiActiveDocument;
 Editor ed = doc.Editor;
 string hPpt = "Zeichnungsansicht ";
 PromptKeywordOptions hPromptKeyword = new PromptKeywordOptions(hPpt);

 hPromptKeyword.Keywords.Add("knotenNummer");
 hPromptKeyword.Keywords.Add("Dialog");
 hPromptKeyword.Keywords.Default = "Dialog";
 hPromptKeyword.AllowNone = true;

 PromptResult hPromptKeyResult = ed.GetKeywords(hPromptKeyword);

 if (hPromptKeyResult.Status == PromptStatus.OK)
 {
   string hStringResult = hPromptKeyResult.StringResult.ToUpper();
   switch (hStringResult)
   {
     case "KNOTENNUMMER":
       hDraw.ViewKnotenNummer();
       break;
     case "DIALOG":
       hDraw.ViewDialog();
       break;
   }
 }
}

Viel Spaß beim Ausprobieren

Autor: Dipl.-Ing. Jürgen A. Becker
Kontakt: Juergen.Becker@CAD-Becker.de oder Juergen.Becker@AUGI.COM

  • Langjährige Schulungserfahrung
  • Autorisierter AutoCAD Trainer (AutoCAD, Mechanical Desktop etc.)
  • Software- und Datenbankentwicklung

.Net-Framework - Objektwahl -

Montag, 28. September 2009

Eine einzelne Objektwahl wird über die GetEntity-Methode des Editor-Objektes implementiert.

Das folgende Beispiel zur Objektwahl zeigt eine Einzel-Auswahl, die in einer Messagebox den Layer des ausgewählten Objektes anzeigt.

Der Status des Rückgabewertes der GetEntity-Methode – hier PromptEntityResult -wird in einer If-Anweisung auf “OK“ überprüft. Ist das Ergebnis der Überprüfung wahr, kann mit der Verarbeitung des Objektes fortgefahren werden.

Die Eigenschaft ObjectId, mit der später über eine Transaktion das Objekt mit dessen Eigenschaften und Methoden ermittelt wird, ist eine Eigenschaft des Rückgabewertes PromptEntityResult.

using Autodesk.AutoCAD.ApplicationServices;
using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
.
.
.

static public void SelSet()
{
 Document doc =
    AcAp.DocumentManager.MdiActiveDocument;
 Editor ed = doc.Editor;

 PromptEntityResult hPromptResult =
    ed.GetEntity("\nObjekt wählen: ");
 if (hPromptResult.Status == PromptStatus.OK)
 {
  ObjectId hObjektId = hPromptResult.ObjectId;
  Transaction hTr =
     doc.Database.TransactionManager.StartTransaction();
  using (hTr)
  {
    Entity hEntity =
      (Entity)hTr.GetObject(ObjektId, OpenMode.ForRead);
    MessageBox.Show("Layer: " + hEntity .Layer);
  }
  hTr.Dispose();
 }
}

Viel Spaß beim Ausprobieren

Autor: Dipl.-Ing. Jürgen A. Becker
Kontakt: Juergen.Becker@CAD-Becker.de oder Juergen.Becker@AUGI.COM

  • Langjährige Schulungserfahrung
  • Autorisierter AutoCAD Trainer (AutoCAD, Mechanical Desktop etc.)
  • Software- und Datenbankentwicklung

AutoCAD .NET Entwickler-Hilfe ist Online

Mittwoch, 29. Juli 2009

Autodesk hat die DotNet Entwickler-Hilfe online gestellt.

Der Inhalt dieser Hilfe behandelt die .Net API in AutoCAD für das Entwickeln von Benutzeranpassungen.

Inhalt

  • Einführung
  • Einführung in das Microsoft Visual Studio
  • Basiswissen der AutoCAD .NET API
  • AutoCAD Environment
  • Erstellen und Editieren von AutoCAD Entities
  • Bemaßungen und Toleranzen
  • Arbeiten mit 3D
  • Erstellen von Layouts und Plots
  • Nutzung von Events
  • Erstellen von Applkationen mit VB.NET and C#
  • Vergleich: VBA/VB nach VB.NET und C#
  • Vergleich: VBA nach VB.NET und C#
  • AutoCAD .NET Entwickler Hilfe
  • Viel Spaß beim Lernen und Stöbern.

     

    Ihr Jürgen A. Becker

    Herzlich Willkommen!

    Donnerstag, 29. Januar 2009

    Willkommen bei YourOwnCode - Erstelle Deinen eigenen Code -

    Dieser Blog wird sich in Zukunft mit der Programmierung von AutoCAD beschäftigen. Hier werden Visual-Lisp, VBA und C# Routinen vorgestellt.

    Ein weiteres Thema befasst sich mit der Benutzeranpassung.

    Gruß Jürgen A. Becker