Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

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

Угол поворота атрибута в составе блока

Ответ
Поиск в этой теме
Непрочитано 19.12.2008, 12:03 #1
Угол поворота атрибута в составе блока
rzinnurov
 
Регистрация: 07.06.2008
Сообщений: 199

Помогите, очень надо: как для атрибута задать, чтобы при повороте блока, содержащего данный атрибут, угол поворота самого атрибута оставался неизменным 0град
Просмотров: 9454
 
Непрочитано 19.12.2008, 13:43
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Боюсь без лиспа тут сложно будет.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 19.12.2008, 14:15
#3
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Вот простенький VBA-шный макрос, просит выбрать блоки и угол поворота всех вхождений атрибутов устанавливает в 0.
Код:
[Выделить все]
Option Explicit

Private Sub Main()
on error resume next
Dim acSelSet As AcadSelectionSet, objBlk, Attr1, Attr, u_pov As Double
Set acSelSet = SelectOnlyOnScreen
u_pov = 0
For Each objBlk In acSelSet
  If TypeOf objBlk Is AcadBlockReference Then
       Attr1 = objBlk.GetAttributes
    For Each Attr In Attr1
            Attr.Rotation = u_pov
    Next
  End If
Next
End
End Sub
Public Function SelectOnlyOnScreen() As AcadSelectionSet
Dim objSelSet As AcadSelectionSet
Dim objSelCol As AcadSelectionSets
Dim intType(0) As Integer
Dim varData(0) As Variant
Set objSelCol = ThisDrawing.SelectionSets
For Each objSelSet In objSelCol
If objSelSet.Name = "Only" Then
objSelSet.Delete
Exit For
End If

Next
Set objSelSet = ThisDrawing.SelectionSets.Add("Only")
intType(0) = 0
varData(0) = "INSERT"
objSelSet.SelectOnScreen intType, varData
Set SelectOnlyOnScreen = objSelSet
End Function
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 19.12.2008, 14:54
#4
rzinnurov


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


AlexV, спс. А можно выложить сам файлик VBA? Или объяснить каким образом подгрузить этот макрос. А то чего-то не пашет.
rzinnurov вне форума  
 
Непрочитано 19.12.2008, 15:02
#5
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Еще проще, макрос на кнопку:

Код:
[Выделить все]
*^C^C_-Attedit;;;;;\;_Angle;0;;
Но возможно лучше просто динамический блок сделать там это возможно.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 19.12.2008, 15:04
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Меню Акада "Сервис" -> "Макросы"->"Диспетчер VBA", в появившимся окне - кнопка "Новый", затем "Редактор VBA"
В окне редактора VBA меню Insert -> "Module", и вставляешь вышеприведенный код. Далее сохранить как проект DVB, а на кнопку повесить макрос типа

^C^C-vbarun Name.dvb!Module1.main

, где Name.dvb - имя файла. Сохранен должен быть файл в папку, добавленную в настройках - в "путь доступа к вспомогательным файлам"
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 19.12.2008, 15:48
#7
AlphaGeo


 
Сообщений: n/a


Поддерживаю мнение Krieger. Если не принципиально, каким образом нужно повернуть "содержимое" блока, то в этом случае проще создать дин.блок.
 
 
Автор темы   Непрочитано 19.12.2008, 16:09
#8
rzinnurov


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


Блоков много, они повернуты в разные стороны, под разным углом. Получается что в каждом блоке надо выставлять значение атрибута угол поворота - 0, что долго и нудно. Хотелось бы как-то сразу выровнять все. Создавал дин.блок, но это не совсем то, т.к. приходиться выбирать из сотни блоков те, которые необходимо повернуть.
Krieger спс, но проблемма в том, то если я, в процессе работы поменяю атрибут, и нажму синхронизацию арибутов, все углы поворота слетят, опять все 150 блоков поочередно тыкать?
AlexV сделал все по вашим рекомендациям, пишет что макрос не загружаеся или макрос не найден.
Вот файлик, просьба протестировать его, в чем мой косяк?
Вложения
Тип файла: dvb Name.dvb (32.0 Кб, 119 просмотров)

Последний раз редактировалось rzinnurov, 19.12.2008 в 16:39.
rzinnurov вне форума  
 
