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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Выравнивание атрибута смещает точку вставки атрибута. Как победить?

VBA. Выравнивание атрибута смещает точку вставки атрибута. Как победить?

Ответ
Поиск в этой теме
Непрочитано 10.01.2025, 13:30 #1
VBA. Выравнивание атрибута смещает точку вставки атрибута. Как победить?
posetitel
 
Регистрация: 16.10.2013
Сообщений: 395

Вопрос про создание блока с атрибутом на VBA.
Атрибут в блока добавляется, но когда применяю команду выровнять текс по центру, точка вставки атрибута смещается в точку вставки блока, а нужно чтобы точка вставки атрибута осталась где и была, просто текст выравнивался не как по умолчанию влево, а по центру. Я даже принудительно пытался дополнительно задать точку вставки атрибута после выравнивания текста, все равно не помогает. Как сделать выравнивание текста атрибута без смещения точки вставки?
Код:
[Выделить все]
 Sub CreateAdjacencyMatrixFromAutoCAD()
    Dim plinePoint(0 To 9) As Double
    Dim plineCenterPoint1(0 To 3) As Double
    Dim plineCenterPoint2(0 To 3) As Double
    Dim pline As AcadLWPolyline
    Dim blockName As String
    Dim blockDef As Object
    Dim attributeValue As String
    Dim attributeDef As AcadAttribute
    Dim basePoint(0 To 2) As Double
    Dim insertionPoint(0 To 2) As Double
    Dim attPoint(0 To 2) As Double
    Dim newBlock As AcadBlock
    
    plinePoint(0) = -40
    plinePoint(1) = 0
    plinePoint(2) = 40
    plinePoint(3) = 0
    plinePoint(4) = 40
    plinePoint(5) = 50
    plinePoint(6) = -40
    plinePoint(7) = 50
    plinePoint(8) = -40
    plinePoint(9) = 0
    attributeValue = "Текст_для_теста"
    blockName = "Блок_для_теста"
    
    ' проверка наличия блока в чертеже
    Call BlockExists(blockName)
   
    Set newBlock = ThisDrawing.Blocks.Add(basePoint, blockName)
    Set pline = newBlock.AddLightWeightPolyline(plinePoint)
    Dim attributeParam As Integer
    attributeParam = 0
    attPoint(0) = 20
    attPoint(1) = 20
    attPoint(2) = 20
    Set attributeDef = newBlock.AddAttribute(2.5, attributeParam, "Описание_аттрибута", attPoint, "Tag1", attributeValue)
    ' строчку ниже можно закомментировать
    attributeDef.Alignment = acAlignmentMiddleCenter  ' Горизонтальное выравнивание по центру
    attributeDef.insertionPoint = attPoint
    attributeDef.Update
    insertionPoint(0) = 10
    insertionPoint(1) = 10
    insertionPoint(2) = 10
    ThisDrawing.ModelSpace.InsertBlock insertionPoint, blockName, 1#, 1#, 1#, 0#
    Set attributeDef = Nothing
    Set blockDef = Nothing
    Set acadDoc = Nothing
    Set acadApp = Nothing
End Sub
Просмотров: 613
 
Непрочитано 10.01.2025, 13:43
1 | 1 #2
Кулик Алексей aka kpblc
Moderator

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


Проверяй TextAlignmentPoint
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.01.2025, 14:04
#3
posetitel


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


Спасибо. Тему можно и закрывать )
posetitel вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Выравнивание атрибута смещает точку вставки атрибута. Как победить?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить точку вставки блока Apelsinov AutoCAD 43 04.02.2022 18:34
Как получить координаты точки вставки атрибута, используя GetAttributes june Программирование 2 20.04.2012 06:42
Как поменять базовую точку вставки? PSG AutoCAD 10 09.07.2010 10:59
Как исправить точку вставки объекта из буфера обмена? Svet@ AutoCAD 1 27.06.2007 15:38
Как задать точку вставки элемента? Александер Программирование 24 24.10.2005 12:53