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

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

Блок с координатами

Ответ
Поиск в этой теме
Непрочитано 14.02.2007, 00:35 #1
Блок с координатами
Skydog
 
строит-во
 
Москва
Регистрация: 07.02.2006
Сообщений: 46

Как сделать так, чтобы при вставке блока, к нему сразу приписывалось бы значение координат X, Y. И при смене положения ПСК эти координаты менялись.
Допустим блок - окружность, точка вставки - центр окружности; вставляю в чертеж и координаты его аккуратненько так сбоку от блока нарисовались бы в рамочке, или это фантастика?
Просмотров: 4070
 
Непрочитано 14.02.2007, 02:21
#2
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Прочесть координаты и записать в виде текста смог. Записать в атрибуты не получилось. В общем, не совсем безнадега, только спать уже охота

В прилагаемом файле попробуй(те) вставить блок "Круг" с указанием точки на экране.
[ATTACH]1171408910.dwg[/ATTACH]
den001 вне форума  
 
Непрочитано 14.02.2007, 22:44
#3
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Сделал. :wink:
Только имя блока фиксировано и его нужно прописывать в коде, как константу. В данном случае "Круг". Блок с двумя атрибутами, у которых включено свойство "Установленный" (чтобы не приставал при вставке). Подразумевается, что блок в простанстве модели.

Почему-то работает только при вставке блока с указанием точки на экране. Впрочем после смены ПСК или регенерации координаты все равно обновляются.

Код встроен непосредственно в чертеж, если нужно, можно сделать отдельным dvb-файлом.
[ATTACH]1171486049.dwg[/ATTACH],

P.S. При перемещении блока координаты обновятся только после смены ПСК (можно просто еще раз установить текущую) или регенерации

P.P.S. С динамическими блоками будет работать некорректно, но если по-нормальному отслеживать динамические блоки не будет работать в АКАДах младше 2006.
den001 вне форума  
 
Непрочитано 14.02.2007, 23:00
#4
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Вопрос к Lisp-ерам (без подколок): на Lisp'e такое решение в принципе возможно? Просто интересно.
den001 вне форума  
 
Непрочитано 15.02.2007, 09:15
#5
Кулик Алексей aka kpblc
Moderator

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


Я не уверен, что правильно понял код. Тем не менее: написать командный реактор на лиспе достаточно просто. Кроме того, тебе не обязательно (ИМХО) делать полную регенерацию пространства модели. Может, достаточно после обработки INSERT'a сделать Blk.Update? Кстати, дополнительно пропиши уж реакторы и на COPY, MOVE, STRETCH...
И вот еще - попробуй
Код:
[Выделить все]
Public Sub ClearSelectionSets()
    For i = 1 To ThisDrawing.SelectionSets.Count
        ThisDrawing.SelectionSets.Item(0).Delete
    Next
End Sub
заменить на
Код:
[Выделить все]
Public Sub ClearSelectionSets()
    For i = 1 To ThisDrawing.SelectionSets.Count
        ThisDrawing.SelectionSets.Item(0).Clear
        ThisDrawing.SelectionSets.Item(0).Delete
    Next
End Sub
Иначе при некоторых условиях у тебя объекты могут пропадать.
---
P.S. Некоторые вещи я только что спер с http://vbamaker.narod.ru
---
Добавлено:
Кстати, у тебя не учитывается вариант нескольких приложений, которые могут использовать командные реакторы. Кто из них будет работать - одному Гейтсу известно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.02.2007, 10:05
#6
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Крыс
.Clear точно не повредит , но работает и так. Я этим уже сто лет пользуюсь, вроде ничего. Удаляется же SelectionSet из коллекции SelectionSets, объекты в него входящие при этом не затрагиваются (хоть это и не совсем логично). Однако .Clear добавил.

Так я регенерацию не делаю совсем, наоборот, после команды REGEN или REGENALL координаты пересчитываются, а после INSERT и так все хорошо.

Добавил в эту компанию еще пяток команд, пусть работает, на то он и железный.

А насчет Добавлено не совсем понял, точнее - совсем не понял, поясни, плз. [sm2102]
[ATTACH]1171523217.dwg[/ATTACH]
den001 вне форума  
 
Непрочитано 15.02.2007, 10:20
#7
Кулик Алексей aka kpblc
Moderator

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


