Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Attribute und UserForm

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:  Attribute und UserForm (3050 mal gelesen)
Lappi
Mitglied
Datenträger :)


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

Beiträge: 56
Registriert: 30.08.2006

Ich hoffe dieses kleine Feld reicht aus um alles hinein zu schrei

erstellt am: 30. Aug. 2006 19:47    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..bin der Neue 

Ich stehe grade vor folgendem Problem und hätte gerne einen Gedankenastoß zur Lösung:

In einer Zeichnung habe ich einen recht grossen Block mit jeder Menge nicht ausgefüllten Attributen.

Der Block ist tabellarisch aufgebaut, die Attribute sind wie folgt:
attA01    attA02    attA03    attA04
attB01    attB02    attB03    attB04 usw.

das Ganze ist leider im 'normalen' Attributeditor (attedit) und auch in der Eigenschaften-Ansicht zu unübersichtlich. Daher wollte ich gerne eine UserForm erstellen, sämtliche Attribute in Textfelder übergeben, dort modifizieren und hinterher wieder in den Block schreiben.

Wie ich den Block auslese weiss ich...aber irgendwie fehlt mir die richtige Idee die Werte gezielt in die Textfelder der Form zu übergeben. Besonders schöne wäre es sogar, wenn sich diese Form dynamisch aufbauen würde...als Beispiel:
Im Block sind 100 Attribute, immer 5 nebeneinander stehend, und ich erhalte ein Formular welches genau diese Tabelle wiederspiegelt.

Am liebsten täte ich ja die Werte an Excel oder Access/dBase übergeben ...aber das ist aus technischen Gründen dieses mal nicht möglich. Ich muss es irgendwie mit einer tabellarischen Darstellung in Acad hinbekommen :/

Hat vielleicht jemand eine Idee wie man da herangehen könnte?

Grüsse
ML

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 30. Aug. 2006 20:16    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 Lappi 10 Unities + Antwort hilfreich

Hallo Lappi,

Erst ma Herzlich Wilkommen im Forum.

Einem Textfeld in der Userform kannst du wie folgt den Wert eines Attributs zuweisen:
Userform1.TextBox3.Text = (LTrim(Attrib(2).textString))
Du kannst ja die Anzahl der Attribute über einen Selectionset ausfiltern. Danach kannst du die Anzahl der Textfelder in deiner Form bestimmen und erstellen.

Gruß, Carsten

[Diese Nachricht wurde von Carsten1210 am 30. Aug. 2006 editiert.]

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 31. Aug. 2006 12:26    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 Lappi 10 Unities + Antwort hilfreich

Hallo,

wie wärs mit einem Excelersatz ?
Lies doch die Attribute in ein Grid ein. Hierzu erzeugst du ein Recordset im Speicher (ohne Datenbank dahinter). Diese Datenquelle läßt sich z.B. für ein Datagrid verwenden.

Verweis auf "Microsoft ActiveX Data Objects Recordset 2.x Library" (ADOR) einstellen und als Komponente "Microsoft DataGrid Corntrol"

Code:
Option Explicit

Dim rs As ADOR.Recordset

Private Sub UserForm_Initialize()
    ' Temporäres Recordset definieren
    Set rs = New ADOR.Recordset
    rs.Fields.Append "AttrName", adBSTR, 30
    rs.Fields.Append "AttrValue", adBSTR, 30
   
    rs.Open
   
    ' Werte füllen
    rs.AddNew
    rs.Fields(0).Value = "Attr1"
    rs.Fields(1).Value = "1234ABCD"
    rs.Update
   
    rs.AddNew
    rs.Fields(0).Value = "Attr2"
    rs.Fields(1).Value = "xyz"
    rs.Update
   
    ' Die Daten im Grid anzeigen
    Set Me.DataGrid1.DataSource = rs
    ' Einstellungen im Grid
    Me.DataGrid1.AllowAddNew = False
    Me.DataGrid1.AllowDelete = False
    Me.DataGrid1.AllowUpdate = True
    Me.DataGrid1.Caption = "Meine Attribute"
    Debug.Print Me.DataGrid1.ColumnHeaders
    Me.DataGrid1.Columns(0).Caption = "Name"
    Me.DataGrid1.Columns(1).Caption = "Wert"
    Me.DataGrid1.RowHeight = 15
