|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Я дунувши слеганца, поэтому на возможную резкость прошу внимания обращать поменьше.
Теперь по делу: Объект надо каким-то образом идентифицировать. Я с этим делом воевал, когда пытался прописать командный реактор на копирование объектов (по некоторым условиям применение полей там невозможно было в принципе). Последовательность создания копируемых объектов не может быть однозначно предсказана. Поясню на примере: Ведущий объект имеет ID 1; связующий - 2; ведомый - 3 (беру простейший пример). Создали / посносили еще сотни 2-3 объектов. Копируем эту "тройку", и в результате запросто может получиться, что копия ведущего получит ID 301, связующего - 307, ведомого - 305. Или в любом ином порядке. И все потому, что придется создавать и модифицировать словарные записи, а там не все очевидно и предсказуемо. На поля можно не кивать, их работа обуславливается отдельным реактором, нарисованным на arx и автоматически подгружаемым AutoCAD'ом.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
"Если абстрагироваться от трудностей технической реализации, то в принципе можно себе представить..." ...как отрезок, сгруппированный с МТекстом, описывающим формулу неизвестно чего, вставляется в пустой чертеж с координатами 0,0,0. На этом проектирование можно закончить.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Дима_, это ты кого спрашивал?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Еще раз, и еще более разжевано, на гоблинский переведенное.
Мне допустим надо чтобы в выбранном мною динамическом блоке, смещался по встроенному в него направлению определенному параметром distance и Move Action? некий элемент на расстояние равное длинне дуги. Я использую стандартную функцию приравнивания параметров см. описание в файле Мне, короче, дали библиотеку, и я в ней нашел подходящую для меня функцию и вставил как в описании у нее написано в mtext. Надавил кнопку "дин. регенерация" и все стало нищак. Про какую идентификацию вы тут гутарите? Поле связано с объектом и его свойством намертво, что, прочесть на какой объет оно указывает не можете? Тогда сюда лезьте http://dwg.ru/f/showthread.php?p=187684#post187684 Если при стопервом копировании тетя клава заела, так и вешаться что ли? Выбераем короче все mtext-ы, из них все с меткой, читаем каждый и все, что после имени функции в переменную загоняем. Запускаем указанную функцию и она, прочев данные из переменной совершает требуемое действие, на которое она запрограммирована и ради которого созданна, а именно меняеят значение свойства одного объекта на значение полученное из свойства другого. Ничего больше выдумывать не надо. Весь формат на этом и надо ограничить. Лисп пишется в файле txt с расширением lsp, а здесь лисп пишется в mtext-е с меткой перед скобкой и в качестве аргументов могут быть и формулы и простые выражения. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Блин, я сейчас материться начну. Ты в поле ObjectID поменять поменяешь, но как ты определишь, к какому объекту оно будет относиться? Я ж не зря тут распинался.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Блин, я сейчас заплачу! Нафига мне менять ObjectID? Ты вообще меня не понимаешь что ли? Я по нему до примитива добираюсь, а меняю уже сам примитив лиспом. Любые его свойства. После прочтения формулы мне она уже не нужна. Связана она с каким-то объектом - ну и ладушки. Это аргумент функции, как указатель на объект и его свойство, блин!
|
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Поля это просто текст в формате (индетефикатор что это поле, id объекта, имя свойства и формат отображения свойства), Supermax предлагает использовать этот текст для хранения указателя на объект и его свойства + действия которые надо над ним совершить - повторяю вопрос еще раз, но более развернуто - если создан объект, потом совершенна куча операций в том числе и над ним - его id может изменится? Ответ на этот вопрос решает судьбу дальнейшей дискусии.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Твою дивизию... Не, ну ты что, собираешься эту связь в каждом файле, что ли, настраивать? С нуля, так? На фига оно такое надо-то?
А сильно хочется поизвращаться - ну добавь в объект ldata по типу того, что я на абоке показывал, потом читай и выполняй. Функция (eval) тебе поможет. Еще раз подчеркиваю - смысла в этой затее лично я не вижу никакого.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Я посмотрел id дуги, сохранил его, вышел в пространство модели, потянул ручку у дуги, то есть ее увеличил, регенерировал модель, изменились при этом показания в полях, вошел опять в редактирование поля и посмотрел id ObjId 2130318984 - первый раз
ObjId 2130318984 - второй раз. И третий и четвертый и десятый. не меняется. А вот после перезагрузки файла - другое значение, как в именах. |
||||
![]() |
|
||||
Kpblc, это способ связать в данном файле параметры нескольких элементов в нужном алгоритме не делая при этом специально для этого файла программ.
Ведь не только о взаимосвязи длин идет речь. Можно вычерчивать программно элементы опираясь на данные таблицы, свойства других элементов, менять динамические свойства дин. блоков в зависимости от текстовых данных, параметров других дин блоков. Я долго ломал голову как сместить болт, если у него шайбу другой толщины поставить. Вот самое оно как раз для этого. Берешь в болте делаешь move и управляешь им параметром толшина из шайбы. И связующий mtext можно прямо в болт, в атрибут вставить. Правда VVA там что-то про облом в этом плане изрекал, но разберемся. Надо пользователю связать несколько параметров, если написали для этого функцию - пожалуйста. И не надо на каждую функцию кнопку делать и прыгать по файлу как кузнечек. Одна единственная кнопка, которая запускает эти функции, читая их из mtext-a. |
||||
![]() |
|
||||
Да даже если бы id менялся, ничего страшного бы не было. Когда идет обработка - читается сначала формула (поле), затем по полученному id находится объект, видоизменяется и все. Повторное действо опять прочтетет id и если он уже другой, то оно найдет объет все равно, потому что это его id. Если бы я потянул ручку у дуги и id поменялся только в объекте, то формула бы перестала работать. Говорю, что они связаны на низком пренизком уровне, а id выбрасывают для наглядной агитации.
|
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
2 Supermax по твоему получается на каждую шайбу надо свое поле заводить - гемор, проще блок болта с шайбой создать - потом его поменял и все вхождения "подпрыгнули", так что либо твой пример не удачный, либо мы о разном говорим.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Цитата:
Все, что ты пытаешься сделать, ИМХО давно придумано и реализовано. Просто для этого надо брать не AutoCAD, а либо вертикальное решение на его основе (ADT | AA / MDT / ABS | MEP), либо вообще "уходить" в другие системы типа Revit, Inventor, SoliWorks, ProE, PTModeler etc.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
И не внимательно читаешь мои посты. #20 Цитата:
Реализация этого идиотизма настолько проста, что я и сам сделаю (когда-нибудь). Как сделаю - посмотрим насколько востребована. Последний раз редактировалось Supermax, 13.12.2007 в 17:07. |
||||
![]() |
|
||||
Kpblc, Если я скопирую только одну дугу, то и будет у меня одна дуга. какой в ней id уже не имеет значения. А вот если я дугу выделю и формулу, к ней привязанную, то скопировав, сразу пару, в этом новом поле будет id новой дуги. И ясно, что это будет уже не то id, что у дуги прототипа.
|
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Усложняем эксперимент. Сделай следующее: рисуется 2 отрезка, дуга (которую ты хочешь связать). Еще дуга, 3 отрезка и 2 полилинии. Поле на вторую дугу. _.copy, выделить один из отрезков, которые были отрисованы до дуги, дуга "простая", дуга "связанная", 2 отрезка "после", поле и 1 полилиния. Выделение выполнять именно в таком порядке.
Копирование выполнять 2 раза, внутри одной команды. Определи (лиспом) ID своих новых скопированных "связанных" объектов. Определение выполнять программно. Говорю сразу - лично мне не удалось это сделать. Для того, чтобы исключить всякие возможные толкования, код: Код:
P.S. Я специально скачал файлик, хотя и знал, что ничего принципиально нового там не увижу. Я тебе еще раз говорю: связб можно осуществлять между объектами либо по ObjectID (внутри одной сессии файла), либо по хендлам объектов (внутри одного файла). Даже если будет сделана эта функция на одно вхождение твоей формулы, она не будет работать на второе / третье / четвертое без капитальнейшего ломания мозгов. Dixi.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 13.12.2007 в 17:45. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сквозная нумерация чертежей | Alxd | Прочее. Архитектура и строительство | 26 | 19.06.2024 09:01 |
Нумерация в МТекст | Bull | AutoCAD | 36 | 01.12.2022 14:24 |
Нумерация листов в AutoCad | Sergk | AutoCAD | 21 | 11.03.2022 05:21 |
Автоматическая нумерация текстов | dorofei | Программирование | 8 | 18.01.2007 09:31 |
Нумерация страниц в файлах | Димас | AutoCAD | 1 | 22.12.2005 10:31 |