rdx Posted June 12 Share Posted June 12 (edited) DEAR ALL How to Align text in DCL ;;;Temporary dialog box (setq f (open (setq tmpdcl (VL-FILENAME-MKTEMP "tmp" "" ".dcl")) "w")) (write-line "AutoLayer :dialog {" f) (write-line " :row {" f) (write-line " :toggle {" f) (write-line " key = \"AutoSwitch\" ;" f) (write-line " label = \"Enable automatic switching\" ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"Add\" ;" f) (write-line " label = \"Add settings\" ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"Delete\" ;" f) (write-line " label = \"Delet Settings\" ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"deleteall\" ;" f) (write-line " label = \"Remove all\" ;" f) (write-line " }" f) (write-line " }" f) (write-line " :list_box {" f) (write-line " key = \"cmdlist\" ;" f) (write-line " label = \" Command Layer Color Line type\" ;" f) (write-line " width = 60 ;" f) (write-line " height = 20 ;" f) (write-line " multiple_select = true ;" f) (write-line " }" f) (write-line " :row {" f) (write-line " :edit_box {" f) (write-line " key = \"cmdstr\" ;" f) (write-line " label = \"Command\" ;" f) (write-line " width = 20 ;" f) (write-line " }" f) (write-line " :edit_box {" f) (write-line " key = \"layerstr\" ;" f) (write-line " label = \"Layers\" ;" f) (write-line " width = 10 ;" f) (write-line " }" f) (write-line " :popup_list {" f) (write-line " key = \"selectlayer\" ;" f) (write-line " label = \"Select Layer\" ;" f) (write-line " width = 20 ;" f) (write-line " }" f) (write-line " }" f) (write-line " :row {" f) (write-line " :edit_box {" f) (write-line " fixed_width = true ;" f) (write-line " is_enabled = false ;" f) (write-line " key = \"color\" ;" f) (write-line " label = \"Color\" ;" f) (write-line " width = 1 ;" f) (write-line " }" f) (write-line " :image {" f) (write-line " height = 1 ;" f) (write-line " key = \"img\" ;" f) (write-line " width = 2 ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"selectcolor\" ;" f) (write-line " label = \"Select Color\" ;" f) (write-line " }" f) (write-line " :edit_box {" f) (write-line " key = \"ltype\" ;" f) (write-line " is_enabled = false ;" f) (write-line " label = \"linetype\" ;" f) (write-line " width = 20 ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"selectltype\" ;" f) (write-line " label = \"Select Linetype\" ;" f) (write-line " }" f) (write-line " }" f) (write-line " :row {" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " :button {" f) (write-line " key = \"export\" ;" f) (write-line " label = \"Save Template\" ;" f) (write-line " width = 10 ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"import\" ;" f) (write-line " label = \"Import Template\" ;" f) (write-line " width = 10 ;" f) (write-line " }" f) (write-line " :button {" f) (write-line " key = \"edit\" ;" f) (write-line " label = \"Modify\" ;" f) (write-line " width = 10 ;" f) (write-line " }" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " spacer_1;" f) (write-line " }" f) (write-line " ok_cancel_help_errtile;" f) ;(write-line " }" f) (write-line "}" f) (close f) Edited June 12 by rdx Quote Link to comment Share on other sites More sharing options...
SLW210 Posted June 12 Share Posted June 12 Where is your .dcl? Read... DCL alignment column - AutoLISP, Visual LISP & DCL - AutoCAD Forums (cadtutor.net) DCL Tile Attributes-Alignment (afralisp.net) Dialog Box Layout - Page I (afralisp.net) 1 Quote Link to comment Share on other sites More sharing options...
pkenewell Posted June 12 Share Posted June 12 3 hours ago, rdx said: DEAR ALL How to Align text in DCL With a list_box tile, you need to use the "tabs" attribute: https://help.autodesk.com/view/ACD/2024/ENU/index.html?guid=GUID-816B0089-B281-4EB8-8CED-2F8617E81263 1 Quote Link to comment Share on other sites More sharing options...
Steven P Posted June 12 Share Posted June 12 (edited) I tended to learn from AfraLISP - SLW210 link. For alignment you might want to consider a combination of row and column codes with a width setting. This is for an example, taken from a grid DCL: an image, under that and lined up a text description, 'next' row is the same again (is actually row 3 because of the text description). (write-line " :boxed_column { width = 25; alignment = top;" fo) (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :image_button {key = Im0; width = 9; height = 5; color = dialog_background; allow_accept = true; alignment = centered;}}" fo) (write-line " :column {width = 15; :image_button {key = Im1; width = 10; height = 7; color = dialog_background; allow_accept = true;}}" fo) (write-line " }" fo) ; end row (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :text { key = \"Txt0\"; label = \"Func.\"; width = 9;}}" fo) (write-line " :column {width = 15; :text { key = \"Txt1\"; label = \"Func.\"; width = 9;}}" fo) (write-line " }" fo) ; end row (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :image_button {key = Im4; width = 10; height = 7; color = dialog_background; allow_accept = true;}}" fo) (write-line " :column {width = 15; :image_button {key = Im5; width = 10; height = 7; color = dialog_background; allow_accept = true;}}" fo) (write-line " }" fo) ; end row (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :text { key = \"Txt4\"; label = \"Func.\"; width = 9;}}" fo) (write-line " :column {width = 15; :text { key = \"Txt5\"; label = \"Func.\"; width = 9;}}" fo) (write-line " }" fo) ; end row (write-line " }" fo) ; end boxed column In yours perhaps the 'command layer colour linetype' should also be split into 4 columns in a single row It all becomes mental fun when you want columns and rows spanning multiple other rows and columns to get it all lining up. Edited code for readability Edited June 12 by Steven P 1 Quote Link to comment Share on other sites More sharing options...
BIGAL Posted June 13 Share Posted June 13 If the goal is making a DWT "export Template" why would you need to keep changing ? Would it not be just as easy to make a script file and edit that ? In a package we had correct layer linetype and color based on draw an object like a wall or a door etc, behind it was a text file with all the settings 91 different layers. The reason I mention it is that you must still be ridged in setting correct layer so we use menu options to force this. In this house every layer is correct as the set layer has been taken away from the end user. Of course you can still not use the inbuilt functions and draw on wrong layers but no automation. For a recent client request, Text and Dims are in a menu so all objects drawn are to company standards. You could possibly do a reactor check for "HATCH" and set layer but don't have that code. 2 Quote Link to comment Share on other sites More sharing options...
rdx Posted June 13 Author Share Posted June 13 18 hours ago, SLW210 said: Where is your .dcl? Read... DCL alignment column - AutoLISP, Visual LISP & DCL - AutoCAD Forums (cadtutor.net) DCL Tile Attributes-Alignment (afralisp.net) Dialog Box Layout - Page I (afralisp.net) Dear SLW210 Thanks Quote Link to comment Share on other sites More sharing options...
rdx Posted June 13 Author Share Posted June 13 15 hours ago, pkenewell said: With a list_box tile, you need to use the "tabs" attribute: https://help.autodesk.com/view/ACD/2024/ENU/index.html?guid=GUID-816B0089-B281-4EB8-8CED-2F8617E81263 Dear pkenewell Thanks 1 Quote Link to comment Share on other sites More sharing options...
rdx Posted June 13 Author Share Posted June 13 14 hours ago, Steven P said: I tended to learn from AfraLISP - SLW210 link. For alignment you might want to consider a combination of row and column codes with a width setting. This is for an example, taken from a grid DCL: an image, under that and lined up a text description, 'next' row is the same again (is actually row 3 because of the text description). (write-line " :boxed_column { width = 25; alignment = top;" fo) (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :image_button {key = Im0; width = 9; height = 5; color = dialog_background; allow_accept = true; alignment = centered;}}" fo) (write-line " :column {width = 15; :image_button {key = Im1; width = 10; height = 7; color = dialog_background; allow_accept = true;}}" fo) (write-line " }" fo) ; end row (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :text { key = \"Txt0\"; label = \"Func.\"; width = 9;}}" fo) (write-line " :column {width = 15; :text { key = \"Txt1\"; label = \"Func.\"; width = 9;}}" fo) (write-line " }" fo) ; end row (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :image_button {key = Im4; width = 10; height = 7; color = dialog_background; allow_accept = true;}}" fo) (write-line " :column {width = 15; :image_button {key = Im5; width = 10; height = 7; color = dialog_background; allow_accept = true;}}" fo) (write-line " }" fo) ; end row (write-line " :row {alignment = top;" fo) (write-line " :column {width = 15; :text { key = \"Txt4\"; label = \"Func.\"; width = 9;}}" fo) (write-line " :column {width = 15; :text { key = \"Txt5\"; label = \"Func.\"; width = 9;}}" fo) (write-line " }" fo) ; end row (write-line " }" fo) ; end boxed column In yours perhaps the 'command layer colour linetype' should also be split into 4 columns in a single row It all becomes mental fun when you want columns and rows spanning multiple other rows and columns to get it all lining up. Edited code for readability Dear Steven Thansk sir following your method 2 Quote Link to comment Share on other sites More sharing options...
rlx Posted June 13 Share Posted June 13 slightly off topic , it irritated me edit boxes are only left aligned so just for fun (app doesn't actually do anything) : ;;; just for fun , center texts in editboxes - rlx jun'24 (defun c:jff ( / center-factor ) (create_dialog) (princ) ) ;;;|-----------------------------------------------------------------------| ;;;| Just For Fun - Center text in editboxes - rlx jun-2024 | ;;;|-----------------------------------------------------------------------| ;;;| editbox1 editbox2 editbox3 | ;;;| [ ] [ ] [ ] | ;;;| | ;;;| [ <-- ] [ done ] [ --> ] | ;;;| | ;;;|-----------------------------------------------------------------------| ;;; dcl_jff input : m = message , l = label list , v = (default) values list ;;; (dcl_jff "Just For Fun - Center text in editboxes - rlx'24" ;;; '("editbox1" "editbox2" "editbox3") '("Dragons" "just wanna" "have fun")) (defun dcl_jff (m l v / f p d r) (and (setq p (open (setq f (vl-filename-mktemp ".dcl")) "w")) (write-line (strcat "dcl_jff:dialog {label=\"" m "\";:row {") p) (write-line (strcat ":column {children_alignment=centered;:text {label=\"" (nth 0 l) "\";}:edit_box {edit_width=24;key=\"eb1\";}}") p) (write-line (strcat ":column {children_alignment=centered;:text {label=\"" (nth 1 l) "\";}:edit_box {edit_width=24;key=\"eb2\";}}") p) (write-line (strcat ":column {children_alignment=centered;:text {label=\"" (nth 2 l) "\";}:edit_box {edit_width=24;key=\"eb3\";}}}spacer;") p) (write-line (strcat ":concatenation {alignment=centered;" ":button {key=\"bt1\";label=\"" (nth 3 l) "\";} spacer;" ":button {is_default=true;key=\"bt2\";label=\"" (nth 4 l) "\";}spacer;" ":button {key=\"bt3\";label=\"" (nth 5 l) "\";}}}") p) (not (setq p (close p))) (< 0 (setq d (load_dialog f))) (new_dialog "dcl_jff" d) (mapcar '(lambda (x y)(set_tile x y)) '("eb1" "eb2" "eb3") v) (CenterEditboxStrings) (action_tile "bt1" "(Update_Edit_Box_Center_Factor 1)") (action_tile "bt2" "(setq r (list (get_tile \"eb1\")(get_tile \"eb2\")(get_tile \"eb3\")))(done_dialog 1)") (action_tile "bt3" "(Update_Edit_Box_Center_Factor 0)") (start_dialog)(unload_dialog d) (vl-file-delete f) ) r ) (defun Update_Edit_Box_Center_Factor ( i / f ) (if (null Center-Factor) (setq f 6) (setq f Center-Factor)) (cond ((= i 1) (setq f (1+ f)))((= i 0) (setq f (1- f)))(t (setq f 1))) (if (< f 1)(setq f 1)) (setq Center-Factor f) (CenterEditboxStrings) ) (defun create_dialog () (alert (vl-princ-to-string (dcl_jff "Just For Fun - Center text in editboxes - rlx'24" '("editbox1" "editbox2" "editbox3" " <--- " "Done" " ---> ") '("Dragons" "Just Wanna" "Have Fun") ) ) ) ) (defun CenTileText ($k / v x l) (if (null center-factor)(setq center-factor 6)) (setq v (vl-string-trim " " (get_tile $k)) l (strlen v) x (fix (/ (dimx_tile $k) center-factor))) (if (< l x) (repeat (- x l)(setq v (strcat " " v)))) (set_tile $k v)) (defun CenterEditboxStrings ( / tl ) (setq tl '("eb1" "eb2" "eb3")) (foreach tile tl (CenTileText tile))) (c:jff) 1 1 Quote Link to comment Share on other sites More sharing options...
rdx Posted June 13 Author Share Posted June 13 (edited) 10 hours ago, BIGAL said: If the goal is making a DWT "export Template" why would you need to keep changing ? Would it not be just as easy to make a script file and edit that ? In a package we had correct layer linetype and color based on draw an object like a wall or a door etc, behind it was a text file with all the settings 91 different layers. The reason I mention it is that you must still be ridged in setting correct layer so we use menu options to force this. In this house every layer is correct as the set layer has been taken away from the end user. Of course you can still not use the inbuilt functions and draw on wrong layers but no automation. For a recent client request, Text and Dims are in a menu so all objects drawn are to company standards. You could possibly do a reactor check for "HATCH" and set layer but don't have that code. DEAR SIR thanks Edited June 13 by rdx Quote Link to comment Share on other sites More sharing options...
rdx Posted June 13 Author Share Posted June 13 3 hours ago, rlx said: slightly off topic , it irritated me edit boxes are only left aligned so just for fun (app doesn't actually do anything) : ;;; just for fun , center texts in editboxes - rlx jun'24 (defun c:jff ( / center-factor ) (create_dialog) (princ) ) ;;;|-----------------------------------------------------------------------| ;;;| Just For Fun - Center text in editboxes - rlx jun-2024 | ;;;|-----------------------------------------------------------------------| ;;;| editbox1 editbox2 editbox3 | ;;;| [ ] [ ] [ ] | ;;;| | ;;;| [ <-- ] [ done ] [ --> ] | ;;;| | ;;;|-----------------------------------------------------------------------| ;;; dcl_jff input : m = message , l = label list , v = (default) values list ;;; (dcl_jff "Just For Fun - Center text in editboxes - rlx'24" ;;; '("editbox1" "editbox2" "editbox3") '("Dragons" "just wanna" "have fun")) (defun dcl_jff (m l v / f p d r) (and (setq p (open (setq f (vl-filename-mktemp ".dcl")) "w")) (write-line (strcat "dcl_jff:dialog {label=\"" m "\";:row {") p) (write-line (strcat ":column {children_alignment=centered;:text {label=\"" (nth 0 l) "\";}:edit_box {edit_width=24;key=\"eb1\";}}") p) (write-line (strcat ":column {children_alignment=centered;:text {label=\"" (nth 1 l) "\";}:edit_box {edit_width=24;key=\"eb2\";}}") p) (write-line (strcat ":column {children_alignment=centered;:text {label=\"" (nth 2 l) "\";}:edit_box {edit_width=24;key=\"eb3\";}}}spacer;") p) (write-line (strcat ":concatenation {alignment=centered;" ":button {key=\"bt1\";label=\"" (nth 3 l) "\";} spacer;" ":button {is_default=true;key=\"bt2\";label=\"" (nth 4 l) "\";}spacer;" ":button {key=\"bt3\";label=\"" (nth 5 l) "\";}}}") p) (not (setq p (close p))) (< 0 (setq d (load_dialog f))) (new_dialog "dcl_jff" d) (mapcar '(lambda (x y)(set_tile x y)) '("eb1" "eb2" "eb3") v) (CenterEditboxStrings) (action_tile "bt1" "(Update_Edit_Box_Center_Factor 1)") (action_tile "bt2" "(setq r (list (get_tile \"eb1\")(get_tile \"eb2\")(get_tile \"eb3\")))(done_dialog 1)") (action_tile "bt3" "(Update_Edit_Box_Center_Factor 0)") (start_dialog)(unload_dialog d) (vl-file-delete f) ) r ) (defun Update_Edit_Box_Center_Factor ( i / f ) (if (null Center-Factor) (setq f 6) (setq f Center-Factor)) (cond ((= i 1) (setq f (1+ f)))((= i 0) (setq f (1- f)))(t (setq f 1))) (if (< f 1)(setq f 1)) (setq Center-Factor f) (CenterEditboxStrings) ) (defun create_dialog () (alert (vl-princ-to-string (dcl_jff "Just For Fun - Center text in editboxes - rlx'24" '("editbox1" "editbox2" "editbox3" " <--- " "Done" " ---> ") '("Dragons" "Just Wanna" "Have Fun") ) ) ) ) (defun CenTileText ($k / v x l) (if (null center-factor)(setq center-factor 6)) (setq v (vl-string-trim " " (get_tile $k)) l (strlen v) x (fix (/ (dimx_tile $k) center-factor))) (if (< l x) (repeat (- x l)(setq v (strcat " " v)))) (set_tile $k v)) (defun CenterEditboxStrings ( / tl ) (setq tl '("eb1" "eb2" "eb3")) (foreach tile tl (CenTileText tile))) (c:jff) dear sir thanks Quote Link to comment Share on other sites More sharing options...
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.