End Sub



Stelli

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

Lappi
Mitglied
Datenträger :)


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

Beiträge: 56
Registriert: 30.08.2006

Ich hoffe dieses kleine Feld reicht aus um alles hinein zu schrei

erstellt am: 04. Sep. 2006 20:49    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.

Sorry, dass meine Antwort auf sich warten lies..ich musste diese Problemlösung leider ein wenig nach hinten verschieben.

Erst einmal Danke für die Antworten.
@Stelli
Leider geht Dein Lösungsansatz nicht, da ich weder Excel noch einen Verweis auf eine andere Lib verwenden kann.
Sicher wäre das die elegantere Lösung die Daten zu übergeben, aber leider muss ich es dieses mal mit MS-Forms und Acad hin bekommen 

@Carsten
Userform1.TextBox3.Text = (LTrim(Attrib(2).textString))
war genau der Ansatz der meinen grauen Zellen fehlte!

Ich gehe da nun wie folgt heran:
- Selectionset erstellen
- Zähler (i) durchlaufen lassen
- TextBox(i) mit Att(i) befüllen
- Inhalte der TextBoxen in der UserForm ändern
- von TextBox(i) das Att(i) wieder beschreiben
(der Code dazu folgt, sobald er 'fertig' incl. dynamischer UserForm-Erzeugung ist)

Das klappt schon hervorragend.
Ich sitze nun an dem Problem, dass ich mit LostFocus in der UserForm zu kämpfen habe und suche zur Zeit nach einer Möglichkeit, die zuletzt angeklickte TextBox in eine Variable zu übergeben, so dass ich sie bei 'Verlust' durch UserForm1.hide immer wieder ansprechen kann.
Wenn das in meiner Schleife funktioniert, werde ich mich daran setzen dieses Formular 'dynamisch' zu erzeugen...also TextBox(n) = Anzahl der Attribute pro Block im Selectionset generieren und den TextBox.Name automatisch auf einen passenden Wert des Blockattributes zu setzen.

Hat vielleicht noch jemand eine Idee parat, wie man den TextBox.Name bei Fokusverlust automatisch in eine varTextBox schreiben kann, so dass bei erneutem .show der UserForm die letzte Box fokussiert wird?


Grüsse
ML

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 04. Sep. 2006 21:16    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 Lappi 10 Unities + Antwort hilfreich

Hallo,

das hast du wahrscheinlich falsch verstanden mit Excel.
Bei der Lösung ist kein Verweis nötig oder vorhanden.
Es wird nur das DBGrid von VB verwendet. So hast du immer eine dynamische Lösung. Wenn du wie in deinem Beispiel ein Muster in der Attributanzahl hast, brauchst du nur die entsprechnnde Anzahl Spalten als Felder anlegen und fertig.

Probier es mal aus. Über die Ereignisse des Grids kannst du Row und Col abfragen und nach einem erneuten einblenden wieder am die Stelle springen.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 05. Sep. 2006 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 Nur für Lappi 10 Unities + Antwort hilfreich

Hallo Lappi,

meinst du sowas?

Code:
Private Sub TextBox1_Enter()
    txtTextBoxName = TextBox1.Name
End Sub


Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    txtTextBoxName = TextBox4.Name
End Sub


die erste Variante speichert den Namen beim Erhalt der Focus, die zweite beim Verlust.

mfg Didi

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

Lappi
Mitglied
Datenträger :)


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

Beiträge: 56
Registriert: 30.08.2006

Ich hoffe dieses kleine Feld reicht aus um alles hinein zu schrei

erstellt am: 05. Sep. 2006 19:09    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.

Finde ich richtig prima, dass mein Problem bei Euch Anklang findet

