Как да зададем на всички мултилидери rotation angle 0?
Здравейте, наложи ми се да прехвърля обекти от един чертеж в друг, но чертежите са ориентирани под различен ъгъл в чертожната област. Като прехвърля мултилидерите искам да ги селектирам всичките и в Properties да им дам Rotation 0, но няма такава опция. Тъй като не бяха много на един по един им давах командата Rotate, но това е доста трудоемко. Може ли да предложите друго решение?

Здравей, Веселина.
Попринцип може да селектираш всичките мултилидери (снимка 1 позиции 1 и 2) и да ги завъртиш с Rotation (снимка 1 позиция 4) от Properties (снимка 1 позиция 3)

Това завъртане обаче не е спрямо точката на вмъкване, ами спрямо точката "на пречупване" на мултилидера - снимка 2 позиции 1 и 2.

Това ще изправи текста ти така че да стои така че в моделнто пространство при нормално ориентирана система X0Y те да се четат нормално.
Виждам че самия ти текст е доста доста близо ад линията която свързва това което посочваш и самия текст, така че ако приложиш този метод съвета ми е да избереш Landing distance (снимка 3 позиция 1) да е малко по-голяма.

Понякога този вариант върши доста добра работа.
Другият ти вариант е да ползваш този лисп
``` (defun c:rotmult () (prompt "Select Entities to Rotate, for SSX.") (setq ss (ssget)) (if (not ss) (setq ss (ssx))) (setq num (sslength ss)) (setq x 0) (if ss (if (setq ang (getreal "Enter Rotation Angle: ")) (repeat num (setq ename (ssname ss x)) (setq elist (entget ename)) (setq pnt (cdr(assoc 10 elist))) (command "Rotate" ename "" pnt ang) (setq x (1+ x)) ) ) ) )
```
и да завърташ N на брой мултилидери под определен ъгъл.
Лиспа се стартира посртедством командата rotmult , ако не си ползвала лисп програмки в тази тема тук:
има обяснение в тази насока.
Идеята е селектираш 10 на брой мултилидера и казваш, след което стартираш програмта и тя съответно те пита на какъв ъгъл спрямо базовата точка искаш да ги завъртиш. Съответно задаваш ъгъла и готово, те са завъртяни.
Тук малкия проблем е че не всички, както каза са завъртяни под един и същи ъгъл и ще трябва да ги завърташ на по отделно.
Този лисп е добре приложим когато имаш даден Layouot, мултилидерите са поставени, така че да се четат лесно в моделното пространство, НО в layout-a дадения Viewport е така завъртян, че се налага и те да се завъртят. И тук лиспа работи перфектно - селектираш мултилидерите за дадения viewport, стартираш , след това избираш ъгъла и вече са завъртяни.
Друг вариант за справяне с проблема е този липс по долу:
``` ;;; ------------------------------------------------------------------------ ;;; ZeroRotation.lsp v1.2 ;;; ;;; Copyright© 03.09.09 ;;; Alan J. Thompson (alanjt) ;;; ;;; Contact: alanjt @ TheSwamp.org, CADTutor.net ;;; ;;; Permission to use, copy, modify, and distribute this software ;;; for any purpose and without fee is hereby granted, provided ;;; that the above copyright notice appears in all copies and ;;; that both that copyright notice and the limited warranty and ;;; restricted rights notice below appear in all supporting ;;; documentation. ;;; ;;; The following program(s) are provided "as is" and with all faults. ;;; Alan J. Thompson DOES NOT warrant that the operation of the program(s) ;;; will be uninterrupted and/or error free. ;;; ;;; Set objects (Multileaders, Text, Mtext, Blocks) with a ;;; rotation of 0 (relative to current UCS). ;;; ;;; Revision History: ;;; ;;; v1.1 (10.23.09) 1. Minor rewrite for speed optimization. ;;; v1.2 (05.31.11) 1. Complete rewrite. ;;; ;;; ------------------------------------------------------------------------
(defun c:zr () (c:ZeroRotation)) (defun c:ZeroRotation (/ error AT:UCSAngle ang ss name)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUBROUTINES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun error (msg) (and AcadDoc (vla-endundomark AcadDoc)) (if (and msg (not (wcmatch (strcase msg) "BREAK,CANCEL,QUIT,"))) (princ (strcat "\nError: " msg)) ) )
(defun AT:UCSAngle (/) ;; Return current UCS angle ;; Alan J. Thompson, 04.06.10 ((lambda (x) (atan (cadr x) (car x))) (trans (getvar 'UCSXDIR) 0 (trans '(0. 0. 1.) 1 0 T) T)) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MAIN ROUTINE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(vl-load-com)
(vla-startundomark (cond (AcadDoc) ((setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))) ) )
(if (ssget "_:L" '((0 . "INSERT,MTEXT,MULTILEADER,TEXT"))) (progn (setq ang (AT:UCSAngle)) (vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*)) (cond ((vl-position (setq name (vla-get-objectname x)) '("AcDbBlockReference" "AcDbText")) (vla-put-rotation x ang) ) ((eq name "AcDbMText") (vla-put-rotation x 0.)) ((and (eq name "AcDbMLeader") (eq (vla-get-contenttype x) 2)) (vla-put-textrotation x 0.) ) ) ) (vla-delete ss) ) ) (*error* nil) (princ) ) (c:zr)
```
С него може да направиш така, че да завъртиш селектираните мултилидери в тяхната нула, спрямо координатната система която е в момента, на твоята снимка виждам че е X0Y .
Това са нещата, които мога да препоръчам.
Мерси. Ще пробвам вариантите.