Message 1 of 12
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi
I have the following code.
It would be great when I Pick an existing Block (entsel) to change only one Attribute (the slected one) and not have to go through every Attribute again.
Is that possible? Thanks for help!
(vl-load-com) (defun C:<Test2 ( / *error* oATTREQ oATTDIA LM:vl-setattributevalue :roundUpToTens ent ANZAHL HÖHE LÄNGE DECKE) (defun *error* (errmsg) (if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break")) (princ (strcat "\nError: " errmsg))) (setvar 'ATTREQ oATTREQ) (setvar 'ATTDIA oATTDIA) (command-s "_.undo" "_end") (princ)) (defun LM:vl-setattributevalue ( blk tag val ) (setq tag (strcase tag)) (vl-some '(lambda ( att ) (if (= tag (strcase (vla-get-tagstring att))) (progn (vla-put-textstring att val) val))) (vlax-invoke blk 'getattributes))) (defun :roundUpToTens (x / ) (* (atoi (rtos (+ (* x 0.1) 0.49) 2 0)) 10)) (command "_.undo" "_begin") (setq oATTREQ (getvar 'ATTREQ) oATTDIA (getvar 'ATTDIA)) (setvar 'ATTREQ 0) (setvar 'ATTDIA 0) (if (not KUFU)(setq KUFU "mit")) (setq ANZAHL 10) (setq HÖHE 20) (setq DECKE 25) (if (setq ent (car (entsel "\nDistanzkorbtext wählen oder <Neuer einfügen>: "))) (progn (initget "Mit Ohne") (setq KUFU (cond ((getkword (strcat "\nMit oder ohne KUFU (mit/ ohne) <" KUFU ">: ")))(KUFU))) (setq KUFU (strcase KUFU T)) (initget 6) (setq ANZAHL (:roundUpToTens (cond ((getint (strcat "\nAnzahl Körbe <" (itoa ANZAHL) ">: ")))(ANZAHL)))) (initget 6) (setq HÖHE (cond ((getint (strcat "\nHöhe der Körbe <" (itoa HÖHE) ">: ")))(HÖHE))) (setq LÄNGE (* ANZAHL 2.5)) (initget 6) (setq DECKE (strcat "für Decke d=" (itoa (cond ((getint (strcat "\nDeckenstärke <" (itoa DECKE) ">: ")))(DECKE))) " cm")) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "KUFU" (strcat "DK " KUFU " KUFU")) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "ANZAHL" ANZAHL) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "HÖHE" HÖHE) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "LÄNGE" LÄNGE) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "DECKE" DECKE) ) (progn (if (and (not (command "_.INSERT" "spi-bew-dkm_test" "_s" 1 "_r" 0)) (princ "\nIn Eisenliste bei Distanzkörbe einfügen: \n") (not (command PAUSE)) (setq ent (entlast)) (progn (initget "Mit Ohne") (setq KUFU (cond ((getkword (strcat "\nMit oder ohne KUFU (mit/ ohne) <" KUFU ">: ")))(KUFU))) (setq KUFU (strcase KUFU T)) (initget 6) (setq ANZAHL (:roundUpToTens (cond ((getint (strcat "\nAnzahl Körbe <" (itoa ANZAHL) ">: ")))(ANZAHL)))) (initget 6) (setq HÖHE (cond ((getint (strcat "\nHöhe der Körbe <" (itoa HÖHE) ">: ")))(HÖHE))) (setq LÄNGE (* ANZAHL 2.5)) (initget 6) (setq DECKE (strcat "für Decke d=" (itoa (cond ((getint (strcat "\nDeckenstärke <" (itoa DECKE) ">: ")))(DECKE))) " cm"))) ) (progn (LM:vl-setattributevalue (vlax-ename->vla-object ent) "KUFU" (strcat "DK " KUFU " KUFU")) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "ANZAHL" ANZAHL) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "HÖHE" HÖHE) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "LÄNGE" LÄNGE) (LM:vl-setattributevalue (vlax-ename->vla-object ent) "DECKE" DECKE))))) (setvar 'ATTREQ oATTREQ) (setvar 'ATTDIA oATTDIA) (command "_.undo" "_end") (prin1) ) ; end of defun
Solved! Go to Solution.