Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  inhalt von collection-objekten speichern?

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
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  inhalt von collection-objekten speichern? (1419 mal gelesen)
isocyanat
Mitglied


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

Beiträge: 5
Registriert: 24.04.2005

erstellt am: 15. Jun. 2005 00:30    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 an alle im forum,
ich habe folgendes problem:
ich habe in mehreren collection-objekten eintraege aus textfeldern gespeichert und gebe diese in einer excel-tabelle aus. jedesmal wenn ich meine autocad sitzung beende, werden natürlich die inhalte der collection-objekte gelöscht, da sie sich nur im RAM befinden. das ist genau mein problem. ich muss quasi bei jeder sitzung von neuem beginnen, die collection-objekte mit daten zu füllen. gibt es eine möglichkeit die inhalte der collection-objekte in der aktuellen zeichnung zu speichern?
vielen dank schon einmal für eure bemühungen

gruß iso

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

Karsten HST
Mitglied
Bauingenieur


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

Beiträge: 54
Registriert: 22.04.2003

erstellt am: 15. Jun. 2005 08:18    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 isocyanat 10 Unities + Antwort hilfreich

Versuchs mal mit den erweiterten Daten

'Prozedur zum Speichern der Texte
Public Sub SaveCollection(sCol As Collection, ColName As String)
Dim XDType() As Integer, XDValue() As Variant
On Error Resume Next

'Felder für die Aufnahme der Zeichenfolgen dimensionieren
ReDim XDType(sCol.Count) As Integer
ReDim XDValue(sCol.Count) As Variant

'Das erste Feld dient der Aufnahme des Namens zur Identifizierung des
'Abschnitts der erweiterten Daten
XDType(0) = 1001: XDValue(0) = ColName

'Übergabe der einzelnen Daten an das jeweilige Feld
For i = 1 To sCol.Count
  XDType(i) = 1000: XDValue(i) = sCol(i)
Next

'Speichern der Daten in den XDaten des Modelbereichs. Es könnten auch
'die Objekte Blocks, Dictionaries, Layer usw. verwendet werden. (Sie müssen nur erweiterte Daten speichern können.

ModelSpace.SetXData XDType, XDValue

End Sub

'Laden der Zeichenfolgen aus den XDaten des ModelSpaces
Public Function LoadCollection(ColName As String) As Collection
Dim XDType As Variant, XDValue As Variant
On Error Resume Next

Set LoadCollection = New Collection

'Erweiterte Daten abrufen
ModelSpace.GetXData ColName, XDType, XDValue
If IsEmpty(XDType) = False Then
  'und dem Collection-Objekt hinzufügen
  For i = 1 To UBound(XDType)
      LoadCollection.Add CStr(XDValue(i))
  Next
End If
End Function

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

isocyanat
Mitglied


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

Beiträge: 5
Registriert: 24.04.2005

erstellt am: 16. Jun. 2005 20: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

hallo karsten,
vielen dank für deine schnelle antwort. ich hatte leider noch nicht die zeit, deinen tip auszuprobieren, aber werde mich am wochenende mal dran setzen. leider habe ich noch keine erfahrungen mit den erweiterten daten, aber es wird schon klappen bei so einem ausführlichem tip. danke nochmal.
gruß iso

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

isocyanat
Mitglied


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

Beiträge: 5
Registriert: 24.04.2005

erstellt am: 19. Aug. 2005 00:06    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 karsten,
vielen dank nochmal für deinen super tip. damit hat es geklappt. sorry das ich mich jetzt erst melde, hatte wenig zeit zum programmieren gefunden. für die antwort gibt es 2 hände voll unities.

für alle hier nochmal mein code: (ich habe ihn benutzt, um nach dem drücken von zwei verschiedenen buttons, den inhalt einmal zu speichern und einmal zu laden)

'Definieren des CollectionSet-Objekts  V O R  der ersten Routine in UserForm oder Modul (Variable wird global)
Dim Collection As New Collection

'Code zum Speichern der XDaten in den Modellbereich
Dim i As Integer
Dim XTypeIn() As Integer
Dim XDataIn() As Variant
                   
ReDim XTypeIn(Collection.Count) As Integer   
ReDim XDataIn(Collection.Count) As Variant                         
XTypeIn(0) = 1001: XDataIn(0) = "Name der XDaten"                   
    For i = 1 To Collection.Count                                           
        XTypeIn(i) = 1040: XDataIn(i) = Collection.Item(i)       
    Next                                                                 
ThisDrawing.ModelSpace.SetXData XTypeIn, XDataIn
' mit dem code "1040" speichert man doubles; mit dem code "1000" strings

'Code zum Laden der XDaten aus dem Modellbereich und anschließendem Speichern im Collection-Objekt
Dim XTypeOut As Variant
Dim XDataOut As Variant
Dim i As Integer
ThisDrawing.ModelSpace.GetXData "Name der XDaten", XTypeOut, XDataOut
    For i = 1 To UBound(XTypeOut)
        Collection.Add XDataOut(i)
    Next

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)2025 CAD.de | Impressum | Datenschutz