|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
21.04.2006, 17:42 | #1 | |
ПОле, вставленное в атрибут блока
проектировщик
Украина
Регистрация: 08.05.2004
Сообщений: 1,123
|
||
Просмотров: 13174
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
ИМХО: неизлечимо. Поле привязывается к ID объекта, которое меняется при вставке из буфера. Поле надо переделывать.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
архитектор Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,295
|
у меня такая фигня творится с отметками что я делал. Иногда, случается при вставке из буфера обмена блока-отметки в файл где уже есть такой же блок. Лечу или удалением предыдущей версии блока или работаю в новом чистом файле. По другому ничего не придумал Притом что это не везде, а в некоторый файлах, что наталкивает на мысль, что что-то за это отвечает, но не в блоке проблема
|
|||
|
||||
AutoCAD/AutoLISP Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133
|
в 2007-М можно привесить в атрибуту переменную лиспа ( вмест объекта) - может сработать если лиспом ее менять, но с динамическим блоком , черт его знает?
__________________
Сквозь тернии к звездам.... и обратно :yes: |
|||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
"Формулу" поля можно попробовать получить через .FieldCode. А значение - через .TextString (ЯТД).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Крыс
Так в том то и дело, что у атрибута почему-то НЕТ свойства .FieldCode! Собственно, если это невозможно на VBA, то остается один путь: каким-то манером передать из VBA в Lisp атрибут, как объект, или передать ID объекта, а обратно получить формулу поля (назовем это так). Возможно ли такое решение? C Lisp'ом я, мягко говоря, не знаком. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Хм... Действительно. Есть только FieldLength, которая поможет как мертвому припарки.
Ну не хочет кад по-плохому, по-хорошему будет еще хуже Без проверок, все на уровне идеи: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Крыс
Спасибо за помощь, однако код что-то не то выдает На Lisp'e добрые люди задачу решили, теперь бьюсь головой об стену, как это в VBA запихать? Как передать в Lisp, ну допустим ID атрибута, а обратно получить код поля? Вот код, который получает код поля (в данном случае - ссылку на другой текстовый объект, из-за чего, собственно, и весь сыр-бор), потом запрашивает МТекст, в который это поле вставляет Код:
|
|||
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2den001
Чы читал сотый элемент словаря AcDbField? на ВБА? в проге сказано что читается этот элемент, только поле там хранится не в нужном нам виде, а вдругом, потом получают ObjektID преобразовав VLA объект, о добавляют нужные скобки, и удаляют ненужные, вобщем скорее всего все ето хозяйство реализуемо на ВБА, КРЫС!!! ну разрули программу пожалуйста - очень надо!!! |
|||
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Sleekka
Я ж говорил, не получилось у меня вообще словарь прочесть. Я пробовал .GetExtentionDictionary, и ни фига. Точнее, есть там объект "ACAD_FIELD", но попытки что-либо с ним сделать не увенчались успехом. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Так. Для лиспа у меня вроде как срослось:
Код:
На VBA не получилось - через HasExtensionDictionary выполнить корректную проверку не удалось. Чего-то там совсем я запутался. В качестве начала что-то подобное: Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Крыс
Спасибо. А с GetExtensionDictionary я тоже долго возился, потом плюнул. Решил сойти с ума как-нибудь в другой раз Как бы теперь Lisp и VBA увязать, вот вопрос? У меня есть ID атрибута (можно добыть ID блока, если надо), с каким бубном поскакать, чтобы он в код поля превратился? Меня пока не осенило... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Дык ента...
Если лиспом, то можно использовать нечто наподобие: Код:
Код:
Код:
P.S. На форуме как-то вроде были решения по этому вопросу.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Крыс
Да я не об этом. Про это я в курсе. Как из VBA вызвать Lisp-фунцкцию, которая по заданному ID атрибута вернет его значение в виде кода поля, с которым в VBA можно было бы дальше работать. Проще говоря, ищется замена отсутствующему в VBA свойству FieldCode для атрибутов. Или я уже торможу? По-моему, еще нет... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Я сейчас торможу по-черному, поэтому не обижайся, ок?
ThsDrawing.SendCommand "(lisp-function parameters)" ИМХО так вызывать функцию. А какие параметры ей передавать - ну это уж от нее и будет зависеть. Нечто наподобие такого, наверное? LISP: Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||