Быстрый разворот линии на 180 градусов.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Быстрый разворот линии на 180 градусов.

Быстрый разворот линии на 180 градусов.

Ответ
Поиск в этой теме
Непрочитано 17.03.2010, 20:25 #1
Быстрый разворот линии на 180 градусов.
Volodich
 
проектировщик-электрик
 
Челябинск
Регистрация: 20.12.2007
Сообщений: 475

Здравствуйте!
Много работаю с сетями, а там на генплане тип линий типа: ---W1---.
И если линия начерчена не слева направо, а наоборот, то буквы получаются вверх тормашками. Чтобы это исправить, приходится каждую линиию вручную разворачивать относительно ее же центра на 180 градусов.
Прошу помощи в автоматизации сей нелегкой задачи.
Я думал обойтись макросом, но не придумал как туда включить центр линии. Видимо необходим лиспик...
Хотя интересны любые идеи!
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Просмотров: 4024
 
Непрочитано 17.03.2010, 20:30
#2
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Команды
ENTREVS -Реверс объекта
ENTREV -Реверс объектов (множественный выбор)
из pltools тебе помогут
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 17.03.2010, 20:41
#3
Volodich

проектировщик-электрик
 
Регистрация: 20.12.2007
Челябинск
Сообщений: 475


Цитата:
Неизвестная команда "ENTREV". Для вызова справки нажмите F1.
Странно, а вроде ставил... а, спутал с экспресс тулз

Offtop: Почему-то когда создаешь тему, внизу приводятся "похожие темы". Причем часто неплохие. А вот поиск ничего подобного не выдает.
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Volodich вне форума  
 
Непрочитано 17.03.2010, 20:50
#4
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Да и к стати, если что в 2010 AutoCADе появилась команда _reverse (Обратить)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 19.03.2010, 03:01
#5
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Цитата:
Сообщение от Disney Посмотреть сообщение
Да и к стати, если что в 2010 AutoCADе появилась команда _reverse (Обратить)
Интересно, это наши локализаторы так перевели каманду? Это что, обратить в новую веру?
А вот LINGVO такого не дает ни в одном из словарей. Кто прав?

перевод из lingvo x3:
reverse [rɪ'vɜːs]

1. 1) а) перевёртывать, переворачивать; опрокидывать; ставить с ног на голову - reverse arms б) давать задний или обратный ход; реверсировать 2) а) поворачиваться в противоположном направлении, разворачиваться б) поворачивать в противоположном направлении, разворачивать 3) изменять, менять; изменять на прямо противоположное to reverse a policy — круто изменить политику to reverse the order — поставить в обратном порядке Positions are reversed. — Позиции переменились. 4) аннулировать, отменять Syn: revoke , abrogate , undo • - reverse the charges

2. 1) противоположный Syn: opposite , contrary 2. 2) а) перевёрнутый б) обратный, оборотный, инвертированный - reverse motion Syn: back , return в) реверсный, задний - reverse gear 3) тыльный - reverse fire

3. 1) противоположное, обратное Syn: opposite , contrary 1. 2) а) реверс, оборотная сторона (медали, монеты и т.п.) б) версо, оборотная сторона листа (книги, рукописи) Syn: back Ant: obverse 3) а) неудача, превратность serious reverse — серьёзная неудача tactical reverse — тактический провал financial reverses — финансовые просчёты to meet with / suffer / sustain a reverse — терпеть неудачу - experience reverses - have reverses б) поражение, провал в) перемена (к худшему) • Syn: disaster 4) а) задний или обратный ход б) реверс; задняя передача 5) тыл - take in the reverse 6) тупой конец копья Syn: butt 7) реверси (карточная игра)

И примерно тоже по всем словарям.
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 19.03.2010, 07:05
#6
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от KAI Посмотреть сообщение
А вот LINGVO такого не дает ни в одном из словарей
А если пойти обратным ходом?
[IMG]http://i072.***********/1003/89/64c0eb26a4d8.jpg[/IMG]
[IMG]http://s04.***********/i177/1003/f0/2ece6685c812.jpg[/IMG]
Сейчас, стали нормально переводить, помню раньше в году 2002, принципиально не устанавливали локализованную, из-за неадекватного(машинного) перевода
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 19.03.2010, 12:13
#7
Volodich

проектировщик-электрик
 
Регистрация: 20.12.2007
Челябинск
Сообщений: 475


