Архитектору и проектировщику|Тепло- и звукоизоляция URSA.RU
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

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

VBA Autocad2015 Как удалить текст из области блока.

Ответ
Поиск в этой теме
Непрочитано 30.08.2016, 16:08 #1
VBA Autocad2015 Как удалить текст из области блока.
KomProekt
 
Регистрация: 12.08.2016
Сообщений: 59

Доброго всего!

Есть Блок, в Блоке Мтекст. Мтекст берется из Excel файла.

Код:
[Выделить все]
' Примерно так:

    Dim Shtamp As AcadBlock
    Set Shtamp = acadDoc.Blocks("Блок")
                                                                                
    Dim textShifr As AcadMText
    Dim insertPointShifr(0 To 2) As Double
    Dim widthShifr As Double
    Dim textStringShifr As String
    Dim Shifr As String

    textStringShifr = Range("F2").Value
    insertPointShifr(0) = 545: insertPointShifr(1) = 58.3: insertPointShifr(2) = 0
    widthShifr = 120
    
    Set textShifr = Shtamp.AddMText(insertPointShifr, widthShifr, textStringShifr)
    acadDoc.Regen acActiveViewport
Вопрос: как, при изменении текста в Excel, записать его в Блок и при этом удалить старый текст?

Или: удалить текст из заданной области (в которой находится старый текст) и записать новый?

Спасибо!

Последний раз редактировалось Кулик Алексей aka kpblc, 30.08.2016 в 16:27.
Просмотров: 2730
 
Непрочитано 30.08.2016, 16:36
#2
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 378


Надо полагать автор знает о существовании атрибутов в блоках, но осознанно использует именно text или mtext. Так?
art_rrc вне форума  
 
Автор темы   Непрочитано 30.08.2016, 17:17
#3
KomProekt


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


Цитата:
Сообщение от art_rrc Посмотреть сообщение
Надо полагать автор знает о существовании атрибутов в блоках, но осознанно использует именно text или mtext. Так?
Да, так.
KomProekt вне форума  
 
Непрочитано 30.08.2016, 17:39
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


мультитекст один в блоке?

----- добавлено через ~14 мин. -----
по большому счету сами себе в первом посте и написали) только выкиньте часть кода - нашли мультитекст и работаете с ним.
Сергей812 вне форума  
 
Автор темы   Непрочитано 30.08.2016, 20:41
#5
KomProekt


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
мультитекст один в блоке?

----- добавлено через ~14 мин. -----
по большому счету сами себе в первом посте и написали) только выкиньте часть кода - нашли мультитекст и работаете с ним.
Сергей, Мтекст не один, в том то и дело, что нужно удалить именно тот текст, который изменился в файле Excel.
KomProekt вне форума  
 
Непрочитано 30.08.2016, 22:35
1 | 1 #6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Тогда в силу чего игнорируете атрибуты? Не используя стандартные возможности - придется придумывать всякие костыли типа ориентации по точке вставке мультитекста
Сергей812 вне форума  
 
Непрочитано 30.08.2016, 23:59
| 1 #7
Кулик Алексей aka kpblc
Moderator

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


В принципе, никто не запрещает применение постоянных атрибутов (к примеру).
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.08.2016, 07:34
1 | 1 #8
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,063


Цитата:
Сообщение от KomProekt Посмотреть сообщение
Сергей, Мтекст не один, в том то и дело, что нужно удалить именно тот текст, который изменился в файле Excel.
у каждого объекта есть Handle, в екселе нужно хранить пару Handle-значение, поиск объекта по Handle простая задача (HandleToObject). Это конечто, если очень хочется на мтекстах остаться, хотя правильнее перейти на атрибуты
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 31.08.2016, 08:47
1 | 1 #9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Цитата:
Сообщение от Boxa Посмотреть сообщение
у каждого объекта есть Handle, в екселе нужно хранить пару Handle-значение, поиск объекта по Handle простая задача (HandleToObject). Это конечто, если очень хочется на мтекстах остаться, хотя правильнее перейти на атрибуты
чего то в голове крутиться - что внутри блоков с хэндлами не так просто. Читал где то спор на форуме или статью - что внутри блоков может быть дублирование хэндлов.

