Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Attribute aus dyn. Block auslesen

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:  Attribute aus dyn. Block auslesen (2359 / mal gelesen)
KathaB
Mitglied
Techn. Zeichner


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

Beiträge: 19
Registriert: 18.11.2016

erstellt am: 18. Nov. 2016 14:39    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 bin hier neu im Forum und auch ein Neuling in der LISP Programmierung.
Meine Frage an Euch:
Ich möchte aus einem Layout die Attribute eines dynamischen Blockes und Attribute eines "normalen" Blockes auslesen.

Kann mir jemand Unterstützung wie ich das anpacken kann.
Mit einer treffenden Antwort wäre ich übers Wochenende beschäftigt :-)

Danke schon im Voraus
Kathi

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 18. Nov. 2016 15: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 Nur für KathaB 10 Unities + Antwort hilfreich

Hier hasde was zum üben...
Code:
(if (and (setq vlaObj(vlax-ename->vla-object(car(entsel))))
        (vlax-property-available-p vlaObj 'hasattributes)
  (= (vla-get-hasattributes vlaObj) :vlax-true)
        )
      (setq lstAtts (vlax-safearray->list
                      (vlax-variant-value (vla-Getattributes vlaObj))
                      ) ;_ end of vlax-safearray->list
            lstAtts (mapcar
                      'list
                                        ;lstAtts
                      (mapcar 'vla-get-TagString lstAtts)
                      (mapcar 'vla-get-TextString lstAtts)
                      ) ;_ end of mapcar
            ) ;_ end of setq
      )

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

KathaB
Mitglied
Techn. Zeichner


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

Beiträge: 19
Registriert: 18.11.2016

erstellt am: 18. Nov. 2016 15:55    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

Danke für die so schnelle Antwort - da habe ich wirklich was über das Wochenende tun :-)
Ich muss die Befehlsfolge Schritt für Schritt testen.

Mein dynamischer Block hat immer die Feste Bezeichnung
"Verbindungselemente"
Mein Standardblock hat den Namen "Planrahmen_A3"

Kann ich diese in Deinem ProgrammCode vor/mitgeben um den Block nicht händisch
zu ermitteln.

Grüßle
Kathi

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

cadffm
Moderator
良い精神




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

Alles

erstellt am: 18. Nov. 2016 16: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 Nur für KathaB 10 Unities + Antwort hilfreich

Wenn man nicht nur copy&pasten, sondern verstehen will, werden viele Wochenenden nötig, nicht nur eins.
Die Arbeit rund um Blöcke benötigt schon viel Wissen und Lispfunktionen,
das ist eigentlich kein gutes Einstiegsthema, Linie oder Kreis wäre da schon was anderes.

1. Blöcke haben keine Attribute, nur Blockreferenzen
2. "Mein dynamischer Block hat immer die Feste Bezeichnung "Verbindungselemente""
  Das stimmt zwar, aber sobalnd man die Blockreferenz dynamisch verändert,
  erstellt Acad einen neuen Block und dieser hat dann beispielsweise den Namen "*U123"
  >sogenannte anonyme Blöcke, die Namen können sich mit jedem Zeichnungsstart ändern<
 
Name des Block per Hand ermitteln: (alert(cdr(assoc 2 (entget(car(entsel))))))
Klicke einmal auf eine "frische" Blockreferenz und danach auf eine dynamisch geänderte..

Hier ein netter Beitrag der auch auf dyn.Blöcke in Acad eingeht.
Da Blöcke nicht dynamisch sein können, hat Adesk da tief in die Trickkiste gegriffen.
Beitrag FAQ zu Blöcken: http://ww3.cad.de/foren/ubb/Forum54/HTML/013223.shtml

Für "Attribute auslesen" ist das ganze zum Glück nicht so relevant, es genügt zu wissen
wie man ermittelt welche Blöcke zu dem gewünschten "mein Block" dazu gehören.
Hier ein Beispiel: http://forum.cad.de/foren/ubb/Forum145/HTML/003343.shtml

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

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

KathaB
Mitglied
Techn. Zeichner


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

Beiträge: 19
Registriert: 18.11.2016

erstellt am: 23. Nov. 2016 13:55    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,

vielen Dank für Eure Hilfe.
Die Entwicklung hat mich zwar viele Stunden gekostet aber ich stellte das Programm so zusammen wie ich es benötige - wow.
Ohne Eure Tipps hätte ich es allerdings nicht geschafft.
Den einen oder anderen Teil Eurer vorgeschlagenen Programmcodes habe ich noch nicht richtig verstanden - da muss ich noch ein paar Stunden dranhängen :-)

Meine heutige Frage:
Kann Lisp auch die Werte einer "normalen" Tabelle lesen ?

Gruß
Kathi

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

cadffm
Moderator
良い精神




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

Alles

erstellt am: 23. Nov. 2016 14: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 KathaB 10 Unities + Antwort hilfreich

Es gibt, die Zeichnungsdatenbank betreffend, kaum etwas was nicht geht.

Aber was ist eine normale Tabelle?
Acadobjekt Tabelle? Geht.
Exceldatei? Geht.

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

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

KathaB
Mitglied
Techn. Zeichner


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

Beiträge: 19
Registriert: 18.11.2016

erstellt am: 23. Nov. 2016 14:27    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 nochmals,

ja ich hatte bis soeben an die ACADobject Tabelle gedacht.
Aber mit dem EXCEL Hinweis werde ich mir überlegen ob das für mich die bessere Lösung ist.

Werde mal nach Beispielen "googeln".

Gruß aus dem Süden
Kathi

Gruß
Kathi

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

KathaB
Mitglied
Techn. Zeichner


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

Beiträge: 19
Registriert: 18.11.2016

erstellt am: 25. Nov. 2016 14:48    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,

das Wochenende ist da und ich versuch mich weiter in LISP.

In meinem Programm lese ich wie folgt die Attribute von Blöcken aus.
Die Blöcke kommen beliebig oft in der gesamten Zeichnung vor.
Wie grenze ich das Ausschreiben der Attribute nur auf das aktuelle Layout ein.

(setq ss
  (ssget "a"
(list
  (cons 0 "INSERT") (cons 2 BLNAME ) (cons 66 1)
)
  )
  )

Vielleicht hat jemand schon das gleiche Problem gelöst.

Ganz liebe Grüße
Kathi

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

cadffm
Moderator
良い精神




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

Alles

erstellt am: 25. Nov. 2016 15: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 Nur für KathaB 10 Unities + Antwort hilfreich

[QUOTE]Original erstellt von KathaB:
Vielleicht hat jemand schon das gleiche Problem gelöst.

Du wirst in deinem Lisp-Leben vermutlich nichts machen, wozu es nicht schon bereits unzählige Lösungen gibt 


"Wie grenze ich das Ausschreiben der Attribute nur auf das aktuelle Layout ein."
Du meinst das Filtern von Objekte auch den aktuellen Bereich.

a) Schau dir den Aufbau bestehender Objekte an: (entget(car(entsel)))
b) Schau dir die DXF-Reference von AutoDesk an