понятно... пора ставить 10й акад
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Volodich вне форума  
 
Непрочитано 19.03.2010, 14:14
#8
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от Disney Посмотреть сообщение
понятно... пора ставить 10й акад
Уже 2011 пора....
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 19.03.2010, 15:50
#9
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Код:
[Выделить все]
;;; Library functions 
;;;---------------------------------------------- 
(defun ru-error-catch 
       (protected_expression on_error_expression / catch_error_result) 
  (setq catch_error_result 
         (vl-catch-all-apply protected_expression) 
  ) ;_ end of setq 
  (if (and (vl-catch-all-error-p catch_error_result) 
           on_error_expression 
      ) ;_ end of and 
    (apply on_error_expression 
           (list (vl-catch-all-error-message catch_error_result)) 
    ) ;_ end of apply 
    catch_error_result 
  ) ;_ end of if 
) 
;;;---------------------------------------------- 
(defun _ru-get-ent-default (message       default_str   quoted_get_func esc_enabled 
                            /             result        question 
                            lst_params    key_str 
                           ) 
  (if default_str 
    (setq 
      question (strcat "\n" message " <" default_str ">: ") 
    ) ;_ end of setq 
    (setq 
      question (strcat "\n" message ": ") 
    ) ;_ end of setq 
  ) ;_ end of if 
  (setq lst_params (list question) 
   end nil      
        ) 
   (while 
   (not end) 

   (ru-error-catch 
    (function (lambda () 
        (cond ((and initget_param keywords) 
               (initget initget_param (strcat keywords alt_key_str)) 
              ) 
              ((not (null initget_param)) 
               (initget initget_param) 
              ) 
              ((not (null keywords)) 
               (initget (strcat keywords alt_key_str)) 
              ) 
        ) ;_ end of cond 

        (setq result (vl-catch-all-apply quoted_get_func lst_params) 
              end T) 
          result      
                      
              ) ;_ end of lambda 
    ) ;_ end of function 
    ;;executes if mistaces 
      (function 
       (lambda (msg) 
        (if esc_enabled 
         (setq result nil 
               end t 
         ) ;_ end of setq 
         (progn 
         (princ "\nNo ESC") 
          (setq ;;result nil 
               end NIL 
         ) 
         ) 
        ) ;_ end of if 
        (princ) 
       ) ;_ end of lambda 
      ) ;_ end of function 
  
   ) ;_ end of ru-error-catch 
 ) ;_ end of while 
  result 
) ;_ end of defun 
;;;---------------------------------------------- 
(defun ru-get-entsel (message) 
  ;; (ru-get-entsel "Select object!") 
  ;; ????????? ??? ?????????? ?????????? ? ????????? ? ????? 
  ;; ?????????? 
  ;; ?????????? ???????? ? ????? ???????? 
  (_ru-get-ent-default message "Exit" '_ru-get-entsel-no-error T) 
) 
;;;---------------------------------------------- 
(defun _ru-get-entsel-no-error (message / ent) 
  ;; (_ru-get-entsel-no-error "select object") 
  (setvar "errno" 0) 
  (while 
    (and 
      (not (setq ent (entsel (strcat "\n" message))) ;) 
      ) ;_ end of not 
      (equal 7 (getvar "errno")) 
      ;;mistakes while selecting 
      ;; layer locked 
    ) ;_ end of and 
     (setvar "errno" 0) 
  ) ;_ end of while 
  (cond 
    ((equal (getvar "errno") 52) 
     ;; ?????? ????? 
     nil 
    ) 
    (t 
     (list (car ent) (trans (cadr ent) 1 0)) 
    ) 
  ) ;_ end of cond 
) 
;;;---------------------------------------------- 
(defun ru-get-entsel-by-type 
                             (message     msg_err_types 
                              list_types  no_locked   / 
                              ent         ent_type    bad_type 
                              locked      do 
                             ) 
                             ;| 
????? ????????? ? ??????????? ?????? ?????????? ???? ? ????? ?? ?? ????????????? ???? 
? ???????????? ?????? ? ? ??????????? ESC 
?????????: 
message - ????????? 
msg_err_types - ????????? ? ???????? ???? ???? ????? ?????? ?????, ????? "" 
list_types - ?????? ????????? ????? ??? NIL 
no_locked  - ????? ?? ?? ????????????? ???? -T, ?? ????? -NIL 
 (ru-get-entsel-by-type "?????? ??????? ??? ?????????" "??? ?? ??????? ? ?? ?????????" (list "LINE" "LWPOLYLINE") T) 
 (ru-get-entsel-by-type "?????? ?????? ?? ??????????????? ????" "" nil  T) 
 (ru-get-entsel-by-type "?????? ??????? ??? ????????? - ????? ?? ?????????????" "??? ?? ??????? ? ?? ?????????" (list "LINE" "LWPOLYLINE") nil) 
?????????? ??? ????????? ? ????? ???????? ??? nil ??? ?????? 
 |; 

  (setq do t) 
  (while do 
    (setq bad_type t 
          locked t 
    ) ;_ end of setq 
    (if (setq ent (ru-get-entsel message)) 
      (progn 
        (setq ent_type (cdr (assoc 0 (entget (car ent))))) 
        (if (and list_types 
                 (not (member ent_type list_types)) 
            ) ;_ end of and 
          (princ (strcat "\nmistace: selected object type '" 
                         ent_type 
                         "'. " 
                         msg_err_types 
                 ) ;_ end of strcat 
          ) ;_ end of princ 
          (setq bad_type nil) 
        ) ;_ end of if 
        (if (and no_locked 
                 (ru-layer-is-lock (cdr (assoc 8 (entget (car ent))))) 
            ) ;_ end of and 
          (princ "\nMistake: Object on locked layer") 
          (setq locked nil) 
        ) ;_ end of if 
        (setq do (or bad_type locked)) 
      ) ;_ end of progn 
      (setq do nil) 
    ) ;_ end of if 
  ) ;_ end of while 
  ent 
) ;_ end of defun 
;;;---------------------------------------------- 
(defun ru-layer-get-ent-data (name code / lst res) 
  ;; ?????????? ?????? ? ????? CODE ??? ???? NAME 
  ;; ???? ???? ?? ?????????? - NIL 
  (if (setq Lst (tblsearch "LAYER" name)) 
    (cdr (assoc code lst)) 
    nil 
  ) ;_ end of if 
) 
;;;---------------------------------------------- 
(defun ru-match-is-bit-in-flag (val flag) 
    ;; (ru-match-bit-list 127)  => (64 32 16 8 4 2 1)  
    ;; (ru-match-is-bit-in-flag  8 127) => T    
    ;; (ru-match-is-bit-in-flag  128 127) => nil    
    (= (logand val flag) val) 
) 
;;;---------------------------------------------- 
(defun ru-layer-is-lock (name / layer_data) 
  ;; (ru-layer-is-lock "0") 
  ;; (ru-layer-is-lock "Layer1") 
  ;;? ?????????????? ???? ?????? ? 
  (if (setq layer_data (ru-layer-get-ent-data name 70)) 
    (ru-match-is-bit-in-flag 4 layer_data) 
    nil 
  ) ;_ end of if 
) 
;;;---------------------------------------------- 
(defun ru-ent-dxf-code-data (dxf_code lst) 
    (cdr (assoc dxf_code lst)) 
  ) ;_ end of defun 
