77077 Posted September 15, 2015 Posted September 15, 2015 (edited) Hi all I have two question, I need some help .Thanks. First question. I use Lee's Attribute Functions ,But error: Select Attribute block:; error: bad DXF group: (1) Lee' function is very great !!! Include this "LISPStyler" [color=#990099];;(editlst '(("tag1" . "val1") ("tag2" . "val2") ("tag3" . "val3") ("tag4" . "val4")))[/color] [color=RED]([/color][color=BLUE]defun[/color] editlst [color=RED]([/color]lst [color=BLUE]/[/color] getdata fname fn i lst1 dclid[color=RED])[/color] [color=RED]([/color][color=BLUE]defun[/color] getdata[color=RED]()[/color] [color=RED]([/color][color=BLUE]setq[/color] lst1 [color=BLUE]nil[/color] i [color=#009900]1[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]foreach[/color] n lst [color=RED]([/color][color=BLUE]setq[/color] lst1 [color=RED]([/color][color=BLUE]cons[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=RED]([/color][color=BLUE]car[/color] n[color=RED])[/color] [color=RED]([/color][color=BLUE]get_tile[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"key"[/color] [color=RED]([/color][color=BLUE]itoa[/color] i[color=RED]))))[/color] lst1[color=RED])[/color] i [color=RED]([/color][color=BLUE]1+[/color] i[color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] fname [color=RED]([/color][color=BLUE]vl-filename-mktemp[/color] [color=BLUE]nil[/color] [color=BLUE]nil[/color] [color=#a52a2a]".dcl"[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] fn [color=RED]([/color][color=BLUE]open[/color] fname [color=#a52a2a]"w"[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"EditDCL:dialog{label=\"Attribute block Editor\";"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]":boxed_column{ "[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]":row{\n:column{"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] I [color=#009900]1[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]foreach[/color] n lst [color=RED]([/color][color=BLUE]write-line[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]":edit_box{label=\""[/color] [color=RED]([/color][color=BLUE]car[/color] n[color=RED])[/color] [color=#a52a2a]"\";value=\""[/color] [color=RED]([/color][color=BLUE]cdr[/color] n[color=RED])[/color] [color=#a52a2a]"\";key=\"KEY"[/color] [color=RED]([/color][color=BLUE]itoa[/color] I[color=RED])[/color] [color=#a52a2a]"\";}"[/color] [color=RED])[/color] fn [color=RED])[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]=[/color] [color=RED]([/color][color=BLUE]rem[/color] i [color=#009900]10[/color][color=RED])[/color] [color=#009900]0[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}\n:column{"[/color] fn[color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] I [color=RED]([/color][color=BLUE]1+[/color] I[color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]/=[/color] [color=RED]([/color][color=BLUE]rem[/color] [color=RED]([/color][color=BLUE]1-[/color] i[color=RED])[/color] [color=#009900]10[/color][color=RED])[/color] [color=#009900]0[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}"[/color] fn[color=RED]))[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}\n}"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"ok_cancel;"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]close[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] dclid [color=RED]([/color][color=BLUE]load_dialog[/color] fname[color=RED]))[/color] [color=RED]([/color][color=BLUE]vl-file-delete[/color] fname[color=RED])[/color] [color=RED]([/color][color=BLUE]new_dialog[/color] [color=#a52a2a]"EditDCL"[/color] dclid[color=RED])[/color] [color=RED]([/color][color=BLUE]action_tile[/color] [color=#a52a2a]"accept"[/color] [color=#a52a2a]"(getdata)(done_dialog 1)"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]action_tile[/color] [color=#a52a2a]"cancel"[/color] [color=#a52a2a]"(done_dialog 0)"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]start_dialog[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]unload_dialog[/color] dclid[color=RED])[/color] [color=RED]([/color][color=BLUE]if[/color] lst1 [color=RED]([/color][color=BLUE]setq[/color] lst [color=RED]([/color][color=BLUE]reverse[/color] lst1[color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] lst lst[color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=#990099];;Main[/color] [color=RED]([/color][color=BLUE]defun[/color] c:test[color=RED]([/color][color=BLUE]/[/color] ent attlst[color=RED])[/color] [color=RED]([/color][color=BLUE]prompt[/color] [color=#a52a2a]"Attribute block Editor"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]setq[/color] ent [color=RED]([/color][color=BLUE]car[/color][color=RED]([/color][color=BLUE]entsel[/color] [color=#a52a2a]"\n Select Attribute block:"[/color][color=RED])))[/color] [color=RED]([/color][color=BLUE]setq[/color] attlst[color=RED]([/color]editlst [color=RED]([/color]LM:getattributes ent[color=RED])))[/color] [color=RED]([/color]LM:setattributevalues ent attlst[color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color] [color=#a52a2a]"Select the next attribute block"[/color][color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color] [color=RED])[/color][color=#990099];end defun[/color] [color=#990099]; Set Attribute Values: Iterative Version[/color] [color=#990099];; Set Attribute Values - Lee Mac[/color] [color=#990099];; Sets attributes with tags found in the association list to their associated values.[/color] [color=#990099];; blk - [ent] Block (Insert) Entity Name[/color] [color=#990099];; lst - [lst] Association list of ((<tag> . <value>) ... )[/color] [color=#990099];; Returns: nil[/color] [color=RED]([/color][color=BLUE]defun[/color] LM:setattributevalues [color=RED]([/color] blk lst [color=BLUE]/[/color] enx itm [color=RED])[/color] [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]=[/color] [color=#a52a2a]"ATTRIB"[/color] [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]0[/color] [color=RED]([/color][color=BLUE]setq[/color] enx [color=RED]([/color][color=BLUE]entget[/color] [color=RED]([/color][color=BLUE]setq[/color] blk [color=RED]([/color][color=BLUE]entnext[/color] blk[color=RED])))))))[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]and[/color] [color=RED]([/color][color=BLUE]setq[/color] itm [color=RED]([/color][color=BLUE]assoc[/color] [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]2[/color] enx[color=RED]))[/color] lst[color=RED]))[/color] [color=RED]([/color][color=BLUE]entmod[/color] [color=RED]([/color][color=BLUE]subst[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]1[/color] [color=RED]([/color][color=BLUE]cdr[/color] itm[color=RED]))[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]1[/color] enx[color=RED])[/color] enx[color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]entupd[/color] blk[color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=#990099]; Get Attributes: Iterative Version[/color] [color=#990099];; Get Attributes - Lee Mac[/color] [color=#990099];; Returns an association list of attributes present in the supplied block.[/color] [color=#990099];; blk - [ent] Block (Insert) Entity Name[/color] [color=#990099];; Returns: [lst] Association list of ((<Tag> . <Value>) ... )[/color] [color=RED]([/color][color=BLUE]defun[/color] LM:getattributes [color=RED]([/color] blk [color=BLUE]/[/color] enx lst [color=RED])[/color] [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]=[/color] [color=#a52a2a]"ATTRIB"[/color] [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]0[/color] [color=RED]([/color][color=BLUE]setq[/color] enx [color=RED]([/color][color=BLUE]entget[/color] [color=RED]([/color][color=BLUE]setq[/color] blk [color=RED]([/color][color=BLUE]entnext[/color] blk[color=RED])))))))[/color] [color=RED]([/color][color=BLUE]setq[/color] lst [color=RED]([/color][color=BLUE]cons[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]2[/color] enx[color=RED]))[/color] [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]1[/color] enx[color=RED]))[/color] [color=RED])[/color] lst [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]reverse[/color] lst[color=RED])[/color] [color=RED])[/color] Second question: Edit box not the same size. cause Dialog is not beautiful. Edited September 15, 2015 by 77077 Quote
Tharwat Posted September 15, 2015 Posted September 15, 2015 Lower case the name of the key attribute as following : "\";key=\"[color="magenta"]key[/color]" (itoa I) "\";}" Quote
77077 Posted September 15, 2015 Author Posted September 15, 2015 Lower case the name of the key attribute as following : "\";key=\"[color="magenta"]key[/color]" (itoa I) "\";}" Oops! negligent! Thank you Tharwat. What about Second question ? Quote
Tharwat Posted September 15, 2015 Posted September 15, 2015 Oops! negligent! Thank you Tharwat. What about Second question ? You're welcome . In regard to your second question , just add width attribute and set the value as per your needs. Quote
77077 Posted September 15, 2015 Author Posted September 15, 2015 You're welcome . In regard to your second question , just add width attribute and set the value as per your needs. I think It's Not That Simple . editlst function need rewrite .maybe. Quote
Tharwat Posted September 15, 2015 Posted September 15, 2015 I think It's Not That Simple . editlst function need rewrite .maybe. Really? (strcat ": row { : text { label=\"" (car n) "\";} : edit_box {value=\"" (cdr n) "\";key=\"key" (itoa I) "\"; width = 5; fixed_width = true;}}" ) Quote
77077 Posted September 16, 2015 Author Posted September 16, 2015 (edited) Really? (strcat ": row { : text { label=\"" (car n) "\";} : edit_box {value=\"" (cdr n) "\";key=\"key" (itoa I) "\"; width = 5; fixed_width = true;}}" ) Thanks Tharwat. I mean like this : [color=RED]([/color][color=BLUE]defun[/color] [color=BLUE]editlst[/color] [color=RED]([/color]lst [color=BLUE]/[/color] fname fn i dclid lst_tag lst_val len_txt len_edbox[color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] lst_tag[color=RED]([/color][color=BLUE]mapcar[/color] [color=DARKRED]'[/color][color=BLUE]car[/color] lst[color=RED]))[/color][color=#990099];new[/color] [color=RED]([/color][color=BLUE]setq[/color] lst_val[color=RED]([/color][color=BLUE]mapcar[/color] [color=DARKRED]'[/color][color=BLUE]cdr[/color] lst[color=RED]))[/color][color=#990099];new[/color] [color=RED]([/color][color=BLUE]setq[/color] len_txt[color=RED]([/color][color=BLUE]+[/color][color=RED]([/color][color=BLUE]apply[/color] [color=DARKRED]'[/color][color=BLUE]max[/color] [color=RED]([/color][color=BLUE]mapcar[/color] [color=DARKRED]'[/color][color=BLUE]strlen[/color] lst_tag[color=RED]))[/color][color=#009900]2[/color][color=RED]))[/color][color=#990099];new[/color] [color=RED]([/color][color=BLUE]setq[/color] len_edbox[color=RED]([/color][color=BLUE]+[/color][color=RED]([/color][color=BLUE]apply[/color] [color=DARKRED]'[/color][color=BLUE]max[/color] [color=RED]([/color][color=BLUE]mapcar[/color] [color=DARKRED]'[/color][color=BLUE]strlen[/color] lst_val[color=RED]))[/color][color=#009900]2[/color][color=RED]))[/color][color=#990099];new[/color] [color=RED]([/color][color=BLUE]setq[/color] fname [color=RED]([/color][color=BLUE]vl-filename-mktemp[/color] [color=BLUE]nil[/color] [color=BLUE]nil[/color] [color=#a52a2a]".dcl"[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] fn [color=RED]([/color][color=BLUE]open[/color] fname [color=#a52a2a]"w"[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"EditDCL:dialog{label=\"Attribute block Editor\";"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]":boxed_row { "[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]":column {"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]foreach[/color] n lst_tag [color=RED]([/color][color=BLUE]write-line[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]": text { label=\""[/color] n [color=#a52a2a]"\"; width ="[/color][color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]fix[/color] len_txt[color=RED]))[/color][color=#a52a2a]"; fixed_width = true;}"[/color] [color=RED])[/color] fn [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]":column {"[/color] fn[color=RED])[/color][color=#990099];;[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=#009900]1[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]foreach[/color] n lst_val [color=RED]([/color][color=BLUE]write-line[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]": edit_box {value=\""[/color] n [color=#a52a2a]"\"; key=\"key"[/color] [color=RED]([/color][color=BLUE]itoa[/color] i[color=RED])[/color] [color=#a52a2a]"\"; width ="[/color][color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]fix[/color] len_edbox[color=RED]))[/color][color=#a52a2a]"; fixed_width = true;}"[/color] [color=RED])[/color] fn [color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]1+[/color] i[color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}\n}"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"ok_cancel;"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]write-line[/color] [color=#a52a2a]"}"[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]close[/color] fn[color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] dclid [color=RED]([/color][color=BLUE]load_dialog[/color] fname[color=RED]))[/color] [color=RED]([/color][color=BLUE]vl-file-delete[/color] fname[color=RED])[/color] [color=RED]([/color][color=BLUE]new_dialog[/color] [color=#a52a2a]"EditDCL"[/color] dclid[color=RED])[/color] [color=RED]([/color][color=BLUE]action_tile[/color] [color=#a52a2a]"accept"[/color] [color=#a52a2a]"(done_dialog 1)"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]action_tile[/color] [color=#a52a2a]"cancel"[/color] [color=#a52a2a]"(done_dialog 0)"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]start_dialog[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]unload_dialog[/color] dclid[color=RED])[/color] [color=RED])[/color] But , this is not perfect . if more Attribute (>= 20), The Dialog will very long. I want one column =10 , if attribute >10 , need Add a column ... Edited September 16, 2015 by 77077 Quote
rlx Posted September 17, 2015 Posted September 17, 2015 (edited) It seems to me you're one step away from gettting back to the standard attribute edit dialog ;-) If nobody has the nerve to bug me at my work I will see if I can post my own version of an attribute editor. But it's not completely generic and certainly not like anything posted before. I don't now , can you post word documents here? Because the manual is about 50 pages (and it's writen in dutch) so I have to translate it first to... gr. Rlx Edited September 17, 2015 by rlx Quote
77077 Posted September 17, 2015 Author Posted September 17, 2015 It seems to me you're one step away from gettting back to the standard attribute edit dialog ;-) I can use command "attedit" for attribute edit. My purpose is to learning methods . if more Attribute (>= 20), The Dialog will very long. I hope one column =10 , if attribute >10 , need Add a column ... if necessary, use the "spacer" controls to filling If nobody has the nerve to bug me at my work I will see if I can post my own version of an attribute editor. But it not completely generic and certainly not like anything posted before. Welcome and await. I don't now , can you post word documents here? Because the manual is about 50 pages (and it's writen in ducth) so I have to translate it first to... gr. Rlx what word documents ? Quote
rlx Posted September 17, 2015 Posted September 17, 2015 how about using a list box as I do in my CT routine? Quote
kpblc Posted September 17, 2015 Posted September 17, 2015 Wow! While i powered on AutoCAD, there are some new posts appears 1st question: usually i use this routine to edit any attribute: (defun _kpblc-set-attr-value (blk-ref tag string / _kpblc-conv-vla-to-list att err) ;| * Set attribute value * Call parameters: blk-ref block reference. ename, vla or nil. If nil, user should select block reference tag attribute tag string value * Call samples: (_kpblc-set-attr-value (car (entsel)) "tag" "new value") |; (defun _kpblc-conv-vla-to-list (value / res) (cond ((listp value) (mapcar (function _kpblc-conv-vla-to-list) value) ) ((= (type value) 'variant) (_kpblc-conv-vla-to-list (vlax-variant-value value)) ) ((= (type value) 'safearray) (if (>= (vlax-safearray-get-u-bound value 1) 0) (_kpblc-conv-vla-to-list (vlax-safearray->list value)) ) ;_ end of if ) ((and (= (type value) 'vla-object) (vlax-property-available-p value 'count) ) ;_ end of and (vlax-for sub value (setq res (cons sub res)) ) ;_ end of vlax-for ) (t value) ) ;_ end of cond ) ;_ end of defun (cond ((and (not blk-ref) (= (type (setq blk-ref (vl-catch-all-apply (function (lambda () (car (entsel "\nSelect block reference <Cancel> : ")) ) ;_ end of lambda ) ;_ end of function ) ;_ end of vl-catch-all-apply ) ;_ end of setq ) ;_ end of type 'ename ) ;_ end of = (= (cdr (assoc 0 (entget blk-ref))) "INSERT") (= (cdr (assoc 66 (entget blk-ref))) 1) ) ;_ end of and (_kpblc-set-attr-value (vlax-ename->vla-object blk-ref) tag string) ) ((and (= (type blk-ref) 'ename) (= (cdr (assoc 0 (entget blk-ref))) "INSERT") (= (cdr (assoc 66 (entget blk-ref))) 1) ) ;_ end of and (_kpblc-set-attr-value (vlax-ename->vla-object blk-ref) tag string) ) ((and (= (type blk-ref) 'vla-object) (= (vla-get-objectname blk-ref) "AcDbBlockReference") (vlax-property-available-p blk-ref 'hasattributes) (equal (vla-get-hasattributes blk-ref) :vlax-true) ) ;_ end of and (if (vl-catch-all-error-p (setq err (vl-catch-all-apply (function (lambda () (if (setq att (car (vl-remove-if-not (function (lambda (x) (= (strcase (vla-get-tagstring x)) (strcase tag)))) (_kpblc-conv-vla-to-list (vla-getattributes blk-ref)) ) ;_ end of vl-remove-if-not ) ;_ end of car ) ;_ end of setq (progn (vla-put-textstring att string) (vla-update blk-ref) ) ;_ end of progn (princ "\nAttribute not found") ) ;_ end of if ) ;_ end of lambda ) ;_ end of function ) ;_ end of vl-catch-all-apply ) ;_ end of setq ) ;_ end of vl-catch-all-error-p (princ "\n** Error : " (vl-catch-all-error-p err) " **") ) ;_ end of if ) ) ;_ end of cond ) ;_ end of defun 2nd question: unfortunally i have no time to write and test dcl-dialg Sorry Quote
77077 Posted September 17, 2015 Author Posted September 17, 2015 Wow! While i powered on AutoCAD, there are some new posts appears 1st question: usually i use this routine to edit any attribute: 2nd question: unfortunally i have no time to write and test dcl-dialg Sorry Thanks a lot. kpblc, 1st question has been resolved . Just a new question, at #7 & #9 Quote
77077 Posted September 17, 2015 Author Posted September 17, 2015 how about using a list box as I do in my CT routine? Thanks rlx. This is another method. I will learning. Quote
kpblc Posted September 17, 2015 Posted September 17, 2015 Right now i can't start Windows, so the answer is not tested. Try to use "align" and "children_align" attributes to place all rows to up. Perhaps it will works. Quote
77077 Posted September 17, 2015 Author Posted September 17, 2015 Right now i can't start Windows, so the answer is not tested. Try to use "align" and "children_align" attributes to place all rows to up. Perhaps it will works. Dear kpblc, Why can't start windows? , Now ,my problem is not about align , Did you see my post at #7 ? is about add new column . Thanks a lot. Quote
kpblc Posted September 17, 2015 Posted September 17, 2015 Heh, right now i'm on Linux ))) And i can't connect to my home computer. Quote
77077 Posted September 18, 2015 Author Posted September 18, 2015 OK! All the problems have been resolved. (setq lst_tag(mapcar 'car lst)) (setq new_lst(LM:groupbynum lst_tag 10)) (setq nt (length new_lst)) (setq lst_val(mapcar 'cdr lst)) (setq new_lst2(LM:groupbynum lst_val 10)) (setq len_txt(+(apply 'max (mapcar 'strlen lst_tag))2)) (setq len_edbox(+(apply 'max (mapcar 'strlen lst_val))2)) (setq fname (vl-filename-mktemp nil nil ".dcl")) (setq fn (open fname "w")) (write-line "EditDCL:dialog{label=\"Attribute block Editor\";" fn) (write-line ":boxed_row { " fn);;2 (setq i 1) (repeat nt (write-line ":column {" fn) (setq v2 (- nt v1) v1(1- v1)) (foreach n (nth v2 new_lst) (write-line (strcat ": text { value=\"" n "\"; width ="(itoa (fix len_txt))"; fixed_width = true;}" ) fn ) ) (if (<(length (nth v2 new_lst))10) (write-line (strcat ":spacer { height ="(itoa(fix(*(- 10(length(nth v2 new_lst)))2)))" ;}") fn ) );end_if (write-line "}" fn) (write-line ":column {" fn);; (foreach n (nth v2 new_lst2) (write-line (strcat ": edit_box {value=\"" n "\"; key=\"key" (itoa i) "\"; width ="(itoa (fix len_edbox))"; fixed_width = true;}" ) fn ) (setq i (1+ i)) ) (if (<(length (nth v2 new_lst))10) (write-line (strcat ":spacer { height ="(itoa(fix(*(- 10(length(nth v2 new_lst)))2)))" ;}") fn ) );end_if (write-line "}" fn) );;end_repeat Test list1 (setq lst '( ("tag1" . "val1") ("tag2" . "val2") ("tag3" . "val3") ("tag4" . "val4") ("tag5" . "val5") ("tag6" . "val6") ("tag7" . "val7") ("tag8" . "val8") ("tag9" . "val9") ("tag10" . "val10") ("tag11" . "val11") ("tag12" . "val12") ("tag13" . "val13") ("tag14" . "val14") ("tag15" . "val15") ("tag16" . "val16") ("tag17" . "val17") ("tag18" . "val18") ("tag19" . "val19") ("tag20" . "val20") ("tag21" . "val21") ("tag22" . "val22") ("tag23" . "val23") ("tag24" . "val24") ("tag25" . "val25") ("tag26" . "val26") ("tag27" . "val27") ("tag28" . "val28") ("tag29" . "val29") ("tag30" . "val30") ) ) Result: Test list2 (setq lst '( ("tag1" . "val1") ("tag2" . "val2") ("tag3" . "val3") ("tag4" . "val4") ("tag5" . "val5") ("tag6" . "val6") ("tag7" . "val7") ("tag8" . "val8") ("tag9" . "val9") ("tag10" . "val10") ("tag11" . "val11") ("tag12" . "val12") ) ) Result: Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.