Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Attributinformationen austauschen

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:  Attributinformationen austauschen (1387 mal gelesen)
dakneifer
Mitglied
Techn. Zeichner (CAD-Spezialist)


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

Beiträge: 31
Registriert: 20.11.2003

Windows XP Pro + AutoCAD 2004 (zu Hause)
Windows XP Home + AutoCAD 2006 (Firma)
ExpressMenü deu.

erstellt am: 13. Jan. 2004 17: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

Hallo Leute,

folgendes Problem. In unserem Stempel sind Ansprechpartner mit Fax und Telefonnummer angegeben.
Jetzt habe ich in der Vorlage in die Attribute reingeschrieben "Ansprechp_Kunde, Telefon_Kunde, Fax_Kunde" normalerweise kann man ja über suchen ersetzen dieses sehr einfach ausfüllen.
Jetzt möchte ich das ganze aber über Autolisp machen wo ich feste Namen und Telefon bzw Faxnummern vergebe.
Also auf Icon "Herr Mustermann" ---- zack steht da wo ich die Lückenfüller eingetragen habe der Name von Herrn Mustermann mit Telefon- und Faxnummer !!

Jetzt weiß ich nur nicht wie ich das machen soll, wer kann mir denn da helfen ????

MFG

dakneifer

------------------
dakneifer

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: 13. Jan. 2004 18: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 dakneifer 10 Unities + Antwort hilfreich

also...

erstmal müsste man wissen ob es sich um attribute oder um
attributsdefinitionen handelt.
soll heissen...sind sie in einem block eingebunden oder nicht.
ich geh mal davon aus, dass ja! sonst macht das ja nicht so viel sinn.
dann:
habt ihr so wenig kunden, dass man für jeden ein icon anlegen kann?
was ist bei sich ändernden kundendaten...so wie du deinen wunsch beschreibst, scheint mir das eine sehr starre sache zu sein.
wenn du allerdings wirklich nichts weiter willst als einen button für  jeden kunden mit festen daten...das ist nicht wirklich schwer.
weiss halt nicht, wie dein lisp-stand ist

------------------
...so long and thanx for all the fish!

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

dakneifer
Mitglied
Techn. Zeichner (CAD-Spezialist)


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

Beiträge: 31
Registriert: 20.11.2003

erstellt am: 14. Jan. 2004 08: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

Sorry,

klar es sind natürlich Attribute in einem Block eingebunden. Was das starre betrifft. Wir haben 5-6 Firmen für die wir Zeichnen und bei jeder Firma gibt es ca. 2-3 Ansprechpartner. Nur wenn ich jetzt jedesmal unsere Adressdatenbank aufmachen muß und die Daten in den Stempel einfügen muß, ist das schon Zeitaufwand. Und dann schleichen sich auch noch Tippfehler ein etc.

Meine Kenntnisse in Autolisp sind leider sehr beschränkt, deshalb wende ich mich hier an das Forum!

Vieleicht hat ja jemand so was in der Schublade liegen, warum das Rad zweimal erfinden !!!

MFG

dakneifer

------------------
dakneifer

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: 14. Jan. 2004 08:56    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 dakneifer 10 Unities + Antwort hilfreich

Hallo dakneifer,

was ist dass denn für eine Datenbank? Vielleicht sollte man, um es richtig zu machen, die Datenbank zur Programmlaufzeit abfragen und  dann in einem Dialogfenster die möglichen Firmen und Ansprechpartner auswählen können. Ich glaube nicht, dass du mit einer Lösung auf dauer zufrieden sein wirst, die im Programm festgeschriebene Daten enthält. Ich denke da an Änderungen der Daten, die erfahrngsgemäß öfter vorkommen. Wie oft, das merkt man ja meist erst in solchen Situationen. Vorteil wäre auch, dass man die Daten bei jedem Start einer Zeichnung mit denen der Datenbank vergleichen und ggf. korrigieren könnte.
Ist halt nur so eine Idee - vielleicht denke ich auch schon wieder viel zu weit.


Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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: 14. Jan. 2004 09:00    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 dakneifer 10 Unities + Antwort hilfreich