;;;---------------------------------------------- 
(defun ru-ent-mod (ent value bit / ent_list old_dxf new_dxf) 
  (setq ent_list (entget ent) 
        new_dxf  (cons bit 
                       (if (and (= bit 62) (= (type value) 'str)) 
                         (if (= (strcase value) "BYLAYER") 
                           256 
                           0 
                         ) ;_ end of if 
                         value 
                       ) ;_ end of if 
                 ) ;_ end of cons 
  ) ;_ end of setq 
  (if (/= new_dxf (setq old_dxf (assoc bit ent_list))) 
    (progn (entmod (if old_dxf 
                     (subst new_dxf old_dxf ent_list) 
                     (append ent_list (list new_dxf)) 
                   ) ;_ end of if 
           ) ;_ end of entmod 
           (entupd ent) 
           (redraw ent) 
    ) ;_ end of progn 
  ) ;_ end of if 
  ent 
) ;_ end of defun 
;;;---------------------------------------------- 

(defun ru-list-massoc (key alist) 
(mapcar 'cdr (vl-remove-if-not (function (lambda (x) (= key (car x)))) alist)) 
) ;_ end of defun 

;;;---------------------------------------------- 
(defun ru-ent-dxf-code-clear-list (lst list_dxf_codes is_stay_value) 
    (cond 
        ((null lst) NIL) 
        ((/= is_stay_value (= (type (member (caar lst) list_dxf_codes)) 'list)) 
         (ru-ent-dxf-code-clear-list (cdr lst) list_dxf_codes is_stay_value) 
        ) 
        (t (cons (car lst) (ru-ent-dxf-code-clear-list (cdr lst) list_dxf_codes is_stay_value))) 
    ) ;_ end of cond 
) 
;;;---------------------------------------------- 
(defun c:revpoly (/                bulge_list       end_width_list 
                  list_vertex_data num_vertex       num_width 
                  ent_data         ent_name         start_width_list 
                  vertex_count     vertex_list      ent_type 
                 ) 
  (if (setq ent_name 
             (ru-get-entsel-by-type 
               "select polylone, line or spline for revers" 
               "object invalid" 
               (list "LWPOLYLINE" "LINE" "SPLINE") 
               t 
             ) ;_ end of ru-get-entsel-by-type 
      ) ;_ end of setq 
    (progn 
      (setq ent_name (car ent_name) 
            ent_data (entget ent_name) 
            ent_type (ru-ent-dxf-code-data 0 ent_data) 
      ) ;_ end of setq 
      (cond 
        ((= ent_type "SPLINE") 
         ;; For spline revers method 
         (vla-reverse (vlax-ename->vla-object ent_name)) 
        ) 
        ((= ent_type "LINE") 
         ;;For line to exchange ends coord 
         (ru-ent-mod ent_name (cdr (assoc 11 ent_data)) 10) 
         (ru-ent-mod ent_name (cdr (assoc 10 ent_data)) 11) 
        ) 
        ((= ent_type "LWPOLYLINE") 
         (setq 
           vertex_list      (reverse (ru-list-massoc 10 ent_data)) 
           bulge_list       (mapcar 
                              '(lambda (x) (- 0 x)) 
                              (reverse (ru-list-massoc 42 ent_data)) 
                            ) ;_ end of mapcar 
           start_width_list 
                            (ru-list-massoc 40 ent_data) 
           end_width_list 
                            (ru-list-massoc 41 ent_data) 
           vertex_count     (length vertex_list) 
           num_vertex       0 
           num_width        (1- vertex_count) 
         ) ;_ end of setq 
         (repeat vertex_count 
           (setq list_vertex_data 
                  (append 
                    (list (cons 10 (nth num_vertex vertex_list))) 
;;; ------------- This order only ------------------- 
                    (list (cons 41 (nth num_width start_width_list))) 
                    (list (cons 40 (nth num_width end_width_list))) 
;;; ------------- This order only ------------------- 
                    (list (cons 42 (nth num_vertex bulge_list))) 
                    list_vertex_data 
                  ) ;_ end of append 
                 num_vertex 
                  (1+ num_vertex) 
                 num_width (1- num_width) 
           ) ;_ end of setq 
         ) ;_ end of repeat 
         ;| 
????? ?? ???????? ?? ??????????? ?? ??????????, ???????? ? ??????, ??????? 
????? ?????????????? ? ???????, ??????? ?????? ?????? ?? ?????????, ?????? ? bulge 
? ???????????? ???????? 
|; 
         (entmod (append (ru-ent-dxf-code-clear-list 
                           ent_data 
                           (list 10 40 41 42) 
                           nil 
                         ) ;_ end of ru-ent-dxf-code-clear-list 
                         (reverse list_vertex_data) 
                 ) ;_ end of append 
         ) ;_ end of entmod 
         (entupd ent_name) 
         (redraw ent_name) 
        ) ;_ end of cond 
      ) ;_ end of cond 
    ) ;_ end of progn 
  ) ;_ end of if 
  (princ) 
) ;_ end of defun

Не помню кто автор, кажется кто-то из наших, и ему спасибо. Вызывается Revpoly
Vova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Быстрый разворот линии на 180 градусов.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
LISP. Кликать по тексту и поворачивать его на 180 градусов. Джаз LISP 17 12.11.2009 09:49
"В точке ... создана линия нулевой длины" помогите разобраться Mozgunov Программирование 18 27.11.2008 01:14
Загрузка типа линии из макроса Кулик Алексей aka kpblc Программирование 4 24.01.2005 14:57