Непрочитано 19.12.2008, 16:44
#9
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от rzinnurov Посмотреть сообщение
Блоков много, они повернуты в разные стороны, под разным углом. Получается что в каждом блоке надо выставлять значение атрибута угол поворота - 0, что долго и нудно. Хотелось бы как-то сразу выровнять все. Создавал дин.блок, но это не совсем то, т.к. приходиться выбирать из сотни блоков те, которые необходимо повернуть.
AlexV сделали все по вашим рекомендациям, пишет что макрос не загружаеся или макрос не найден.
Вот файлик, просьба протестировать его, где мой косяк?
Посмотрю, когда буду дома. На работе качать вложенные файлы с недавних пор админами нашими запрещено. А что, ругается при запуске с кнопки? Тогда скорее всего или макрос на кнопке не верно записан, или файл dvb лежит в папке, путь к которой не прописан в настройках акада. Тогда надо Настройки > Файлы > Путь доступа к вспомогательным файлам > добавить - эту папку. А проверить работу самого макроса можно загрузив вручную: меню автокада "сервис" - "макросы" - "загрузить проект", потом alt + F8 и выполнить.
А кстати, что - *^C^C_-Attedit;;;;;\;_Angle;0;; из #5 не работает? Там вроде никакого VBA не нужно.
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 19.12.2008, 22:31
#10
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Посмотрел. Блин, косячок-то мой! В коде надо
Private Sub Main()
изменить на
Sub Main()
Private здесь совершенно ни к чему...
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 20.12.2008, 03:08
#11
Vova

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


Поворачивать атрибут в 0 при любом угле блока, и чтобы он всегда оставался в центре, можно только если геометрия блока симметричная, атрибут всегда имеет определенное количество букв, и не больше максимального, расчитанного на эту геометрию. Justification должна быть MC. Поэтому это может быть только частным случаем
Vova вне форума  
 
Непрочитано 20.12.2008, 12:48
#12
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Vova Посмотреть сообщение
Поворачивать атрибут в 0 при любом угле блока, и чтобы он всегда оставался в центре, можно только если геометрия блока симметричная, атрибут всегда имеет определенное количество букв, и не больше максимального, расчитанного на эту геометрию. Justification должна быть MC. Поэтому это может быть только частным случаем
Ну, честно говоря, да. Если выравнивание будет иным, угол атрибута изменится в 0, но он "сместится". Что бы это учесть, надо код усложнять. В принципе, реализуемо.
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 22.12.2008, 11:41
#13
rzinnurov


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


Цитата:
Сообщение от AlexV;
А кстати, что - *^C^C_-Attedit;;;;;\;_Angle;0;; из #5 не работает? Там вроде никакого VBA не нужно.
Цитата:
Сообщение от rzinnurov;
Krieger спс, но проблемма в том, то если я, в процессе работы поменяю атрибут, и нажму синхронизацию арибутов, все углы поворота слетят, опять все 150 блоков поочередно тыкать?
Работает, да только единично. А нада все и сразу
AlexV, Теперь файлик работает! Огромное спасибо, это именно то что надо.
Цитата:
Сообщение от AlexV;
Если выравнивание будет иным, угол атрибута изменится в 0, но он "сместится". Что бы это учесть, надо код усложнять. В принципе, реализуемо.
В моем чертеже атрибут блока, отображает позицию в спецификации, а также задан однострочным текстом, с привязкой середина по центру. Поэтому в моем случае, атрибут не "улетает" за пределы блока.
Всем спасибо! А то бы поворачивал я эти атрибуты каждый день с утра до обеда
rzinnurov вне форума  
 
Непрочитано 16.10.2017, 15:26
#14
Wer666


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


Что бы не создавать новую тему - спрошу в этой. Как сделать 3D-поворот атрибута в составе блока. Когда сохраняю блок с 3D-повернутым атрибутом он все равно отображается в плоскости X0Y. Чертеж прикладываю.
Вложения
Тип файла: dwg
DWG 2010
AttPoint_Block.dwg (84.8 Кб, 17 просмотров)
Wer666 вне форума  
 
Непрочитано 16.10.2017, 15:49
#15
Кулик Алексей aka kpblc
Moderator

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


_.attsync выполнял? (файл не скачивал)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.10.2017, 08:08
#16
Wer666


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
_.attsync выполнял? (файл не скачивал)
Сначала выполнил 3D-поворот блока в модели, что бы он вместе с атрибутом стал читаемым в плоскости X0Z. После этого выполнил команду "_.attsync". Вставил блок через вставку блока - рисунок стал в плоскости X0Z, а атрибут так и остался в плоскости X0Y(
Может быть вообще не возможно атрибут повернуть в плоскость X0Z?
Wer666 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Угол поворота атрибута в составе блока

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание атрибута для блока Рyslan AutoCAD 56 14.10.2011 11:32
Удаление атрибута из блока Малюк AutoCAD 2 16.09.2007 20:47
Угол поворота текста sqr(max) Программирование 2 04.07.2007 10:33
Угол поворота Viewport plaz AutoCAD 15 05.12.2006 02:27