genau...

nur so macht es wirklich sinn, wenn man schon anfängt was zu hacken.

------------------
...so long and thanx for all the fish!

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 14. Jan. 2004 21: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 dakneifer 10 Unities + Antwort hilfreich

Hallo dakneifer!

folgendes könnte zumindest ein Anfang für einen allerdings ziemlich "hartverdrahteten" Attrib-info-tausch sein (halt nicht dynamisch mit datenbankzugriff wie von Holger vorgeschlagen). Der entscheidende Punkt fehlt allerdings noch, da komme ich nicht so recht weiter (näheres siehe unten).
Also los gehts:

(setq sfeld (entget (ssname (ssget) 0))) ; block "schriftfeld" auswählen
(setq sf_block_name (cdr (assoc 2 sfeld)))
(setq sf_block_def (tblsearch "BLOCK" sf_block_name)) ; blockdef holen
(setq sf_block_elem (cdr (assoc -2 sf_block_def)))
(while sf_block_elem  ; die einzelnen elemente des block bearbeiten
  (setq sf_block_objekt (entget sf_block_elem))
  (if (= (cdr (assoc 0 sf_block_objekt)) "ATTDEF")  ; jetzt haben wir ein Attribut
      (if (= (cdr (assoc 2 sf_block_objekt)) "Ansprech_kunde") ; oder wie auch immer die Kennung des Attrib. ist
        ; so weit so gut
        ;  aber wo steckt jetzt der aktuelle Wert ??? 
        ; den könnte man jetzt setzen z. b. mit
        ; (setq sf_block_objekt(subst(cons GC_akt_Wert "Name des Anpsrechpartners")(assoc GC_akt_Wert sf_block_objekt)sf_block_objekt))
        ; da höhrt es aber bei mir auf, vielleicht kann ja jemand anders weiter helfen??
        ;
      ) ; end if
      ; diese if schleife für die anderen attribute (Tel., Fax) wiederholen
  ) ;end if attribut
  (entmod sf_block_objekt)
  (setq sf_block_elem (entnext sf_block_elem))
) ; end while elemente

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: 14. Jan. 2004 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 Nur für dakneifer 10 Unities + Antwort hilfreich

@spider_dd
Du hast da einen falschen Gedankenansatz. Du gehst direkt in die Blockdefinition und die ATTDEF's. Das ist vollkommen unnötig, da ja nur die Attributwerte geändert werden müssen.
Du hast dir viel Arbeit gemacht, sicher auch eine Menge gelernt dabei, es war mit sicherheit auch nicht umsonst. Du wirst es bestimmt noch mal brauchen.

@dakneifer
Folgend eine Lösung in VLisp:

Code:

;;;vlaObj ist der Block als VLA-Objekt
;;;Bsp: (vlax-ename->vla-object (car(entsel)));Block picken
;;;--
;;;NeuAttWerte iste eine Assoziationsliste folgenden Aufbaus
;;;(("AttBez1" . "Wert1")("AttBez2" . "Wert2"))
;;;
(defun f:set_attribute (vlaObj NeuAttWerte / lstAtts)
  (setq lstAtts (vlax-safearray->list (vlax-variant-value (vla-Getattributes vlaObj)))
lstAtts (mapcar 'cons
(mapcar 'vla-get-TagString lstAtts)
lstAtts
)
)
  (mapcar '(lambda (AL / att)
    (if (setq att(assoc (strcase(car AL)) lstAtts))
      (vla-put-TextString (cdr att) (cdr AL))
      )
    )
  NeuAttWerte
  )
  )


Sicher, man müßte, um dieses sinnvoll einsetzen zu können, noch einiges Beiwerk machen, aber das ist Fleißarbeit. Hiermit sollte zumindest dein Kernproblem gelöst sein.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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: 15. Jan. 2004 11: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 dakneifer 10 Unities + Antwort hilfreich

nur mal so ein gedanke, wenn die datenbanklösung zu aufwändig sein sollte:

warum nicht einfach eine *.txt

z.B.

