antoniusxylem Posted September 25, 2015 Share Posted September 25, 2015 I have 6 different commands for rotate 13 is my rotate command. 1390 13180 13270 1345 13... you get the point. Instead of haveing all these commands I would like to consolidate them into 1 command with options 1=90 2=180 3=... you get the point. I would like to select object, pick point, enter 1-blah blah blah enter and done. I know I can just use the rotate command but this will play an important roll in a greater lisp routine. Thank you in advance. Here is my basic 13180 command (defun C:13180(/ CtrPt) (setvar "CMDECHO" 0) (setq ss1 nil) (setq ss1 (ssget)) (setq CtrPt (getpoint "\nPick the rotation Point:... ")) (command "rotate" "P" "" CtrPt "180") (setq ss1 nil) (setvar "CMDECHO" 1) (princ) ) ;end defun Quote Link to comment Share on other sites More sharing options...
David Bethel Posted September 25, 2015 Share Posted September 25, 2015 Maybe: [b][color=BLACK]([/color][/b]defun c:rots [b][color=FUCHSIA]([/color][/b]/ ss cp rl il rs[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]initget 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq cp [b][color=GREEN]([/color][/b]getpoint [color=#2f4f4f]"\nBase Point: "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq rl '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]1 . 90[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]2 . 180[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]3 . 270[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]4 . 45[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]5 . 135[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]6 . 225[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]7 . 315[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq il [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]foreach r rl [b][color=GREEN]([/color][/b]setq il [b][color=BLUE]([/color][/b]strcat il [color=#2f4f4f]" "[/color] [b][color=RED]([/color][/b]itoa [b][color=PURPLE]([/color][/b]car r[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 [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"\n"[/color] [b][color=RED]([/color][/b]itoa [b][color=PURPLE]([/color][/b]car r[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][color=#2f4f4f]" = "[/color] [b][color=RED]([/color][/b]rtos [b][color=PURPLE]([/color][/b]cdr r[b][color=PURPLE])[/color][/b] 2 0[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]initget 1 il[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq rs [b][color=GREEN]([/color][/b]getkword [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"\nRotation Angle "[/color] il [color=#2f4f4f]": "[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.ROTATE"[/color] ss [color=#2f4f4f]""[/color] cp [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc [b][color=RED]([/color][/b]atoi rs[b][color=RED])[/color][/b] rl[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]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] -David Quote Link to comment Share on other sites More sharing options...
satishrajdev Posted September 25, 2015 Share Posted September 25, 2015 Specify rotation instead e.g. 90 or 180 (defun c:test ( / CtrPt ss1 rot ) (if (setq ss1 (ssget)) (progn (setvar "CMDECHO" 0) (setq CtrPt (getpoint "\nPick the rotation Point:... ") rot (getint "\nSpecify Rotation : ")) (command "rotate" "P" "" CtrPt rot) (setvar "CMDECHO" 1) ) ) (princ) ) ;end defun Quote Link to comment Share on other sites More sharing options...
rlx Posted September 26, 2015 Share Posted September 26, 2015 (edited) just for fun (defun c:rot13 ( / rot-list loop ss1 CtrPt inp) (vl-load-com) (setq rotlist (list 45 90 135 180 225 270) loop t) (setvar "CMDECHO" 0) (if (and (setq ss1 (ssget)) (setq CtrPt (getpoint "\nPick the rotation Point:... "))) (progn (princ "\nCycle angle with tab or L-mouse / accept use enter,space or R-mouse / Esc or x for exit") (princ (strcat "\nChoose rotation angle<" (itoa (car rotlist)) "> : ")) (while loop (setq inp (vl-catch-all-apply 'grread (list nil 8 0))) (if (vl-catch-all-error-p inp) (progn (princ "\nRotation function cancelled")(setq loop nil)) (progn (cond ;tab ((or (equal inp '(2 9))(= (car inp) 3)) (setq rotlist (append (cdr rotlist)(list (car rotlist)))) (princ (strcat "\rChoose rotation angle<" (itoa (car rotlist)) "> : "))) ;enter,space,r-mouse ((or (equal inp '(2 13)) (equal inp '(2 32))(= (car inp) 25)) (command "rotate" ss1 "" CtrPt (car rotlist))(setq loop nil)) ;x or X ((member inp '((2 88)(2 120)))(setq loop nil)) ) ) ) ) ) ) (setvar "CMDECHO" 1) (princ) ) and of course this can be easily modified to capture numbers 1-9 (or 0) to specify your desired angle or to instandly rotate. gr. Rlx Edited September 27, 2015 by rlx Quote Link to comment Share on other sites More sharing options...
antoniusxylem Posted September 28, 2015 Author Share Posted September 28, 2015 just for fun (defun c:rot13 ( / rot-list loop ss1 ctrpt inp) (vl-load-com) (setq rotlist (list 45 90 135 180 225 270) loop t) (setvar "cmdecho" 0) (if (and (setq ss1 (ssget)) (setq ctrpt (getpoint "\npick the rotation point:... "))) (progn (princ "\ncycle angle with tab or l-mouse / accept use enter,space or r-mouse / esc or x for exit") (princ (strcat "\nchoose rotation angle<" (itoa (car rotlist)) "> : ")) (while loop (setq inp (vl-catch-all-apply 'grread (list nil 8 0))) (if (vl-catch-all-error-p inp) (progn (princ "\nrotation function cancelled")(setq loop nil)) (progn (cond ;tab ((or (equal inp '(2 9))(= (car inp) 3)) (setq rotlist (append (cdr rotlist)(list (car rotlist)))) (princ (strcat "\rchoose rotation angle<" (itoa (car rotlist)) "> : "))) ;enter,space,r-mouse ((or (equal inp '(2 13)) (equal inp '(2 32))(= (car inp) 25)) (command "rotate" ss1 "" ctrpt (car rotlist))(setq loop nil)) ;x or x ((member inp '((2 88)(2 120)))(setq loop nil)) ) ) ) ) ) ) (setvar "cmdecho" 1) (princ) ) and of course this can be easily modified to capture numbers 1-9 (or 0) to specify your desired angle or to instandly rotate. Gr. Rlx i must remember this code! Quote Link to comment Share on other sites More sharing options...
rlx Posted September 28, 2015 Share Posted September 28, 2015 gr. Rlx 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.