@Stelli
Leider ist meine Aufgabenstellung es mit Textfeldern zu lösen.
Davon abgesehen ist Deine Idee wirklich gut und ich werde sie nach Abschluss der zur Zeit gestellten Aufgabe ausprobieren! Ich habe mir diese Aufgabe leider nicht selber gestellt, ansonsten wären die gesamten Daten schon längst woanders hin übergeben, wo ich sie komfortabler bearbeiten könnte 

@Goofy
Ja, so in der Art mache ich es zur Zeit auch schon...ansonsten hätte ich ja 0 Chance den Fokus zurück zu geben.
Problem ist nur:
Angenommen ich habe 100 Textfelder, so müsste ich 100mal

Code:
Private Sub TextBox1_Enter()
txtTextBoxName = TextBox1.Name
End Sub
Private Sub TextBox2_Enter()
txtTextBoxName = TextBox2.Name
End Sub

verwenden.
Ich versuche es innerhalb einer Schleife zu lösen...

Meine TextBox(i) hat auch diesen Namen...also z.B. TextBox17, TextBox18 usw.
Den Namen generiere ich beim Öffnen der UserForm über "TextBox" & [Zählervariable]

...aber leider scheint es irgendwie keine Möglichkeit zu geben beim _Enter oder _Exit sämtlicher sich auf einem Formular befindlichen TextBoxen den TextBox(i).Name zu greifen *seufs*...oder ich komme halt nicht darauf

Grüsse
ML

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

muller75
Mitglied


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

Beiträge: 1
Registriert: 18.12.2003

erstellt am: 06. Sep. 2006 07:25    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 Lappi 10 Unities + Antwort hilfreich

Hallo Lappi,

du kannst mit Controls("Name") auf alle Steuerelemente mit dem Namen zugreifen.

Code:
------------------------------------------------
Private Sub WerteAuslesen()

Dim ctlName as String
Dim ctlInhalt as String

For i = 1 to 100
  ctlName = "TextBox" & Trim(i)
  ctlInhalt = Me.Controls(ctlName).Value
Next i

End Sub
------------------------------------------------

lg, Michael

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 06. Sep. 2006 11:10    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 Lappi 10 Unities + Antwort hilfreich

Hallo,

in VB kannst du mit Control Arrays arbeiten. Da kannt du jedes Corntrol mit Textbox(i).blabla ansprechen. Da hast du dann auch einen Eventhndler für das ganze Controlarray.
IMHO kannst du das mit VBA nicht machen, weil es keine Controlarrays unterstützt.

Auf die Eigenschaften kannst du ja wie muller75 schrieb mit
ctlInhalt = Me.Controls(ctlName).Value zugreifen. Aber mit den Events wird es schwierig.

Wenn du VB6 hast kannt du dir doch ein OCX bauen welches die Textboxen dynamisch einfügt und das Eventhandlicg übernimmt.

Oder doch mit dem Grid ???

Stelli

PS:

Zitat:
Original erstellt von Lappi:
Hallo zusammen..bin der Neue 

Habs gerade noch gesehen. Na dann herzlich willkommen

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

Lappi
Mitglied
Datenträger :)


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

Beiträge: 56
Registriert: 30.08.2006

Ich hoffe dieses kleine Feld reicht aus um alles hinein zu schrei

erstellt am: 06. Sep. 2006 16:58    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

Hmm...wirklich blöde

Ja leider kann man nicht auf Events zugreiffen...einzige Möglichkeit die ich gefunden habe wäre eine Endlosschleife die permanent das aktive Steuerelement ausliest.

Mit
varControl = Active.Control.Name (hoffentlich ohne Tippfehler aus dem Gedächnis gekramt)
habe ich es zumindest schon geschafft den Namen in die Variable zu bekommen...aber das geht leider auch nur bedingt.
Sobald ich die xTextBoxen auf einer Multipage habe, ist das Active.Control immer Page1 

Danke für Eure Gedankenanstösse, sobald ich wieder eine ruhige Minute finde werde ich sie verfolgen und ein wenig weiter testen.