Herr Mustermann
089/5556789
089/5556781

Frau Musterfrau
069/5556789
069/5556781
.
.
.

und dann in der lisp über namensabfrage drauf zugreifen und in die attribs setzen...
könnte man auch ganz leicht erweitern oder verändern.

------------------
...so long and thanx for all the fish!

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



Scientist - Optical Design and Simulation (f/m/x) tooz technologies GmbH, Aalen ? Permanent contract ? Full time
Step out of your comfort zone, excel and redefine the limits of what is possible. That's just what our employees are doing every single day ? in order to set the pace through our innovations and enable outstanding achievements. After all, behind every successful company are many great fascinating people.

In a spacious modern setting full of opportunities for further development, ZEISS employees work in a place where expert knowledge and team spirit reign supreme....
Anzeige ansehenPhysik
otterloh
Mitglied



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

Beiträge: 188
Registriert: 27.06.2001

AutoCAD 2008, 2010
Vista, Win7

erstellt am: 15. Jan. 2004 11: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 dakneifer 10 Unities + Antwort hilfreich

@dakneifer
Ohne Programm, nur mit AutoCAD:
Das Ausfüllen geht auch mit dem Bildschirmmenü.

Block über Button einfügen:
[_Button("Zeichnungskopf",Kopf.bmp,Kopf.bmp)]^C^C_-insert ZEICHNUNGSKOPF $S=X $S=FIRMA


Attributabfragen der Befehlszeile mit KLICK in das Bildschirmmenü beantworten.

Die gewünschten Antworten werden in der *.mnu , im Abscnitt ***SCREEN eingetragen.


***SCREEN
**S

**FIRMA 3

[BMW     ]BMW $S=X $S=FIRMA01

[Audi    ]Audi $S=X $S=FIRMA02

[Toyota  ]Toyota $S=X $S=FIRMA03

[???     ]??? $S=X $S=FIRMA04

[???     ]??? $S=X $S=FIRMA05

**FIRMA01 3

[BMW     ]

[Musterm.]Hr. Musterman
[Tel.    ]01234 / 56789-22
[Fax     ]01234 / 56790-10

[Huber   ]Fr. Huber
[Tel.    ]01234 / 56789-23
[Fax     ]01234 / 56790-11

[Müller  ]Hr. Müller
[Tel.    ]01234 / 56789-23
[Fax     ]01234 / 56790-11

[Schmidt ]Fr. Schmidt
[Tel.    ]01234 / 56789-23
[Fax     ]01234 / 56790-11

[Meyer   ]Hr. Meyer
[Tel.    ]01234 / 56789-23
[Fax     ]01234 / 56790-11

**FIRMA02 3

[Audi    ]

[Name 1  ]Hr. Name 1
[Tel.    ]05678 / 123456-22
[Fax     ]05678 / 123456-10

[Name 2  ]Fr. Name 2
[Tel.    ]05678 / 123456-23
[Fax     ]05678 / 123456-11

[Name 3  ]Hr. Name 3
[Tel.    ]05678 / 123456-23
[Fax     ]05678 / 123456-11

[Name 4  ]Fr. Name 4
[Tel.    ]05678 / 123456-23
[Fax     ]05678 / 123456-11

[Name 5  ]Hr. Name 5
[Tel.    ]05678 / 123456-23
[Fax     ]05678 / 123456-11


**ENDSCREEN


Auf diese Art fülle ich Positions-Blöcke mit Attributen, die einzige Handeingabe ist die Stückzahl.
Ein kleines Lisp-Programm generiert die Positionszahlen automastisch,
und übernimmt die Bauteil-Abmessungen durch anklicken der Maße.
Der Rest wird aus dem Bildschirmmenü übernommen.
Dann die Stückliste (mit allen Gewichten etc.) erstellen:
Daten aus der Zeichnung exportieren.
Daten in Excel importieren und in 2 Minuten ist die Stückliste fertig.

------------------
Gruß Werner http://Meyer-Werner.bei.T-Online.de

[Diese Nachricht wurde von otterloh am 15. Jan. 2004 editiert.]

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