i got to script rotate basepoint block en rotate basepoint atribute.
can some one help mee join these to script in one so ony select block en al rotate in the same direction.
than i got 3/5 problems fixt

so i just need to enter one time the rotation.

rotate basepoint block
Code:
; Define the function (the program).
(defun c:rotatebasepoint ( / SS1 ANG1 OBJ I PT1 OLDCE OLDERR OLDTE)
  ; Save the current value of cmdecho then redefine it.
  (setq OLDCE (getvar "cmdecho"))
  (setvar "cmdecho" 1)
  ; Save the current value of texteval then set it to 1
  (setq OLDTE (getvar "texteval"))
  (setvar "texteval" 1)
  ; Save the current value of the error handling subroutine then redefine it.
  (setq OLDERR *error*)
  (defun *error* (errmes)
    (princ (strcat "\nExecution of ROT-MANY halted by the following error: " ERRMES))
    (setvar "cmdecho" OLDCE)
    (setq *error* OLDERR)
    (prin1)
  )
  ;(setq *error* nil)
  ; NOTE: to turn error handling off, erase the semicolon in the line above.

  ; GET a SELECTION from the user and store it in SS1.
  (princ "\nSelect objects to rotate: ")
  (setq SS1 (ssget))

  ; GET a DEGREES from the user and store it in ANG1.
  (setq ANG1 (getangle "\nAngle of rotation: "))
  (setq ANG1 (* (/ ANG1 PI) 180.0))

  ; BEGIN LOOP loop1.
  ; LOOP by STEPPING THROUGH the OBJECTS of SELECTION-SET SS1, reading them into OBJ.
  (setq I -1)
  (while (setq OBJ (ssname SS1 (setq I (1+ I))))

    ; EXTRACT the Start point from the entity OBJ and store it in PT1.
    (setq PT1 (cdr (assoc 10 (entget OBJ))))

    ; Input to AutoCAD's command line.
    (command
      "rotate"
      OBJ
      ""
      PT1
      ANG1
    )

  ) ; END LOOP loop1.
  ; Reset "cmdecho" to previous value.
  (setvar "cmdecho" OLDCE)
  ; Reset "texteval" to previous value.
  (setvar "texteval" OLDTE)
  ; Reset *error* to previous definition.
  (setq *error* OLDERR)
  ; Exit quietly (no return value.)
  (prin1)
)
rotate atribubutes
Code:
(defun c:rotateatribute(/ blSet attLst errCount oldAng)
(if(not atrot:rAng)(setq atrot:rAng 0))
(setq oldAng atrot:rAng
atrot:rAng
(getangle
(strcat "\nSpecify rotation angle <"(angtos atrot:rAng)">: ")))
(if(not atrot:rAng)(setq atrot:rAng oldAng))
(princ "<<< Select blocks to rotate attributes >>>")
(setq errCount 0)
(if
(setq blSet(ssget '((0 . "INSERT")(66 . 1))))
(progn
(setq blSet(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex blSet)))))
(foreach itm blSet
(setq attLst
(vlax-safearray->list
(vlax-variant-value
(vla-GetAttributes itm))))
(foreach att attLst
(if(vl-catch-all-error-p
(vl-catch-all-apply
'vla-put-Rotation(list att atrot:rAng)))
(setq errCount(1+ ErrCount))
); end if
); end foreach
); end foreach
); end progn
(princ ">>> Nothing selected! <<<")
); end if
(if(/= 0 errCount)
(princ
(strcat "\n>>> "
(itoa errCount)
" attributes or blocks were on locked layer! <<< "))
); end if
(princ)
); end of c:atrot