Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Instanz einer Klasse an eine offene DWG binden

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:  Instanz einer Klasse an eine offene DWG binden (1751 mal gelesen)
Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

AutoCAD Civil 3D 2022
CADdy V.17
Laptop Win10 Intel i7 2.71GHz, 64GB Ram

erstellt am: 13. Feb. 2007 09: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

Hallo,

ich habe ein Problem. ... wie beschreibe ich es ? ...

.. Am besten ich erkläre es an unserem "alten" CADdy ...

Also, wenn ich in CADdy V2 (Vermessungsappl.) ein Projekt
geöffnet habe, dann hat CADdy die Vermessungspunkte aus
der Datenbank und aus dem PIC die B-Symbole mit FolgenNr 108
(in ACAD => aus dem DWG die entspr.Blöcke) ein eine
Speicherliste (im RAM) gelesen.

Das bekomme ich ebenfalls hin.

Nur in CADdy gibt es innerhalb der Anwendung immer nur 1 PIC,
wenn ich ein weiteres bearbeiten möchte, dann muß ich das geladene
schließen. Aber in AutoCAD kann ich ein weiteres öffnen und
dann verhaspelt sich ja die Application. Denn sie will mit der
Speicherliste auf die falsche DWG.
Nun will ich aber das gleichzeitige Arbeiten mit mehreren DWG's
nicht unterbinden.

Wie kann ich dann die Speicherliste, das wäre eine Instanz der
Listenklasse an die geöffnete DWG binden. Damit die Application
(die Buttons, Menüs und Befehle in AutoCAD) die richtige
Listenklasse verwenden?

Gruß Mario

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

criecky
Mitglied
MENSCH


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

Beiträge: 251
Registriert: 13.01.2004

ACAD 2011- 2017
www.cbyte.eu

erstellt am: 16. Feb. 2007 12: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 Nur für Mario Rosenbohm 10 Unities + Antwort hilfreich

hallo mario,

so richtig habe ich dich noch nicht verstanden.
möchtest pic files einlesen (shit caddy  ) ?
hast du vor verschiedene files gleichzeitig zu öffnen und dann daran deine daten zu binden (AcApDocManager::curDocument Function) oder geht es wieder mal um eindeutigkeit für jede zeichnung (xdata)?

gruss marko! und helau           

------------------

Softlan macht das Netzwerk weich!

www.cbyte.de

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

Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

AutoCAD Civil 3D 2022
CADdy V.17
Laptop Win10 Intel i7 2.71GHz, 64GB Ram

erstellt am: 16. Feb. 2007 13: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

Hi Marko,

die AutoCAD-DWG (activeDocument o.ä.) enthält Blöcke mit Attribute.
Für jeden Block incl. seiner Attribute existiert in einer DesktopSQL DB
ein Datensatz.
Im AutoCAD habe ich mir Funktionen geschaffen um diese Blöcke zu
erzeugen, verschieben, die Attribute zu ändern und um den Datenbestand
zwischen der DB und der DGW kongruent zu halten.
Wenn ich z.b. einen Block einfüge muss ich prüfen, ob das Attribut
"Punktnummer", also eine eindeutige Nummer/Text des Blockes bereits in
der DWG bzw der DB vorhanden ist. In der DB ist das ja kein Problem "SELECT ..."
aber in der DWG muss man alle Blöcke durchlaufen und
alle Attribute der Blöcke.

Um dies performanter zu gestalten möchte ich am Anfang die DWG einmal
auslesen und die Daten in eine Hashlist packen. Dort kann ich dann
sehr schnell an alle Daten heran.
Nur wenn ich mehrere DWG's offen habe muß ich ja die Hashlist der DWG zuordnen können. ...mmm...

Da fällt mir was ein ein.

Kann man innerhalb der "Application-Klasse" :

Code:

Public Class KSROApplicationKoordToolsExtApp
  Implements Autodesk.AutoCAD.Runtime.IExtensionApplication

Hier z.B.

  Public Sub Initialize() Implements Autodesk.AutoCAD.Runtime.IExtensionApplication.Initialize
  End Sub

  Public Sub Terminate() Implements Autodesk.AutoCAD.Runtime.IExtensionApplication.Terminate

  End Sub
End Class


... eine Variable am leben halten?

Da könnte man dann ja die angelegten Hashlisten verwalten.

Gruß Mario

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

Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

AutoCAD Civil 3D 2022
CADdy V.17
Laptop Win10 Intel i7 2.71GHz, 64GB Ram

erstellt am: 23. Feb. 2007 22:11    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,

Problem gelöst.

Man kann Instanzen einer Klasse relativ einfach an die DWG binden.
Nämlich in der "Commands"-Klasse der Application. Diese wird für jede
DWG euerzeugt, beim 1. Aufruf eines Kommandos, welches diese Klasse
bereitstellt.
Beispiel:

Code:
<Assembly: ExtensionApplication(GetType(TEST.KSROApplicationExtApp))>
<Assembly: CommandClass(GetType(TEST.KSROApplicationCommands))>


Public Class KSROApplicationExtApp
  Implements Autodesk.AutoCAD.Runtime.IExtensionApplication

  Public Sub Initialize() Implements Autodesk.AutoCAD.Runtime.IExtensionApplication.Initialize
      Dim ARXModule As System.Reflection.Module = System.Reflection.Assembly.GetExecutingAssembly(). _
                                                  GetModules()(0)
      Dim ARXModulePath As String = ARXModule.FullyQualifiedName
      Dim acEditor As Editor = Application.DocumentManager.MdiActiveDocument.Editor
      Try
        ARXModulePath = ARXModulePath.Substring(0, ARXModulePath.LastIndexOf("\"))
        ARXModulePath = ARXModulePath.Substring(0, ARXModulePath.LastIndexOf("\"))
      Catch
        acEditor.WriteMessage("Fehler beim Erfragen des ARXModulepfades!" + vbCrLf)
        Exit Sub
      End Try

      Dim acCustomizationSection As CustomizationSection = New CustomizationSection(ARXModulePath + "\TEST.cui")
  End Sub

  Public Sub Terminate() Implements Autodesk.AutoCAD.Runtime.IExtensionApplication.Terminate
  End Sub
End Class


Public Class KSROApplicationCommands

  Private TestClass As ClassTestClass

  Public Sub New()
      Me.TestClass = New ClassTestClass()
      Me.TestClass.OpenTestClass()
  End Sub

  Protected Overrides Sub Finalize()
      MyBase.Finalize()
  End Sub
  <CommandMethod("TESTEXPORT")> _
  Public Sub TESTExport()
      Dim acEditor As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument. _
                              Editor

      acEditor.WriteMessage("... Exportiere ...")
      Me.TestClass.Export()
      acEditor.WriteMessage(" ... Fertig." + vbCrLf)
  End Sub
End Class


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