Je mehr ich mich mit dem Problem beschäftige reizt es mich..vielleicht kommt ja eines Tages dabei nen schnuckeliges kleines Tool bei rum mit mehr Comfort als _attedit ... *g*

Grüsse
ML

P.S.: Danke für die Willkommensgrüsse 

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

schrema
Mitglied
Umweltingenieur


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

Beiträge: 12
Registriert: 21.02.2006

erstellt am: 11. Sep. 2006 10: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 Nur für Lappi 10 Unities + Antwort hilfreich

Hallo Lappi,

man kann auch unter VBA auf während der Laufzeit hinzugefügte Steuerelemente zugreifen. Hierzu werden die neuen Steuerelemente in Feld geschrieben, dessen Typ in einem Klassenmodul definiert wurde.

'Code im Klassenmodul "Textfeld_Ereignis"
Public WithEvents textfeld As MSForms.TextBox

Private Sub textfeld_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

'Name des aktuellen Textfeldes bei Tastatureingabe
tb_name = Me.textfeld.Name

End Sub

Private Sub textfeld_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

'Name des aktuellen Textfeldes bei Anklicken mit Maus
tb_name = Me.textfeld.Name

End Sub

'Hinzufügen der Steuerelemente im Code der Userform
Dim tb() As New Textfeld_Ereignis

Sub userform_initialize()
'Array für Textfelder initialisieren

ReDim tb(0)

End Sub

Private Sub UserForm_Activate()
'bei erneuter Aktivierung Fokus auf letztes Textfeld setzen

If tb_name <> "" Then
    Me.Controls(tb_name).SetFocus
End If

End Sub

Private Sub CommandButton1_Click()
'Textfelder hinzufügen

k = UBound(tb)
Set box = Controls.Add("Forms.Textbox.1", "Text_" & k, True)
box.top = k * 30 + 20
Set tb(k).textfeld = box
ReDim Preserve tb(k + 1)
k = k + 1

End Sub

Private Sub CommandButton2_Click()
'Userform verbergen

Me.Hide

End Sub

'Code im Startmodul
Public tb_name 'Name der aktuellen Textbox in globaler Variable speichern

Sub test()

Do Until abbruch = True
    User_test.Show
Loop

Unload User_test

End Sub


Der vorliegende Code ist nur ein Denkanstoß.

MfG
Marco Schreiter

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

Lappi
Mitglied
Datenträger :)


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

Beiträge: 56
Registriert: 30.08.2006

Ich hoffe dieses kleine Feld reicht aus um alles hinein zu schrei

erstellt am: 11. Sep. 2006 17:22    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 Marco.

Zitat:
man kann auch unter VBA auf während der Laufzeit hinzugefügte Steuerelemente zugreifen. Hierzu werden die neuen Steuerelemente in Feld geschrieben, dessen Typ in einem Klassenmodul definiert wurde.
könnte die Lösung sein!
Ich war an der Stelle schon am Verzweifeln, dass ich unter AutoCAD nicht mit Active.Control (wie gewohnt) zugreifen konnte.

Werde ich sobald als möglich mal ausprobieren..ich danke Dir für den Tipp!

Grüsse
ML

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

ollibaer2004
Mitglied
Dipl. Ing. Versorgungstechnik


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

Beiträge: 54
Registriert: 28.06.2004

Athlon 64 4000
Windows Xp
ADT7 + Rocad 7
http://tga4acad.de.vu

erstellt am: 25. Sep. 2006 10: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 Nur für Lappi 10 Unities + Antwort hilfreich


ACEX.zip

 
hi zusammnen,
bin zufällig in eure diskussion geraten, hatte mal ein ähnliche problem,
hab aber mit excel gelöst.
mit meinem angehängten program kann man sich alle blöcke in einer zeichnung mit angabe der enthaltenen attribute anzeigen lassen und nach excel übergeben. dort ändert man diese und schreibt sie anschließend zurück. identifiziert wird der block anhand der übergebenen objekt-id
löscht man in excel die objekt id wird beim zurückschreiben nach einem einfügepunkt gefragt.
ich hoffe es hilft.

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