----- добавлено через ~60 мин. -----
Вот ветка форума
Сергей812 вне форума  
 
Автор темы   Непрочитано 31.08.2016, 11:00
#10
KomProekt


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
у каждого объекта есть Handle, в екселе нужно хранить пару Handle-значение, поиск объекта по Handle простая задача (HandleToObject). Это конечто, если очень хочется на мтекстах остаться, хотя правильнее перейти на атрибуты
Да, пожалуй лучше будет перейти на атрибуты.
KomProekt вне форума  
 
Непрочитано 02.09.2016, 08:57
#11
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,273
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Читал где то спор на форуме или статью - что внутри блоков может быть дублирование хэндлов.

----- добавлено через ~60 мин. -----
Вот ветка форума
Ветка правильная, а вывод неправильный. У каждого примитива в чертеже свой единственный и уникальный в этом чертеже хэндл.
Александр Ривилис вне форума  
 
Непрочитано 02.09.2016, 09:50
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Ветка правильная, а вывод неправильный. У каждого примитива в чертеже свой единственный и уникальный в этом чертеже хэндл.
да, согласен, неточная формулировка. Каждый примитив в БД чертежа имеет свой уникальный хэндл, но во вставках блока входящие неизменяющиеся примитивы (кроме атрибутов, например) - имеют один и тот же хэндл. И если автор ветки хочет править определение блока - то он поменяет содержимое мультитекста во всех вставках блока. Что врятли соответствует задаче.
Сергей812 вне форума  
 
Непрочитано 02.09.2016, 11:29
| 1 #13
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,273
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
но во вставках блока входящие неизменяющиеся примитивы (кроме атрибутов, например) - имеют один и тот же хэндл
В этой формулировке есть тоже неточность: вставка блока лишь ссылается на описание блока, но ничего не содержит (т.е. в неё ничего не входит, кроме непостоянных атрибутов).
Александр Ривилис вне форума  
 
Непрочитано 05.10.2016, 11:56
#14
zenija2007


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


Я новичек, но вот слышал о хранении расширенных табличных данных в объектах, код -3. Туда могут быть записаны собственные данные, например, формула расчета, идентификатор, ссылка на базу данных. Скрипт может прочитать эти данные и затем выполнить связанные с ними инструкции. На практике используется?
zenija2007 вне форума  
 
Непрочитано 05.10.2016, 14:02
#15
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,273
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от zenija2007 Посмотреть сообщение
На практике используется?
Что именно? Расширенные данные? Да. Используются. А вот чтобы в них кто-то формулы расчета вписывал - такого никогда не слышал. Кстати, есть ограничение в 16K расширенных данных на один объект.
Александр Ривилис вне форума  
 
Непрочитано 05.10.2016, 14:24
1 | 1 #16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,984


zenija2007, фактически для какой либо автоматизации нужно присваивать визуальным примитивам чертежа какую то дополнительную информацию. Для блоков можно использовать атрибуты, но это не универсальное решение - ту же полилинию или выноску уже не идентифицируешь. А вот с расширенными данными получается унификация - одинаковые методы добавления/модификации/поиска/удаления расширенных данных примитива, а остальная обработка информации идет уже вне БД чертежа - это если использовать концепцию - только идентификатор внешней БД в расширенных данных примитива. И чертеж не пухнет, как на дрожжах. Хотя есть сторонники заносить всю информацию непосредственно в расширенные данные, чтобы не возиться с внешней БД.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Autocad2015 Как удалить текст из области блока.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить описание блока из файла? valrond Программирование 5 16.02.2016 16:30
можно ли сделать атрибут, считывающий текст из другого атрибута этого же блока? АлексЮстасу AutoCAD 42 24.08.2012 19:37
Непонятное поведение многострочного атрибута блока Нитонисе AutoCAD 2 11.09.2010 17:35
Текст из блока. игорёк Программирование 15 08.06.2006 09:03
Как выделить весь текст и удалить Алексей К. AutoCAD 3 19.07.2005 08:20