Jump to content

I want to add "center alignment" to this lisp


asami586

Recommended Posts

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.")

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...