Lappi
Mitglied
Datenträger :)


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

Beiträge: 56
Registriert: 30.08.2006

Ich hoffe dieses kleine Feld reicht aus um alles hinein zu schrei

erstellt am: 26. Sep. 2006 19:10    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 ollibaer2004.

Ich zitiere mich mal selber: 

Zitat:
Am liebsten täte ich ja die Werte an Excel oder Access/dBase übergeben ...aber das ist aus technischen Gründen dieses mal nicht möglich. Ich muss es irgendwie mit einer tabellarischen Darstellung in Acad hinbekommen :/

Eine recht gut funktionierende Schnittstelle zu Office-Produkten habe ich bereits. Es ging dieses mal um eine Lösung in AutoCAD 'pur'
(an der ich aus Zeitmangel immer noch sitze ... hrmpf ich hasse dynamischen Aufbau einer MS-Forms in meiner Freizeit  )

Danke Dir trotzdem für die Antwort, vielleicht benötigt ja ein anderer Leser Deine angehängte Exceltabelle.

Grüsse
Lappi

------------------
die EDV (weibl.)...ansonsten wäre die Kommunikation mit Computern und deren angeschlossenen Geräte in einer für jederMann verständlichen Sprache...

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

Benny4
Mitglied
Softwareentwickler


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

Beiträge: 178
Registriert: 16.02.2006

AutoCAD 2010
ZW-CAD 2012

erstellt am: 23. Okt. 2006 23:10    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 Lappi 10 Unities + Antwort hilfreich

Hallo,

bin auf deinen Eintrag gestoßen und ich denke du könntet mir helfen:

Ich muss nämlich die Attribute eines blockes auslesen, diese editieren und weider zurückschreiben.

Nur wie kann ich auf die Attribute zugreifen? Und krieg ich auch die anderen Eigenschaften, wie den Einfügepunkt und so?


möchte es so machen, dass man einen Block auswählen kann, und von diesem die besagten Sachen auslesen...

Danke schon im Voraus!

Grüsse Benny

------------------
Grüse Benny

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 24. Okt. 2006 07: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 Nur für Lappi 10 Unities + Antwort hilfreich

Hallo Benny,

Attribute auslesen kannst du über die Methode "GetAttributes" machen.
Zurückschreiben kannst du die Attribute so: Attrib(TagNumber).textString = "Neuer Text".

Gruß, Carsten

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

Benny4
Mitglied
Softwareentwickler


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

Beiträge: 178
Registriert: 16.02.2006

AutoCAD 2010
ZW-CAD 2012

erstellt am: 24. Okt. 2006 21: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 Nur für Lappi 10 Unities + Antwort hilfreich

Hallo Carsten,

danke schon mal für die schnelle Antwort.

Ich hätte da noch ne Frage:

Ich wähle so einen Block aus:

Code:

Dim ogac_Sset As AcadSelectionSet
Dim xType(0) As Integer
Dim xvalue(0) As Variant

    On Error Resume Next
    Set ogac_Sset = ThisDrawing.SelectionSets("MySelset")
    If Err.Number Then
      Set ogac_Sset = ThisDrawing.SelectionSets.Add("MySelset")
    End If

    xType(0) = 0
    xvalue(0) = "Insert"
   
    ogac_Sset.SelectOnScreen xType, xvalue


Ich schaffe es jetzt nur nicht, diese Auswahl einem "AcadBlockReference" - Objekt zuzuweisen, damit ich die Attribute auch bearbeiten kann.

Kannst du mir da vielleicht noch auf die Sprünge helfen?


Besten Dank schon mal

------------------
Grüse Benny

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 25. Okt. 2006 06:59    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 Lappi 10 Unities + Antwort hilfreich

Hallo Benny,

Schau dir doch mal die Beispiel über GetAttributes in der Hilfe an. Dort ist es recht gut beschrieben, wie du an die Attribute rankommst und diese ändern / auslesen kannst.

Gruß, Carsten

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