Я к тому, что реакторы вообще-то достаточно опасная штукенция. Например, у меня грузятся мои ком.реакторы (неважно, на какие команды они реагируют). Последовательность загрузки непредсказуема. Ты сможешь гарантированно предсказать, кто и как сработает? И в какой последовательности? Я - нет.
Я огреб подобные проблемы, когда пробовал свои реакторы (командные и мышиные) прописать на работу вместе с СПДС GraphiCS 3.0 - работало через раз, валя кад на корню. Реакторы - достаточно узкое место, там, как правило, работает принцип: "кто первый влез, того и нахрен". Хотя, как показывает практика, бывают и тут варианты.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.02.2007, 11:57
#8
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Согласен, область деликатная. Я туда сам и не залезаю никогда. Но в данном случае, вроде, криминала быть не должно, да про другому из этой задачи и не выплыть, ятд.
den001 вне форума  
 
Непрочитано 15.02.2007, 12:11
#9
Кулик Алексей aka kpblc
Moderator

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


Не утверждал бы так категорично
[ATTACH]1171530680.dwg[/ATTACH]
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.02.2007, 12:28
#10
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Крыс
Я имел в виду, не отслеживая событие EndCommand. Про то, что мое решение единственно возможное - я и не помышлял даже.

Маленько подправил, теперь покрасивше стало.

P.S. А у тебя реакции на MOVE нету :P
[ATTACH]1171574100.dwg[/ATTACH]
den001 вне форума  
 
Непрочитано 15.02.2007, 12:39
#11
Кулик Алексей aka kpblc
Moderator

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


А регенерацию / сохранение / подготовить к печати / _etransmit выполнить? Fieldeval однако
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.02.2007, 12:49
#12
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Да хотел, потом передумал. Ежели заказчик попросит - можно сделать, а так - лень.
Что-то нет его, а я мозги поразмял и успокоился.

Оффтоп: Крыс, ты "поле в атрибуте" (или как там) не смотрел больше? Не пашет, зараза Среди меня уже появляются крамольные мысли бросить это на фиг. Хотя и обидно.
den001 вне форума  
 
Непрочитано 15.02.2007, 12:59
#13
Кулик Алексей aka kpblc
Moderator

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


Оффтоп2: Смотрел, но качество "смотрин" не выдерживает никакой критики. В общем, я не смог одолеть
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.02.2007, 23:26
#14
Skydog

строит-во
 
Регистрация: 07.02.2006
Москва
Сообщений: 46
<phrase 1=


Спасибо, это то что надо, супер, мне для геодезии самое то.
Я тут тоже кое чего придумал, но без лиспов и макросов, а так по-ламерски тыкался по опциям, вобщем вот такое безобразие получилось:
использовал системную переменную lastpoint, правда приходится после втавки блока преобразовывать аттрибут в текст, да и на смену ПСК и перемещения блока значения координат не реагируют.
Еще вопросик: макросы и лисп на одном языке создаютя, принципы одинаковые? Охота изучить это дело, но мануалы на английском мне не осилить, может есть у кого русскоязычный мануал по лиспу (макросам)?
[ATTACH]1171571183.dwg[/ATTACH]
Skydog вне форума  
 
Непрочитано 15.02.2007, 23:43
#15
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Макросы - Вы имеете в виду VBA?
VBA и Lisp - это два совершенно разных языка программирования. По Lisp'у была документация на русском в Download, по VBA не видел. По VBA вот неплохая ссылочка (из №5): http://vbamaker.narod.ru.

Если нужна какая помощь с реализацией предложенного решения (№10) - всегда пожалуйста.

P.S. Вспомнил еще одну вещь: реакцию на редактирование с помощью ручек, добавил туда же, в №10.
den001 вне форума  
 
Непрочитано 16.02.2007, 01:41
#16
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


ТАААААКС:
Крыс у тебя не работает вариант с филдами при смене ПСК а это было озвучено в 1 посте.
Надо делать вот так, как сделано в верхнем блоке:
http://dwg.ru/dnl/262
den001 у тебя нет реактора на Grips Editing.
Sleekka вне форума  
 
Непрочитано 16.02.2007, 02:49
#17
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Sleekka
Еще нет на зеркало и поворот. А оно надо?
den001 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Блок с координатами

Размещение рекламы