Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  .NET VB C#

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:  .NET VB C# (3657 mal gelesen)
egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 20. Aug. 2006 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

Hi all

habe ein VB.NET Programm das einen Block problemlos einfügt und dasselbe in C# nochmals erstellt. Leider funktioniert das C# nicht. Kann mir jemand sagen was ich hier falsch gemacht habe ? Besten Dank.

Das Block explode habe ich bis jetzt in VB sowie in C# nicht geschafft. Ware dankbar wenn ich einen Tip erhalten würde wie das funktioniert.

VB Code
-------
Public Class AdskClass1

  <CommandMethod("Asdkcmd1")> _
  Public Function Asdkcmd1()
    Dim insertionPoint(2) As Double
    Dim Comp As String
    Comp = "d:\temp\test.dwg"
    insertionPoint(0) = 10 : insertionPoint(1) = 20 : insertionPoint(2) = 0
    Dim doc As Document = acadApp.DocumentManager.MdiActiveDocument
    Dim ed As Editor = doc.Editor
    Dim tr As Transaction = doc.TransactionManager.StartTransaction
    Try
      Dim dwgName As String = HostApplicationServices.Current.FindFile(Comp, acadApp.DocumentManager.MdiActiveDocument.Database, FindFileHint.Default)
      Dim db As Database = New Database(False, False)
      db.ReadDwgFile(dwgName, IO.FileShare.Read, True, "")
      Dim NewBlkId As ObjectId
      NewBlkId = doc.Database.Insert(dwgName, db, False)
      Dim bt As BlockTable = tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead, True)
      Dim btr As BlockTableRecord = tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite, True)
      Dim bref As BlockReference = New BlockReference(New Autodesk.AutoCAD.Geometry.Point3d(insertionPoint), NewBlkId)
      btr.AppendEntity(bref)
      tr.AddNewlyCreatedDBObject(bref, True)
      tr.Commit()
    Catch ex As Exception
      ed.WriteMessage(ex.ToString)
    End Try
  End Function

End Class


C# Code
-------
[CommandMethod("AsdkCmd1")]
static public void test()
{
string comp = "d:\temp\test.dwg";
Document doc = acadApp.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Transaction tr = doc.TransactionManager.StartTransaction();
try
{
string dwgName = HostApplicationServices.Current.FindFile(comp,acadApp.DocumentManager.MdiActiveDocument.Database,FindFileHint.Default);
Database db = new Database(false, false);
db.ReadDwgFile(dwgName,System.IO.FileShare.Read, true, "");
ObjectId NewBlkId = new ObjectId();
NewBlkId = doc.Database.Insert(dwgName, db, false);
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead,true);
BlockTableRecord btr =(BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite);
BlockReference bref = new BlockReference(new Autodesk.AutoCAD.Geometry.Point3d(10,10,0), NewBlkId);
btr.AppendEntity(bref);
tr.AddNewlyCreatedDBObject(bref, true);
tr.Commit();
}
finally
{
tr.Dispose();
}
}

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

egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 27. Aug. 2006 22:17    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

auch das C# Programm funktioniert nun auch 

using System;
using System.Runtime;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using System.Globalization;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.EditorInput;
using acadApp = Autodesk.AutoCAD.ApplicationServices.Application;


[assembly: CommandClass(typeof(ClassLibrary.Class))]

namespace ClassLibrary
{
/// <summary>
/// Summary description for Class.
/// </summary>
public class Class
{
public Class()
{
//
// TODO: Add constructor logic here
//
}

// Define Command "AsdkCmd1"
[CommandMethod("AsdkCmd1")]
static public void test()
{
string comp = "D:\\Temp\\test.dwg";
Document doc = acadApp.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Transaction tr = doc.TransactionManager.StartTransaction();
try
{
string dwgName = HostApplicationServices.Current.FindFile(comp,acadApp.DocumentManager.MdiActiveDocument.Database,FindFileHint.Default);
Database db = new Database(false, false);
db.ReadDwgFile(dwgName,System.IO.FileShare.Read, true, "");
ObjectId BlkId;
BlkId = doc.Database.Insert(dwgName, db, false);
BlockTable bt = (BlockTable)tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead,true);
BlockTableRecord btr =(BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite);
BlockReference bref = new BlockReference(new Autodesk.AutoCAD.Geometry.Point3d(10,10,0), BlkId);
btr.AppendEntity(bref);
tr.AddNewlyCreatedDBObject(bref, true);
bref.ExplodeToOwnerSpace();
bref.Erase();
tr.Commit();
}
finally
{
tr.Dispose();
}
}
}
}

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