Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Anzahl der Attribute einer Zeichnung

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:  Anzahl der Attribute einer Zeichnung (785 mal gelesen)
mkl-cad
Mitglied
Technischer Zeichner


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

Beiträge: 378
Registriert: 23.07.2003

ACAD 2002
Express Tools 1-9
Architektural Desktop
Windows XP
Server Windows 2003
3 GHz Rechner
1 GB RAM
80 GB Festplatte
ATI FireGL V3100
2 17" Flachbildschirme

erstellt am: 03. Nov. 2003 11: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 Programmierer,

ich hab schon wier so ´ne blöde Frage: Ist es mit Lisp möglich festzustellen wieviele Attribute eine Zeichnung hat die momentan nicht geladen ist.
Brauche das um einen Block einzufügen dessen Atributsanzahl von den Usern geändert werden kann und der direkt nach dem Einfügen nicht über das Dialogfenster "Attribute bearbeiten" geändert werden brauch.

Danke

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: 03. Nov. 2003 12:03    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 mkl-cad 10 Unities + Antwort hilfreich

Hallo mkl-cad,

du möchtest auf eine Zeichnung zugreifen die nicht geöffnet ist - richtig?

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

marvin101010
Mitglied
ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)


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

Beiträge: 562
Registriert: 22.01.2003

Pentium 4
Windows XP
Autocad 2002
Autocad 2002LT + Extender
ADT 3.3
ArchiCAD

erstellt am: 03. Nov. 2003 12: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 Nur für mkl-cad 10 Unities + Antwort hilfreich

also den zweiten teil erledigt auf jeden fall die sysvar "attdia"

------------------
.......good vibrations make the world go round 

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

mkl-cad
Mitglied
Technischer Zeichner


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

Beiträge: 378
Registriert: 23.07.2003

ACAD 2002
Express Tools 1-9
Architektural Desktop
Windows XP
Server Windows 2003
3 GHz Rechner
1 GB RAM
80 GB Festplatte
ATI FireGL V3100
2 17" Flachbildschirme

erstellt am: 03. Nov. 2003 13: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

Zitat:
Original erstellt von Brischke:
Hallo mkl-cad,

du möchtest auf eine Zeichnung zugreifen die nicht geöffnet ist - richtig?


Ja fast. Ich möchte die Attributsanzahl von einem Block wisesn den ich gerade einfüge. Mit Attdia kann ich das Dialogfenster wegschalten muß aber dann mit Lisp die Antworten auf die Atributsabfragen geben. Komme aber durcheinander wenn ich nicht weiß wieviele Atribute der Block hat.

Martin

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: 03. Nov. 2003 13:37    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 mkl-cad 10 Unities + Antwort hilfreich

Hallo mkl-cad,

mit ATTMODE, ATTDIA, ATTREQ steuerst du, ob und wie die Attribute abgefragt werden.
Ist der Block erst einmal drin, dann kannst du mit (entlast) auf diesen zugreifen und dann mit einer while-Schleife die Attribute raussuchen.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Nov. 2003 13: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 Nur für mkl-cad 10 Unities + Antwort hilfreich

hier 2 kleine lisp programme
mit dem einen kannst du attribute per lisp setzten
(WriteAttribute (entlast) "Myattribut" "MyNewValue")
das 2. liest dir alle attributte eines eingefügten blockes als assoc-liste aus
(GetAllAttributes (entlast)) ergibt (("Attname1" . "AttValue1")("AttName2" . "AttValue2") ...)
also ATTREQ auf 0 setzen, den block per lisp eingügen, und mit
(sslenght (GetAllAttributes (entlast))) kriegst du rasu wieviele attribute der block hat


;
; schreibt in einen Block ein Attribut
;
(defun WriteAttribut(ename tagname textstring / ret )
  (setq ret nil)
  (setq br (vlax-ename->vla-object ename) )
  (if (and
        (= (vla-get-hasattributes br) :vlax-true)
        (safearray-value
          (setq atts
                (vlax-variant-value
                  (setq a0 (vla-getattributes br))
                )
          )
        )
      )
    (foreach tag (setq a1 (vlax-safearray->list atts))
      (if (= (strcase tagname) (strcase (vla-get-tagstring tag)))
        (progn (vla-put-TextString tag textstring)(setq ret t))
      )
    )
    (vla-update br)
  )
  ret
)
;
; gibt alle Attribute eines Blockes als Assoc liste zurück
;
(defun GetAllAttributes (ename /  i atts daten)
        (setq i (vlax-ename->vla-object ename))
        (if (and
              (= (vla-get-hasattributes i) :vlax-true)
              (safearray-value
                (setq atts
                      (vlax-variant-value
                        (vla-getattributes i)
                      )
                )
              )
            )   
            (foreach tag (vlax-safearray->list atts)
              (setq daten (cons (cons (vla-get-tagstring tag) (vla-get-TextString tag) ) daten))
            )
        )

  daten
)

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Nov. 2003 13: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 Nur für mkl-cad 10 Unities + Antwort hilfreich

tschuldige natürlich nicht sslength sondern nur length

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

mkl-cad
Mitglied
Technischer Zeichner


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

Beiträge: 378
Registriert: 23.07.2003

ACAD 2002
Express Tools 1-9
Architektural Desktop
Windows XP
Server Windows 2003
3 GHz Rechner
1 GB RAM
80 GB Festplatte
ATI FireGL V3100
2 17" Flachbildschirme

