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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Зафиксировать угол атрибута блока относительно оси

Зафиксировать угол атрибута блока относительно оси

Ответ
Поиск в этой теме
Непрочитано 02.09.2015, 17:48 #1
Зафиксировать угол атрибута блока относительно оси
akullaaa
 
Регистрация: 08.07.2014
Сообщений: 21

Добрый день, друзья!

Не смог найти инфу по этому теме. Может направите в нужную тему.

Суть такая: есть блок в котором есть атрибут, надо чтобы он был всегда в горизонтальном положении как бы этот блок не крутили на плане.
Пояснение: Я могу сделать динамический блок чтобы он крутился, а атрибут нет и тем самым решить эту задачу. Но мне удобно пользоваться стандартными инструментами автокада для поворота.

Нашёл тему отражающую вопрос: http://forum.dwg.ru/showthread.php?t=28269 Но там он решается с помощью VBA и с преобразованием существующих блоков, а хочется чтобы при вставке блока "уже всё было" ))

Мой AutoCAD 2015.
Просмотров: 6219
 
Непрочитано 02.09.2015, 17:50
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Так там же предложили сделать дин.блок... ИМХО самое простое решение будет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.09.2015, 18:10
#3
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Так там же предложили сделать дин.блок... ИМХО самое простое решение будет.
Предложили. Это так. Я могу его сделать. Но вопрос весь в том чтобы при повороте блока стандартными инструментами атрибут оставался под углом 0 градусов к оси, то бишь не крутился вместе с блоком. А этого там не написано.
akullaaa вне форума  
 
Непрочитано 02.09.2015, 18:19
#4
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,919


Задать атрибуту текстовый стиль с аннотативностью и с ориентацией текста по листу. (Подойдет, если текст нужен строго горизонтально.)
engngr вне форума  
 
Автор темы   Непрочитано 03.09.2015, 12:36
#5
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Цитата:
Сообщение от engngr Посмотреть сообщение
Задать атрибуту текстовый стиль с аннотативностью и с ориентацией текста по листу. (Подойдет, если текст нужен строго горизонтально.)
А если мне не надо чтобы текст был аннотативный? Т.е. на разных масшатабах этот текст в блоке должен быть по размеру одинаков.
akullaaa вне форума  
 
Непрочитано 03.09.2015, 12:55
#6
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


Программно блок крутить и угол атрибуту задавать.
Щас пороюсь, где-то было..

----- добавлено через ~12 мин. -----
вот

Код:
[Выделить все]
 ;;;;;;;;;;;;;;;;;;;; Функция поворота блока  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:rr (/ )
    (defun *error* (msg)
    (setvar "cmdecho" oldEcho)
    (setvar "nomutt" 0)
  ) ;_ end defun
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq block (ssget "_:S" '((0 . "INSERT"))))
  (setq block_name (ssname block 0))
  (setq block_koord (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name)))))
  (setq ang (* (cdr (assoc 50 (entget block_name))) (/ -180.0 pi)))
  (command "_rotate" block_name "" block_koord ang)
  (command "_.rotate"
           block_name
           ""
           (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name))))
           pause
  ) ;_ end of command
;;;   
(kpblc-attr-rot block_name '(("*" . 0))) ; повернуть атрибуты
    
;;;  (c:am)  ; переместить атрибут, если надо
  
  (setvar "cmdecho" oldEcho) ;
  (princ)
)

 ;;;;;;;;;;;;;;;;;;;; Функция поворота аттрибута после вставки ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun kpblc-attr-rot (block ang-list / ang) ;block -имя примитива
    ;ang-list -список типа '(("STROKA_1" . 0 )  ("STROKA_2" . 60 ) ("STROKA_3" . 90 ))
  (foreach x (vlax-safearray->list
               (vlax-variant-value
                 (vla-getattributes (setq block (vlax-ename->vla-object block))) ;_ vla-GetAttributes
               ) ;_ vlax-variant-value
             ) ;_ vlax-safearray->list
    (cond ((= (vla-get-invisible x) :vlax-true))
          ((= (vla-get-constant x) :vlax-true))
          ((setq ang (assoc (vla-get-tagstring x) ang-list))
           (if (cdr ang)
             (vla-put-rotation x (* (cdr ang) (/ pi 180)))
             (vla-put-rotation x (vla-get-rotation block))
           ) ;_ if
          )
          (t
           (vla-put-rotation
             x
             (* (/ (angle (trans '(0.0 0.0) 1 0) (trans '(1.0 0.0) 1 0)) ;_ angle
                   pi
                ) ;_ /
                180
             ) ;_ *
           ) ;_ vla-put-rotation
          )
    ) ;_ cond
  ) ;_ foreach
) ;_ defun
 
;;;пример вызова
;;;(kpblc-attr-rot (car (entsel))
;;;    '(("STROKA_1" . 30) ("STROKA_2" . 60) ("STROKA_3" . 90) ("STROKA_4" . nil))
;;;) ;_ kpblc-attr-hor
Nike вне форума  
 
Автор темы   Непрочитано 03.09.2015, 13:20
#7
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Цитата:
Сообщение от Nike Посмотреть сообщение
Программно блок крутить
Мне хочется крутить блок СТАНДАРТНЫМИ инструментами.

Но за пример спасибо. Правда пока не понимаю куда его девать.
akullaaa вне форума  
 
Непрочитано 03.09.2015, 13:47
#8
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,919


