Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Blockattribute von Hand eingeben

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:  Blockattribute von Hand eingeben (1034 mal gelesen)
otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 21. Dez. 2016 10:50    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

Liebes Forum,

ich habe eine Blockreferenz eingefügt, und wenn die Blockreferenz Attribute hat, dann soll das Fenster aufgehen, in dem der Benutzer die Attribute von Hand eingeben kann.
So, als ob man einen Doppelklick auf die Blockreferenz macht.

Wie muss ich da an dieser Stelle weitermachen?

Code:

...
If BlkRef.HasAttributes = True Then
  BlkRef.??? OpenDialog??
Endif
...


------------------
Grüße aus München
Christian

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 21. Dez. 2016 11:21    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 otm 10 Unities + Antwort hilfreich

Der AutoCAD-Befehl zum bearbeiten-Dialog lautet ATTEDIT

Wenn du jedoch direkt davor die Blockreferenz mit dem Programm eingefügt hast,
dann wäre es ja sinnig(er) die Blockreferenz über den AutoCAD-Befehl
einzufügen.

Denn da wird dann "wie gewohnt" gearbeitet und ATTREQ, ATTDIA, berücksichtigt.
Und ggf. auch wie die Attribute definiert sind (Vorgabewerte etc.)

Ansonsten: Befehl ATTEDIT und das (letzte?) Objekt übergeben (Objektwahl letztes)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 21. Dez. 2016 12: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

Ich muss den Block über ein VBA-Makro einfügen.

Wenn ich mit thisdrawing.sendcommand "eattedit " aufrufe, wie gebe ich ihm dann das letzte Objekt mit?

------------------
Grüße aus München
Christian

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 21. Dez. 2016 12:44    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 otm 10 Unities + Antwort hilfreich

sendcommand bedeutet ja: übergebe die nachfolgenden Parameter/Argumente an die Befehlszeile.
Also ahme die Eingabe per Hand nach.

In AutoCAD gibt es die Objektwahlmethode L bzw. Letztes
(Objektwahlmethoden in Acad, siehe Befehl WAHL in der Hilfe)

Test es in AutoCAD, das hat nichts mit VBA zutun:
Befehl: _MOVE

Objekte wählen: _last
1 gefunden


Ich habe hier die internationale Schreibweise gewählt damit es in jeder Sprachversion läuft,
gleiches sollte man für den Befehl machen: _MOVE anstatt Schieben in meinem Beispiel.

Du mußt dann noch dafür sorgen dass der Einfügelayer und alle Attributlayer entsperrt sind,
sonst akzeptiert _.EATTEDIT die Blockreferenz nicht als gültiges Objekt, aber auch das hat nichts mit VBA zutun,
so ist halt die Funktionsweise von dem AutoCAD-Befehl und den AutoCAD-Layern.


Für die Befehlszeile zum testen:
kopiere eine Blockreferenz mit Attributen (damit diese definitiv das LETZTE Objekt darstellt) und dann copy&paste folgende Zeile in die Befehlszeile:

Code:
; copypaste ab nächster Zeile
_VBASTMT
ThisDrawing.SendCommand "_.EATTEDIT" & vbCr & "_last" & vbCr

; bis vorherige Leerzeile



------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 21. Dez. 2016 12:57    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

Super! Funktioniert hervorragend.
Vielen herzlichen Dank.

------------------
Grüße aus München
Christian

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 21. Dez. 2016 16: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 otm 10 Unities + Antwort hilfreich

Hallo Christian,
Als Alternative zum eattedit wäre auch folgende Vorgehensweise möglich:

Du hast ein Formular mit einem Listenfeld mit zwei Spalten und eine Textbox
Wenn der gesetzte Block Attribute hat holst Du Dir die Feldnamen (Tagstring) mittels getattributes in die Listbox
und lässt diese anzeigen
Durch tippen auf eine Zeile wird der Wert in der Textbox angezeigt und kann dort bearbeitet werden

Beim Schließen des Formulares übergibst Du die Werte aus der Listbox wieder dem Block (TextString)

Ist etwas aufwändiger, falls Du Code brauchst gib Bescheid

Grüße
Klaus 

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

otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 27. Jan. 2017 21:33    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 Klaus,

danke für Dein Mitdenken, ist aber nicht das was ich gesucht habe.
Mit der Lösung von cadffm geht es wunderbar.

------------------
Grüße aus München
Christian

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