Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Zugriff auf Attribut-Werte im Block

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:  Zugriff auf Attribut-Werte im Block (2158 mal gelesen)
Cad22goetz
Mitglied


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

Beiträge: 5
Registriert: 26.07.2013

Win, Bricscad V13

erstellt am: 26. Jul. 2013 21:01    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 die Runde,

habe folgende Herausforderung:

in den Zeichnungsdateien ist auf 12 Layouts ein Block "Schriftfeld" positioniert, der mit Attributen zur Projektbeschreibung versehen ist. 12 mal der gleiche Block für verschiedene Blattgössen bzw. Druckerkonfigurationen.
Bearbeiten der Attribute mit refbearb (_refedit) funktioniert gut, nach schliessen mit _refclose haben alle Schriftfelder die gleichen Eintragsdaten zum Projekt (Messe, Halle, Standnummer etc.)
Will nun in eine .dcl Maske die aktuellen Einträge des Schriftfeldblocks einlesen, dem User die Möglichkeit geben in der .dcl Maske Einträge zu modifizieren und diese Änderungen wieder in die Attribute des Schriftfelds einlesen.... allein, keine Ahnung wie ich im setq meine Variabeln "befüllen" kann und wie diese in die Attribute wieder auslesen?
Jemand ne Idee?

GG

 

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 29. Jul. 2013 09:13    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 Cad22goetz 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Cad22goetz:
... keine Ahnung wie ich im setq meine Variabeln "befüllen" kann und wie diese in die Attribute wieder auslesen?   

Wie weit bist du denn gekommen? Wie sieht dein Code im Moment aus?
Wo hakt es konkret?

Grüße
Holger

------------------
Holger Brischke
Freier C#.NET-Workshop Ende Oktober geplant. Bei Interesse bitte melden!
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 29. Jul. 2013 09: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 Cad22goetz 10 Unities + Antwort hilfreich

Hi,

vielleicht habe ich es nicht richtig verstanden, aber REFEDIT zur Attributbearbeitung?

Sei's drum, wie wär's mit den Bordmitteln FIELDS (Schriftfelder). Die können u.a. Inhalte von anderen Objekten anzeigen. In deinem Fall würde ich vorschlagen, die benutzspezifischen Zeichnungseigenschaften mit den gewünschten Daten zu befüllen und in jedem Layout auszulesen.
Für BricsCAD ist es hier beschrieben:
http://blog.bricsys.com/2012/03/creating-drawing-template-with-fields.html

Gruß
CADchup

------------------
CADmaro.de

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 29. Jul. 2013 10:02    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 Cad22goetz 10 Unities + Antwort hilfreich

Für die Erarbeitung einer Lisp-Lösung bietet sich dieser Bsp-Code an .....

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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: 29. Jul. 2013 10:04    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 Cad22goetz 10 Unities + Antwort hilfreich

Vielleicht nutzt Cad22goetz für diese Angaben konstante Attributdefinitionen,
dann würde die Beschreibung nachvollziehbar werden.

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

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

Cad22goetz
Mitglied


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

Beiträge: 5
Registriert: 26.07.2013

Win, Bricscad V13

erstellt am: 29. Jul. 2013 22:14    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 euch für die hints.   @CADmium: ist mir noch ein wenig zu komplex. suche noch nach einer simplen eierlegenden Wollmilchsau, dein Vorschlag wäre aber durchaus ein Plan B @cadffm, richtig, ich vergass zu erwähnen, es geht tatsächlich um konstante Attribute (sonst würde das mit dem "spiegeln" auf 12 Layouts nicht klappen) @Brischke: Drechsele mit (vla-getconstantattributes) rum, bin mir aber da in der Syntax nicht sicher. Experimentiere noch und bin nach wie vor für jeden Hinweis dankbar. GG

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

Cad22goetz
Mitglied


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

Beiträge: 5
Registriert: 26.07.2013

Win, Bricscad V13

erstellt am: 31. Jul. 2013 22: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

So, Taste mich also weiter durch das Thema konstante Attribute.
Backe kleine Brötchen und versuche über ein kleines Test-Script an die erwünschten Werte zu kommen.