Du wirst den Gruppencode 410 finden, zusammen mit der Systemvariable CTAB (Gibt den Namen des aktuellen Layouts in der Zeichnung zurück.)
wirst du zum Ziel kommen.

(ssget "_X" (list ... (cons 410 (getvar "CTAB"))))  schönes WE

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

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

KathaB
Mitglied
Techn. Zeichner


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

Beiträge: 19
Registriert: 18.11.2016

erstellt am: 06. Dez. 2016 14: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

Hallo Lisp Programmierer,

dank Eurer Hilfe konnte ich alle Attribute welche ich benötige aus den Blöcken auslesen.
Gerade versuche ich mich daran die Texte der Blockattribute zu ändern und zurückzuschreiben.

In der Praxis möchte ich meinen Block anklicken und die darin enthaltenen Attributtexte ändern.

Nochmals ein letzter Tipp von Euch wäre klasse, dann bin ich mit meiner Aufgabe fertig.

Viele Grüße
Kathi

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



Technischer Redakteur (m/w/d)

KNDS Deutschland entwickelt, fertigt und betreut als Systemhaus ein breit gestreutes Produktportfolio. Dazu zählen Kampfpanzer, hochgeschützte Radfahrzeuge, Artilleriesysteme, Militärbrücken, Kundenservice sowie Ausbildungslösungen. Als Teil der KNDS-Gruppe stehen wir für den Beginn der Konsolidierung der Industrie für militärische Landsysteme in Europa. Dabei bieten wir hochinteressante, komplexe und herausfordernde Tätigkeiten in einem kollegialen Umfeld....

Anzeige ansehenTechnische Dokumentation
cadffm
Moderator
良い精神




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

Alles

erstellt am: 06. Dez. 2016 15: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 KathaB 10 Unities + Antwort hilfreich

VLisp
(vla-put-Textstring <VLA-Objekt_des_Attributes> "neuerText")

oder

(Auto-)LISP
EntityList (entget(car(nentsel)))
(entmod (subst(cons 1 "neuerText")(assoc 1 <EntityList> )<EntityList> ))

Umfassender wäre es wohl kein Tip mehr  

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

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