Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Blockreferenz im Modelspace finden .NET

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:  Blockreferenz im Modelspace finden .NET (1383 mal gelesen)
Pelikan
Mitglied
Dipl. Ing. Masch. Bau.


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

Beiträge: 260
Registriert: 30.12.2002

erstellt am: 02. Okt. 2009 17: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

Hallo zusammen,

ich möchte per .NET im Model Space eine bestimmte Blockreferenz finden.

in VBA kann ich per aktivem Layout leicht alle Entitys durchlaufen

dim element as Entity
dim objLayout as Layout
for each element in objLayout.entitys

next
...

in .NET kann ich auch das aktive Layout ermitteln...
Wie komme ich aber an die darin definierten Entity heran ???

Vielen Dank für jeden Tip.


Gruss Pelikan

PS. habe bisher nur mit VBA zu tun gehabt... finde da eigentlich alles etwas leichter (vorallem das editieren beim Debuggen vermisse ich bei .NET)

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


Ex-Mitglied

erstellt am: 02. Okt. 2009 17:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

arbeitest Du in dotNET mit TransActions oder ohne? Ohne bedeutet eigentlich, dass Du arbeiten kannst wie in VBA, ausser dass Du Dir das 'ThisDrawing'-Objekt erst selbst holen musst, Rest ist gleich.

Die Elemente des aktiven Bereichs (ohne TransAction) bekommst Du mit:

Code:
For Each tEnt as Autodesk.AutoCAD.Common.Interop.AcadEntity In objLayout.Block
   ...


>> vorallem das editieren beim Debuggen vermisse ich bei .NET

Du arbeitest mit einem 64bit-Betriebssystem! Da kann VS2008 dieses leider nicht (das ist kein Fehler von Autodesk, das geht einfach mit VS nicht), drum entwickle ich derzeit alles auf 32bit-Betriebssystembasis und da geht's einwandfrei (edit while debug). Im Notfall, wenn Dir kein Gerät mit 32bit zur Verfügung steht, mach Dir eine VmWare-Session, dann kannst Du damit ordentlich dotNET-basierte Applikationen entwickeln (und debuggen).

[EDIT] Ergänzende Info zu Debuggen:
64 bit Betriebssystem + 64 bit AutoCAD ==> kein edit-while-debug
64 bit Betriebssystem + 32 bit AutoCAD ==> edit-while-debug möglich
[/EDIT]

- alfred -

------------------
www.hollaus.at

Pelikan
Mitglied
Dipl. Ing. Masch. Bau.


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

Beiträge: 260
Registriert: 30.12.2002

erstellt am: 05. Okt. 2009 12:34    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 Alfred,

erst einmal Danke für deinen Tip.
Ich habe also mein VBA Macro mal per com versucht nachzubilden.

Im VS2005 (das setzte ich ein ist es vllt besser auf 2008 zu wechseln)
gibt mir das Projekt auch keinen Fehler beim erstellen.

möchte ich die DLL dann in Autocad laden kommt folgendes:

Assembly kann nicht geladen werden. Fehlerdetails:
System.BadImageFormatException: Die Datei oder Assembly
"file:///C:\dotnet\VBA2VBProject.dll" oder eine Abhängigkeit davon wurde nicht
gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
Dateiname: "file:///C:\dotnet\VBA2VBProject.dll"
  bei System.Reflection.Assembly._nLoad(AssemblyName fileName, String
codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark&
stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
  bei System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,
Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
  bei System.Reflection.Assembly.LoadFrom(String assemblyFile)
  bei Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
  bei loadmgd()
...

Danke für jeden Hinweis.


Gruss Pelikan aka (Andreas)

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


Ex-Mitglied

erstellt am: 05. Okt. 2009 12:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Andreas,

dass wer seine SystemInfo weglöscht, ist wirklich nicht alltäglich. 

Bedeutet das jetzt, Du arbeitest ger nicht auf 64bit-Basis? Und um welche AutoCAD-Version geht's eigentlich?

Viel sagt die Fehlermeldung nicht aus 
- hast Du ev. in der Plattformkonfiguration eingestellt, dass Du auf 'X86' beschränkst, aber dann 64bit laden willst?
- weitere Variante könnte sein, dass Du in den Verweisen die Eigenschaft 'lokale Kopie' auf TRUE stehen hast (aber das sollte eigentlich nur bei den *mgd.dll eine Rolle spielen, nicht bei Interop).
- oder Du hast in den Verweisen Zeug drin, das nur 32bit kann ==> lösch mal aus den Verweisen alles raus, was Du referenziert hast und zum Verbinden mit AutoCAD nicht brauchst.

Wenn Du Dein Projekt halbwegs leer machst und die ganze Solution hier uploadest, dann kann ich hineinsehen. Aus der Ferne ist's nicht ganz so easy. 

- alfred -

------------------
www.hollaus.at

Pelikan
Mitglied
Dipl. Ing. Masch. Bau.


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

Beiträge: 260
Registriert: 30.12.2002

erstellt am: 05. Okt. 2009 13:08    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 Alfred,

ich habe meine Signatur nicht gelöscht... keine Ahnung warum die nicht angezeigt wird.

Also ich habe Vista64bit das Projekt ist für Autocad2010.

Gruss Andreas

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


Ex-Mitglied

erstellt am: 05. Okt. 2009 13:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Also ich habe Vista64bit das Projekt ist für Autocad2010

...und neben den obigen Empfehlung ist auch gewährleistet, dass Deine Verweise auf die AutoCAD-2010 Interops/Dll's zeigen? Also entweder das Verzeichnis in der Verweisübersicht zeigt auf Dateien im AutoCAD2010-Verzeichnis oder es steht bei den Dateinamen etwas wie 18 und nicht 17 drin!

- alfred -

------------------
www.hollaus.at

Pelikan
Mitglied
Dipl. Ing. Masch. Bau.


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

Beiträge: 260
Registriert: 30.12.2002

erstellt am: 05. Okt. 2009 13:38    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


VBA2VBProject.vbproj.zip

 
Hallo nochmal,

eigentlich müsste das alles passen...
Habe dir das Projekt mal als zip anghängt.

Gruss Andreas

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


Ex-Mitglied

erstellt am: 05. Okt. 2009 13:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du hast eine Ref eingebunden (VisualBasic for Applications) ==> dies ist, glaube ich, nur 32bit-fähig, damit hast Du die Beschränkung, dass das gesamte Projekt nur mit 32bit arbeitet und Dein 64bit-AutoCAD das nicht laden kann.

Tu's bitte mal raus (wie ich schon oben empfohlen habe) und probierst nochmals.


In der Fehlermeldung (am Anfang) ist enthalten:
file:///C:\dotnet\VBA2VBProject.dll

Beim Compiler hast Du aber als Zielverzeichnis das 'bin'-Verzeichnis eingestellt, Du musst schon aus dem Verzeichnis laden, wo auch die Debug-Informationen stehen (und ev. auch andere Verweise).

In den Projekteigenschaften (und das ist wohl das böseste) hast Du einen Button (Karte) 'Kompilieren' ==> (Button) 'erweiterte Kompilerungsoptionen' und da steht drin:

Benutzerdefinierte Konstanten: Win32=True
Ziel-CPU: x86

beides ist falsch und damit bestätigt sich meine Vermutung von oben, Du versuchst, eine 32bit-Dll in ein 64bit-AutoCAD zu laden ==> geht nicht.

Diese Einstellungen können ev. auch automatisch gemacht worden sein durch Hinzufügen von Verweisen, die nur 32bit-fähig sind.

- alfred -

------------------
www.hollaus.at

Pelikan
Mitglied
Dipl. Ing. Masch. Bau.


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

Beiträge: 260
Registriert: 30.12.2002

erstellt am: 05. Okt. 2009 14:12    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

Die Einstellungen sind automatisch gemacht worden.

Ich habe ein Macro aus dem Developer Network genutzt um ein VBA Macro nach .Net zu portieren.
Mir scheint das bei 64bit Systemen hier ein Problem besteht.
So wie es ausschaut werde ich das mal, wenn ich Zeit habe, in .Net schreiben. (ohne interop)
Das Konvertieren scheint mir nicht sauber genug zu sein.

Danke für Deine schnelle und kompetente Hilfe !!!

Gruss Andreas

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



Elektrotechniker / Techniker / Ingenieur / Meister als Projektleiter Elektro-/Informationstechnik (m/w/d)

Die TechWerk GmbH, mit Hauptsitz in Augsburg, ist eine Tochter der LeitWerk AG, die als Ingenieurbüro für Bau- und Projektmanagement seit 28 Jahren die Abwicklung deutschlandweiter Baustellen übernimmt. Die TechWerk GmbH ist das Ingenieurbüro für Energie- und Gebäudetechnik sowie Gebäudeautomation.

Für unseren Standort in Augsburg suchen wir Sie zur Verstärkung ...

Anzeige ansehenTeamleitung, Gruppenleitung

Ex-Mitglied

erstellt am: 05. Okt. 2009 14:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

- entferne den Verweis zu 'VisualBasic for Applications'
- lösche den Eintrag 'Benutzerdefinierte Konstanten'
- stelle den Eintrag 'Ziel-CPU' auf 'Any'

und ich sehe mal (rein vom Hinsehen) kein weiteres Hindernis mehr. 

- alfred -

------------------
www.hollaus.at

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