Цитата:
Сообщение от akullaaa Посмотреть сообщение
Мне хочется крутить блок СТАНДАРТНЫМИ инструментами.
Бред.
engngr вне форума  
 
Автор темы   Непрочитано 03.09.2015, 13:52
#9
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Цитата:
Сообщение от akullaaa Посмотреть сообщение
Цитата:
Сообщение от akullaaa
Мне хочется крутить блок СТАНДАРТНЫМИ инструментами.
Цитата:
Сообщение от engngr Посмотреть сообщение
Бред.
Хм. Слушаю внимательно. Может я чего не понимаю.
akullaaa вне форума  
 
Непрочитано 03.09.2015, 14:02
#10
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,919


Не понимаете, что вещи работают стандартно так, как они работают стандартно, в т.ч. и autocad. Если _rotate поворачивает вхождение блока с атрибутом, то атрибут, входя в блок, также будет повёрнут.
Вы бы показали свой блок и что хотите, так, возможно, будет понятнее, возможно обойтись обычными средствами или нет.
engngr вне форума  
 
Автор темы   Непрочитано 03.09.2015, 14:15
#11
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Цитата:
Сообщение от engngr Посмотреть сообщение
Не понимаете, что вещи работают стандартно так, как они работают стандартно, в т.ч. и autocad. Если _rotate поворачивает вхождение блока с атрибутом, то атрибут, входя в блок, также будет повёрнут.
Вы бы показали свой блок и что хотите, так, возможно, будет понятнее, возможно обойтись обычными средствами или нет.
Прекрасно понимаю. Что весь блок поворачиваается. И соотсно атрибут. Прикладываю блок. В файле слева блок повернут динамически, а справа стандартными инструментами.
Миниатюры
Нажмите на изображение для увеличения
Название: поворот атрибута.PNG
Просмотров: 280
Размер:	33.3 Кб
ID:	156237  
Вложения
Тип файла: dwg
DWG 2013
поворот атрибута.dwg (93.0 Кб, 693 просмотров)
akullaaa вне форума  
 
Непрочитано 03.09.2015, 14:46
#12
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,919


Написал же, как.
поворот атрибута ed.dwg
engngr вне форума  
 
Непрочитано 03.09.2015, 14:50
#13
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


akullaaa, о том и речь - "стандартными средствами" блок поворачивается только целиком, со всеми потрохами.

А вот как блок поворачивается вышеприведенной прогрраммулиной:
Вложения
Тип файла: zip 1.zip (577.3 Кб, 30 просмотров)
Nike вне форума  
 
Автор темы   Непрочитано 03.09.2015, 14:57
#14
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Я так понимаю что правильно понял. Но при изменении масштаба видового экрана изменяется и атрибут при таком подходе. Аннотативность я использую на листах.
Миниатюры
Нажмите на изображение для увеличения
Название: стиль аннотативн.PNG
Просмотров: 193
Размер:	29.6 Кб
ID:	156249  Нажмите на изображение для увеличения
Название: смена масштаба объекта.PNG
Просмотров: 156
Размер:	39.8 Кб
ID:	156250  
akullaaa вне форума  
 
Непрочитано 03.09.2015, 15:00
#15
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,919


Цитата:
Сообщение от akullaaa Посмотреть сообщение
Но при изменении масштаба видового экрана изменяется и атрибут при таком подходе.
Изображение атрибута будет меняться и без такого подхода.

upd: ANNOAUTOSCALE уберите.

Последний раз редактировалось engngr, 03.09.2015 в 15:06. Причина: upd
engngr вне форума  
 
Автор темы   Непрочитано 03.09.2015, 15:02
#16
akullaaa


 
Регистрация: 08.07.2014
Сообщений: 21


Цитата:
Сообщение от Nike Посмотреть сообщение
akullaaa, о том и речь - "стандартными средствами" блок поворачивается только целиком, со всеми потрохами.

А вот как блок поворачивается вышеприведенной прогрраммулиной:
Это ж получается надо кажды раз применять поворот для блока после того как его поставил. А автоматически при вставке блока это возможно делать?
akullaaa вне форума  
 
Непрочитано 03.09.2015, 19:06
1 | #17
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


в комплекте Express Tools к AutoCAD существует команда torient, которая работает с тестами и атрибутами блоков, поворачивая их на угол, указанный мышкой (две точки) или введённый с клавиатуры

Последний раз редактировалось Хмурый, 03.09.2015 в 19:12.
Хмурый вне форума  
 
Непрочитано 03.09.2015, 19:18
#18
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


Цитата:
Сообщение от akullaaa Посмотреть сообщение
Это ж получается надо кажды раз применять поворот для блока после того как его поставил. А автоматически при вставке блока это возможно делать?
Можно, но тогда блок тоже придется программно вставлять.
Nike вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Зафиксировать угол атрибута блока относительно оси



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Угол поворота атрибута в составе блока rzinnurov AutoCAD 15 18.10.2017 08:08
Изменение значения атрибута в составе блока rzinnurov Программирование 27 06.12.2013 17:50
Решено: Странный угол мировой кс относительно курсора YRat AutoCAD 1 12.12.2012 15:30
lisp из autocad 2004 некорректно выполняется в autocad 2008 sid_geo LISP 13 11.10.2012 11:20
Поворот примитивов на заданный угол относительно собственной базовой точки в AutoCAD LT cancercat AutoCAD 2 25.11.2009 17:21