asami586 Posted January 8, 2017 Share Posted January 8, 2017 Hello. I got this lisp here, and I've been using this very well. This lisp has center alignment. when I use this, this lisp aligns selected objects both X value and Y value. BUT I'd like to align objects only by X value. Could I get this? (defun c:AA (/ ActDoc Sel AliObj AliLl AliUr ss AliOpt Ent tempObj tempLl tempUr) (vl-load-com) (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (vla-EndUndoMark ActDoc) (vla-StartUndoMark ActDoc) (if (and (setq Sel (entsel "\n Select base object (for aligning): ")) (not (redraw (car Sel) 3)) (setq AliObj (vlax-ename->vla-object (car Sel))) (not (vla-GetBoundingBox AliObj 'AliLl 'AliUr)) (setq AliLl (safearray-value AliLl)) (setq AliUr (safearray-value AliUr)) (setq ss (ssget)) (not (initget "Left Right Center Top Bottom")) (setq AliOpt (if (setq AliOpt (getkword "\n Alignment option [Center / Left / Right / Top / Bottom]: ")) AliOpt "Center" ) ) (setq cnt -1) ) (while (setq Ent (ssname ss (setq cnt (1+ cnt)))) (setq tempObj (vlax-ename->vla-object Ent)) (vla-GetBoundingBox tempObj 'tempLl 'tempUr) (setq tempLl (safearray-value tempLl)) (setq tempUr (safearray-value tempUr)) (cond ((= AliOpt "Center") (vlax-invoke tempObj 'Move (mapcar '(lambda (a b) (/ (+ a b) 2.0)) tempLl tempUr) (mapcar '(lambda (a b) (/ (+ a b) 2.0)) AliLl AliUr) ) ) ((= AliOpt "Left") (vlax-invoke tempObj 'Move tempLl (list (car AliLl) (cadr tempLl) (caddr tempLl) ) ) ) ((= AliOpt "Right") (vlax-invoke tempObj 'Move tempUr (list (car AliUr) (cadr tempUr) (caddr tempUr) ) ) ) ((= AliOpt "Top") (vlax-invoke tempObj 'Move tempUr (list (car tempUr) (cadr AliUr) (caddr tempUr) ) ) ) ((= AliOpt "Bottom") (vlax-invoke tempObj 'Move tempLl (list (car tempLl) (cadr AliLl) (caddr tempLl) ) ) ) ) ) ) (if Sel (redraw (car Sel) 4)) (vla-EndUndoMark ActDoc) (princ) ) (prompt "\nEnter AO to start.") Quote Link to comment Share on other sites More sharing options...
asami586 Posted January 8, 2017 Author Share Posted January 8, 2017 If the alignment could be added to that lisp, I'd like to name it "Middle(M)". Quote Link to comment Share on other sites More sharing options...
tombu Posted January 8, 2017 Share Posted January 8, 2017 1st Wrap tags around selected text using # from Toolbar above.2nd Paste the link to where you got the lisp. It gives credit to the author and provides more information about the lisp. Quote Link to comment Share on other sites More sharing options...
Grrr Posted January 8, 2017 Share Posted January 8, 2017 Thats a nice code, just found the source thread and the author is Tim Willey. Anyway heres my attempt: [color=#8b4513]; Align Objects with Justification[/color] [b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / m mv *error* Lst s SS c acDoc i o d Lst2 sBL sTR dBL dTR[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]defun m [b][color=NAVY]([/color][/b]p1 p2[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]apply 'mapcar [b][color=MAROON]([/color][/b]cons '[b][color=GREEN]([/color][/b]lambda [b][color=BLUE]([/color][/b]a b[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]/ [b][color=RED]([/color][/b]+ a b[b][color=RED])[/color][/b] 2.[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]list p1 p2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]defun mv [b][color=NAVY]([/color][/b]o p1 p2[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]vlax-invoke o 'move p1 p2[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]defun *error* [b][color=NAVY]([/color][/b]m[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]and acDoc [b][color=MAROON]([/color][/b]vla-EndUndoMark acDoc[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]print m[b][color=NAVY])[/color][/b][b][color=NAVY]([/color][/b]princ[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq Lst [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"Left"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]d[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cadr d[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]car [b][color=TEAL]([/color][/b]car s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cadr [b][color=TEAL]([/color][/b]cadr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]caddr [b][color=TEAL]([/color][/b]cadr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"Center"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]d[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cadddr d[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]car [b][color=TEAL]([/color][/b]caddr s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cadr [b][color=TEAL]([/color][/b]cadddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]caddr [b][color=TEAL]([/color][/b]cadddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"Right"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]d[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]caddr d[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]car [b][color=TEAL]([/color][/b]cadr s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cadr [b][color=TEAL]([/color][/b]caddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]caddr [b][color=TEAL]([/color][/b]caddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"Top"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]d[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]caddr d[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]car [b][color=TEAL]([/color][/b]caddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cadr [b][color=TEAL]([/color][/b]cadr s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]caddr [b][color=TEAL]([/color][/b]caddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"Middle"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]d[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cadddr d[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]car [b][color=TEAL]([/color][/b]cadddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cadr [b][color=TEAL]([/color][/b]caddr s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]caddr [b][color=TEAL]([/color][/b]cadddr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"Bottom"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]d[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cadr d[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]car [b][color=TEAL]([/color][/b]cadr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cadr [b][color=TEAL]([/color][/b]car s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]caddr [b][color=TEAL]([/color][/b]cadr d[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=NAVY])[/color][/b] [b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= 52 [b][color=MAROON]([/color][/b]getvar 'errno[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq s [b][color=MAROON]([/color][/b]car [b][color=GREEN]([/color][/b]entsel [color=#2f4f4f]"\nSelect base object for aligning <exit>: "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]cond [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= 7 [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nMissed."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setvar 'errno 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]and s [b][color=BLUE]([/color][/b]or [b][color=RED]([/color][/b]not [b][color=PURPLE]([/color][/b]vlax-method-applicable-p [b][color=TEAL]([/color][/b]vlax-ename->vla-object s[b][color=TEAL])[/color][/b] 'GetBoundingBox[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]vl-catch-all-error-p [b][color=PURPLE]([/color][/b]vl-catch-all-apply 'vla-GetBoundingBox [b][color=TEAL]([/color][/b]list [b][color=OLIVE]([/color][/b]vlax-ename->vla-object s[b][color=OLIVE])[/color][/b] 'sBL 'sTR[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE])[/color][/b] [b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nInvalid object."[/color][b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]s [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]setq s [b][color=RED]([/color][/b]mapcar 'safearray-value [b][color=PURPLE]([/color][/b]list sBL sTR[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq s [b][color=RED]([/color][/b]append s [b][color=PURPLE]([/color][/b]list [b][color=TEAL]([/color][/b]apply 'm s[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]princ [color=#2f4f4f]"\nSelect objects to be aligned: "[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq SS [b][color=RED]([/color][/b]ssget [color=#2f4f4f]"_:L"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]initget [b][color=PURPLE]([/color][/b]apply 'strcat [b][color=TEAL]([/color][/b]mapcar '[b][color=OLIVE]([/color][/b]lambda [b][color=GRAY]([/color][/b]x[b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]strcat x [color=#2f4f4f]" "[/color][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]mapcar 'car Lst[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]or [b][color=RED]([/color][/b]setq c [b][color=PURPLE]([/color][/b]getkword [b][color=TEAL]([/color][/b]strcat [color=#2f4f4f]"\nSpecify alignment option ["[/color] [b][color=OLIVE]([/color][/b]vl-string-right-trim [color=#2f4f4f]"/"[/color] [b][color=GRAY]([/color][/b]apply 'strcat [b][color=AQUA]([/color][/b]mapcar '[b][color=LIME]([/color][/b]lambda [b][color=SILVER]([/color][/b]x[b][color=SILVER])[/color][/b] [b][color=SILVER]([/color][/b]strcat x [color=#2f4f4f]"/"[/color][b][color=SILVER])[/color][/b][b][color=LIME])[/color][/b] [b][color=LIME]([/color][/b]mapcar 'car Lst[b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [color=#2f4f4f]"]: <Center> "[/color] [b][color=TEAL])[/color][/b] [b][color=PURPLE])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b]setq c [color=#2f4f4f]"Center"[/color][b][color=RED])[/color][/b] [b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]progn [b][color=RED]([/color][/b]repeat [b][color=PURPLE]([/color][/b]setq i [b][color=TEAL]([/color][/b]sslength SS[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]and [b][color=TEAL]([/color][/b]vlax-method-applicable-p [b][color=OLIVE]([/color][/b]setq o [b][color=GRAY]([/color][/b]vlax-ename->vla-object [b][color=AQUA]([/color][/b]ssname SS [b][color=LIME]([/color][/b]setq i [b][color=SILVER]([/color][/b]1- i[b][color=SILVER])[/color][/b][b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] 'GetBoundingBox[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]not [b][color=OLIVE]([/color][/b]vl-catch-all-error-p [b][color=GRAY]([/color][/b]vl-catch-all-apply 'vla-GetBoundingBox [b][color=AQUA]([/color][/b]list o 'dBL 'dTR[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]setq d [b][color=OLIVE]([/color][/b]mapcar 'safearray-value [b][color=GRAY]([/color][/b]list dBL dTR[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [color=#8b4513]; o BL TR MC[/color] [b][color=TEAL]([/color][/b]setq d [b][color=OLIVE]([/color][/b]append [b][color=GRAY]([/color][/b]list o[b][color=GRAY])[/color][/b] d [b][color=GRAY]([/color][/b]list [b][color=AQUA]([/color][/b]apply 'm d[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]setq Lst2 [b][color=OLIVE]([/color][/b]cons d Lst2[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=PURPLE])[/color][/b][color=#8b4513]; and[/color] [b][color=RED])[/color][/b][color=#8b4513]; repeat[/color] [b][color=RED]([/color][/b]if Lst2 [b][color=PURPLE]([/color][/b]progn [b][color=TEAL]([/color][/b]setq acDoc [b][color=OLIVE]([/color][/b]vla-get-ActiveDocument [b][color=GRAY]([/color][/b]vlax-get-acad-object[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]or [b][color=OLIVE]([/color][/b]/= 8 [b][color=GRAY]([/color][/b]logand [b][color=AQUA]([/color][/b]getvar 'undoctl[b][color=AQUA])[/color][/b] 8[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]not [b][color=GRAY]([/color][/b]vla-EndUndoMark acDoc[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]not [b][color=OLIVE]([/color][/b]vla-StartUndoMark acDoc[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]mapcar '[b][color=OLIVE]([/color][/b]lambda [b][color=GRAY]([/color][/b]x[b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]apply 'mv [b][color=AQUA]([/color][/b]append [b][color=LIME]([/color][/b]list [b][color=SILVER]([/color][/b]car x[b][color=SILVER])[/color][/b][b][color=LIME])[/color][/b] [b][color=LIME]([/color][/b][b][color=SILVER]([/color][/b]cdr [b][color=YELLOW]([/color][/b]assoc c Lst[b][color=YELLOW])[/color][/b][b][color=SILVER])[/color][/b] x[b][color=LIME])[/color][/b][b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] Lst2[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]and [b][color=OLIVE]([/color][/b]= 8 [b][color=GRAY]([/color][/b]logand [b][color=AQUA]([/color][/b]getvar 'undoctl[b][color=AQUA])[/color][/b] 8[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]vla-EndUndoMark acDoc[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=PURPLE])[/color][/b] [b][color=RED])[/color][/b] [b][color=BLUE])[/color][/b] [b][color=GREEN])[/color][/b][color=#8b4513]; and [/color] [b][color=GREEN]([/color][/b]setvar 'errno 52[b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b] [b][color=NAVY])[/color][/b] [b][color=FUCHSIA])[/color][/b][color=#8b4513]; while[/color] [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b] [b][color=BLACK])[/color][/b][color=#8b4513]; defun[/color] Quote Link to comment Share on other sites More sharing options...
asami586 Posted January 9, 2017 Author Share Posted January 9, 2017 Thank you! I will follow the rules here next time Quote Link to comment Share on other sites More sharing options...
asami586 Posted January 9, 2017 Author Share Posted January 9, 2017 Grrr. I really appreciate what you did. Could I ask you to add one more thing ? I'd like to add "Inner center" that works as "Center" of the previous LISP. And I hope that "the inner center" will be the default option. ex) Alignment option [Left / Center / Right / Top / Middel / Bottom / Inner center]: If you have some free time, would you help me? Quote Link to comment Share on other sites More sharing options...
Grrr Posted January 9, 2017 Share Posted January 9, 2017 (edited) For "Match Center" include this in the Lst variable: (cons "MatchCenter" '((d) (list (cadddr d) (caddr s)))) Edited January 9, 2017 by Grrr Quote Link to comment Share on other sites More sharing options...
asami586 Posted January 9, 2017 Author Share Posted January 9, 2017 That is just What I wanted! I'm really i really appreciate you doing so, Grrr Have a nice day! Quote Link to comment Share on other sites More sharing options...
SLW210 Posted January 9, 2017 Share Posted January 9, 2017 Please read the Code Posting Guidelines and edit your Code to be included in Code Tags.[NOPARSE] Your Code Here[/NOPARSE] = Your Code Here 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.