(defun C:Test ()

(vl-load-com)
(setq
SFname (ssget"X"'((2 . "Schriftfeld_BS_MM")))
SFename (ssname SFname 0)
vlaBlkRefObj (vlax-ename->vla-object SFename)
vlaAttObjs (vla-GetConstantAttributes vlaBlkRefObj)
vlaArray (vlax-variant-value vlaAttObjs)
vlaAttObj (vlax-safearray-get-element vlaArray 1)
Attename (vlax-vla-object->ename vlaAttObj)
;Attname (ssget "X"'((-2 . Attename)))
) ; end setq

(princ Attename)
)

wie zu sehen ist  hab ich die letze Zeile im setq auf ; gesetzt, da sie mir nur die Meldung
; error : bad argument type <(-2 . ATTENAME)> ; expected ENTITYNAME at [DXF/XED DATA]
liefert.
das finde ich erstaunlich. Da die Abfrage über printc für die Variable Attename die Antwort
<Entity name: 01f20860><Entity name: 01f20860>
liefert.
Das heisst in meiner Welt, dass ich doch an (ssget"X"'((-2 . Attename))) eine Entity name übergebe, oder???
Schön wäre jetzt der Zugriff auf die <Entity name: 01f20860> weil ich dort meine Information (konstantes Attribut) vermute zu lokalisieren.
was ist da nur falsch???
GG

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 01. Aug. 2013 06: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 Nur für Cad22goetz 10 Unities + Antwort hilfreich

Hallo Cad22goetz,

ich habe den Eindruck, dass du noch nicht so ganz weist, wie du mit den Funktionen und DXF-Gruppencodes umgehen sollst.
Ich habe deinen Code mal geändert, vielleicht hilft dir das?

Code:

(vl-load-com)
(defun C:Test ( / SF_Name auswahlsatz SF_Ename SF_vlEname
      SF_constAttsArray SF_constAttsList SF_constAttsEnameList SF_constAttTagsList SF_constAttValuesList)
  (setq SF_Name "Schriftfeld_BS_MM"
auswahlsatz (ssget"X" (list (cons 2 SF_Name)))
SF_Ename (ssname auswahlsatz 0)
SF_vlEname (vlax-ename->vla-object SF_Ename)
SF_constAttsArray (vla-GetConstantAttributes SF_vlEname)
SF_constAttsList (vlax-safearray->list(vlax-variant-value SF_constAttsArray))
SF_constAttsEnameList (mapcar 'vlax-vla-object->ename SF_constAttsList)
SF_constAttTagsList (mapcar '(lambda (E)
      (cdr(assoc 2 (entget E)))
      )
    SF_constAttsEnameList
    )
SF_constAttValuesList (mapcar '(lambda (E / ed)
  (setq ed (entget E))
  (cons (cdr(assoc 2 ed))(cdr(assoc 1 ed)))
      )
    SF_constAttsEnameList
    )
) ; end setq
  (princ SF_constAttTagsList)
  (terpri)
  (princ SF_constAttValuesList)
  (princ)
  )

Grüße!
Holger

------------------
Holger Brischke
Freier C#.NET-Workshop Ende Oktober geplant. Bei Interesse bitte melden!
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

Cad22goetz
Mitglied


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

Beiträge: 5
Registriert: 26.07.2013

Win, Bricscad V13

erstellt am: 06. Aug. 2013 22:24    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 Brischke,

DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE

Es mag dich vieleicht nicht überraschen  aber dein Code funzt.
Könnte dich hier mit seitenlangen Freudenbekundungen überschütten, für's Forum vermutlich aber eher langweilig.
Zit:  "vielleicht hilft dir das?"
es hilft nicht nur, es ist die Lösung des ersten Teils meines Problems

DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE

Habe mithilfe deines Codes die Anzeige der Schriftfeldeinträge im .dcl erstellt, alles klappt prima

nur:

Jetzt geht (wie auf der Kirmes) die nächste Fahrt rückwärts.

muss die im  .dcl geänderten Einträge über get_tile ins Schriftfeld "zurückfüttern"

dies würde die Sache rund machen.

erneut besten Dank Holger, Gruss, Götz

PS. Klar, bin ich hier nicht der ***** im Hochelbisch der Lisp-Programierung, Elemente wie Lambda-Ausdrücke in deinem Code muss ich erstmal nachvolziehen
aber so ist das Spiel des Lernens und ich kreuze den Tag rot an an dem ich mich in diesem Forum angemeldet habe.

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

Cad22goetz
Mitglied


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

Beiträge: 5
Registriert: 26.07.2013

Win, Bricscad V13

erstellt am: 11. Aug. 2013 20: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

Jetzt ist die Sache rund und der Threat kann abgeschlossen werden.

Habe das Safearray SF_constAttsArray aus Holgers Code via

SF_constAtts_SA (vlax-variant-value SF_constAttsArray) nochmal fixiert und die einzelnen konstanten Attribute z. Bsp. der Variablen

SF_vlaAttObj_Stand (vlax-safearray-get-element SF_constAtts_SA 0) zugeführt.

Im action_tile der dcl Abfrage habe ich dann via

"(vla-put-TextString SF_vlaAttObj_Stand Standno)"

den benutzereditierten Wert "Standno" eingelesen und mit

  "(vla-Update SF_vlEname)"
  "(command \"regen\" )"

den Schriftfeldeintrag geupdated.

Ein Traum.

Danke für die Unterstützung.

GG


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