erstellt am: 03. Nov. 2003 14:36    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

Boh. Mehr als ich erwartet habe. Danke

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 06. Nov. 2003 08: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 Nur für mkl-cad 10 Unities + Antwort hilfreich

Hallo

Ich hab da auch noch was:

;liefert für den übergebenen Blocknamen eine Liste der Attributsanfragen
;13.Zeile: (cdr (assoc 2 atrdeflist)) würde die Attributsbezeichnung liefern

(defun attriblist (#blkname / #elist #ename #atrdeflist #art #atrname #attlist)
  (setq #attlist nil)
  (setq #elist (tblsearch "BLOCK" #blkname))
  (setq #ename (cdr (assoc -2 #elist)))             
  (while #ename
    (setq #atrdeflist (entget #ename))            ;datenliste
    (setq #art (cdr (assoc 0 #atrdeflist)))         
    (if (= #art "ATTDEF")
      (progn
        (setq #atrname (cdr (assoc 3 #atrdeflist)))        ; attributanfrage
        (setq #attlist (cons #atrname #attlist))
      )
    )
    (if (setq #ename (entnext #ename))        ; weitere?
      (setq #atrdeflist (entget #ename))       
    )
  )
  (setq #attlist (reverse #attlist))
)
;----------------------------------------
;zusammen mit der obigen Funktion (attriblist) fügt diese Funktion
;Blöcke ein. Die Funkt. (attriblist) ermittelt die Anzahl der Attribute,
;sodass mit (insauto) Blöcke mit beliebig viele Attributen eingefügt werden können

(defun insauto (#blkname #einfpkt #skal #richt / #attlist #attwert)
  (setq attfrage (car (setq #attlist (attriblist #blkname))))  ;Funkt. (attriblist) siehe oben
; ev. Objfang setzen
  (command "_-INSERT" #blkname #einfpkt #skal "" #richt)
; ev. Objfang rücksetzen
  (while #attlist
    (if (/= attfrage "")
      (progn
        (setq #attwert (getstring (strcat "\nBitte " attfrage " eingeben: ")))
        (command #attwert)
      )
    )
    (setq attfrage (car (setq #attlist (cdr #attlist))))
  )
)

------------------
Gruß, Ernst

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

Atir
Mitglied
Technischer Zeichner

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

Beiträge: 3
Registriert: 07.12.2004

erstellt am: 10. Dez. 2004 12:45    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 mkl-cad 10 Unities + Antwort hilfreich

Hi Geos,

ich bin gerade am Anfang von Lsp.

Was Du da geschrieben hast würde ich sehr gern verwenden!
was muß ich dazu noch editieren.
Muß ich den Blocknamen angeben?
oder eventuell andere Sachen?

Danke im voraus


Zitat:
Original erstellt von Geos:
Hallo

Ich hab da auch noch was:

;liefert für den übergebenen Blocknamen eine Liste der Attributsanfragen
;13.Zeile: (cdr (assoc 2 atrdeflist)) würde die Attributsbezeichnung liefern

(defun attriblist (#blkname / #elist #ename #atrdeflist #art #atrname #attlist)
  (setq #attlist nil)
  (setq #elist (tblsearch "BLOCK" #blkname))
  (setq #ename (cdr (assoc -2 #elist)))              
  (while #ename
    (setq #atrdeflist (entget #ename))            ;datenliste
    (setq #art (cdr (assoc 0 #atrdeflist)))          
    (if (= #art "ATTDEF")
      (progn
        (setq #atrname (cdr (assoc 3 #atrdeflist)))         ; attributanfrage
        (setq #attlist (cons #atrname #attlist))
      )
    )
    (if (setq #ename (entnext #ename))        ; weitere?
      (setq #atrdeflist (entget #ename))       
    )
  )
  (setq #attlist (reverse #attlist))
)
;


------------------
Atir

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: 10. Dez. 2004 13: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 mkl-cad 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Atir:
Hi Geos,

ich bin gerade am Anfang von Lsp.

Was Du da geschrieben hast würde ich sehr gern verwenden!
was muß ich dazu noch editieren.
Muß ich den Blocknamen angeben?
oder eventuell andere Sachen?

Danke im voraus



Hallo Atir,

Willkommen!
Schau dir mal auf der Autodesk-Seite den Link an. Dort habe ich eine Serie zur Einführung in die AutoLISP-Programmierung veröffentlicht.
Es ist auch erläutert, wie die Übergabe von Parametern, die Unterschiede der Funktionsdefinition usw. funktionieren.

Bei Fragen ...

Grüße Holger
PS: Falls der Link nicht geht, dann www.autodesk.de
Produkte->AutoCAD->Training->Einstieg in AutoLISP I-V

------------------
Holger Brischke
(defun - Lisp over night!                          Autodesk User Group Central Europe
AutoLISP-Programmierung für AutoCAD              AUGCE Manager Deutschland
Da weiß man, wann man's hat!
                     

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 13. Dez. 2004 08:32    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 mkl-cad 10 Unities + Antwort hilfreich

Servus

Falls Dir die Antwort von Holger wider Erwarten noch nicht weitergeholfen hat -
Du mußt der Funktion den Blocknamen übergeben, zB.
      (attriblist blockkmaxi)

Und dann gebs da auch noch http://www.tutorial.autolisp.info/ http://www.autolisp.mapcar.net/ http://www.autolisp-tutorial.mapcar.net/

------------------
Gruß, Ernst

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