Нумерация и позиционирование (дубль 2) - Страница 3
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нумерация и позиционирование (дубль 2)

Нумерация и позиционирование (дубль 2)

Ответ
Поиск в этой теме
Непрочитано 12.12.2007, 16:24
Нумерация и позиционирование (дубль 2)
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Мне на ум пришла одна мысль, как связать один элемент с другим в пару. Вот есть у меня динамический блок, а в нем атрибут с номером позиции и атрибут с номером элемента. Есть рядом с блоком значек с текстом внутри. Мне надо, чтобы текст в значке стал таким-же как и в атрибуте.

Я понимаю, что в блок можно вставить и значек с таким номером, и текст с формулой, но пока я о другом, это просто пример. Мне надо, чтобы значение свойства определенного элемента поменялось на определенное, другое значение. К примеру текст в элементе mtext в значке.

Ставим в блок атрибут. В атрибут вставляем формулу, которая указывает на выбранный объект и выбранное свойство в этом объекте. Далее, вставляем туда же еще одну формулу и указываем скажем другой атрибут и его значение. Макрос должен прочтя первое значение найти объект, который надо изменить и свойство, которое надо в нем отредактировать, прочтя второе, найти второй элемент, прочитать что у него записано в значении свойства и изменить свойство первого объекта на такое же.

Сумбурно, непонятно, но в теории осуществимо и изменить длинну линии к примеру по данным в тексте - возможно.
Меняешь в таблице цифры, а в модели после регенерации макросом меняется геометрия. Причем ни таблица, ни сами объекты никак не модернизируются, они остаются обычными, как и всегда. Просто в чертеж вставлен динамический блок (не видимый) в котором прописаны все взаимосвязи.

Можно и текст менять в таблицах, при этом он не будет с формулой, а чистый пречистый.
Более доходчиво идея описана в посте #70

Последний раз редактировалось Supermax, 15.12.2007 в 12:51.
Просмотров: 12166
 
Автор темы   Непрочитано 13.12.2007, 18:00
#41
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А ты после копирования регенерацию делал? (command "_regenall")

Последний раз редактировалось Supermax, 13.12.2007 в 18:21.
Supermax вне форума  
 
Автор темы   Непрочитано 13.12.2007, 18:15
#42
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Даже не вникая в детали, я тупо включаю ручку по очереди в каждом mtext-e и запускаю функцию VVA
(C:FLDVIZ) из поста #7 темы http://dwg.ru/f/showthread.php?p=187684#post187684
Котрая включает ручку у связанного с полем объекта.
А после этого я могу да хоть на луну. Это, что касается id, который я даже и не видел.

Правда у VVA надо строчку (setq txt (car(nentsel "\nУкажите объект с полем")))
поменять. типа (setq txt txt-i) Поскольку я в переменную txt буду сразу имя кидать и ручки включать тогда mtext-ам не надо. А переменную txt-i я уж сделаю.

Последний раз редактировалось Supermax, 13.12.2007 в 18:31.
Supermax вне форума  
 
Автор темы   Непрочитано 13.12.2007, 18:32
#43
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Все это конечно через одно место, это просто, чтобы не осталось сомнения по поводу доступа к элементам
Supermax вне форума  
 
Автор темы   Непрочитано 13.12.2007, 18:50
#44
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Добыл я из функции VVA все данные, так что и ручки включать не надо и так все в шоколаде выходит, а если вообще целевым назначением все делать, так просто будет как в эмиратах у эмира.

VVA, что молчишь? Я ж вижу, шныряешь туда, сюда, видать уже чего-то ваяешь?

Я не зря тогда ту тему про поля затеял. Теперь вот пригодилось. Низкий тебе поклон за это.
Supermax вне форума  
 
Непрочитано 13.12.2007, 18:51
#45
Кулик Алексей aka kpblc
Moderator

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


Блин. Я говорю не про состояние поля, а про то, что тебе надо по новой получить указатели на красные дуги. Ты мой код запускал?
Возможно, я чего-то не понимаю, но, думаю, что сегодня мне это простительно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.12.2007, 19:00
#46
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да получил я все коды на все дуги!

Только они белые, однако. А красные у тебя "простые"

Переменная lst в функции VVA, однако.

Последний раз редактировалось Supermax, 13.12.2007 в 19:11.
Supermax вне форума  
 
Автор темы   Непрочитано 13.12.2007, 19:18
#47
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Указатель на объект есть, теперь надо вытащить указатель на свойство из этого же поля.
Supermax вне форума  
 
Непрочитано 14.12.2007, 03:59
#48
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Supermax Посмотреть сообщение
Да получил я все коды на все дуги!

Только они белые, однако. А красные у тебя "простые"

Переменная lst в функции VVA, однако.
А именно красные и есть "связываемые". Если бы все было просто, все было бы уже давно решено.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.12.2007, 04:25
#49
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Kpblc, ты не шутишь? Я конечно поздравляю тебя еще раз с днем рождения, но ты как, адекватно себя чувствуешь?

Я запускаю макрос VVA, он включает ручки белым дугам, за ручки белые дуги подергал, формула отреагировала, а каким боком ты связал формулу с красными? Если бы ты в mtext вставил второе поле и в нем указал красную дугу, я бы понял. У меня в mtext-е два поля, одно указывает на один объект, другое на другой. Поскольку оба поля в одном mtext-e, то получается, что один объект связан с другим. Ладно, набирайся сил.

Последний раз редактировалось Supermax, 14.12.2007 в 04:41.
Supermax вне форума  
 
Автор темы   Непрочитано 14.12.2007, 08:53
#50
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Kpblc, так как красные дуги ты собирался связать и с чем?
Supermax вне форума  
 
Непрочитано 14.12.2007, 08:54
#51
Кулик Алексей aka kpblc
Moderator

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


К примеру: Длина первой полилинии (которая, кстати, не попала в набор копирования) должна быть равной длине дуги. Полный механизм лично я придумать не смог.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.12.2007, 09:09
#52
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Вот, наконец-то все стало на свои места. Красные дуги - побоку, на них поле ставить надо а на белые уже стоит, значит будем с белыми связывать. Добавляем еще одно поле в mtext с указанием в нем на полилинию и ее свойство... да любое, без разницы, но сразу за полем пишем буковками Vertex 1. У тебя получается четыре аргумента. Первый - указатель на объект "дуга" и ее свойство Length. Второй - указатель на элемент "полилиния" с любым установленным свойством. Третий - текст с именем свойства, которое надо уже выколупывать из найденного объекта лиспом, и четвертое - номер узла полилинии.
Supermax вне форума  
 
Непрочитано 14.12.2007, 10:18
#53
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Выложил здесь еще одну функцию, создающую поля в объекте. Но ценность ее в том, что там описываютя код поля и его значение. По поводу "чего молчишь ..." так 2 варианта
1. окончательно пока еще все не утряслось ни у меня ни у вас.
2. конец года, понимаешь.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.12.2007, 10:59
#54
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


VVA, молоток!

Надо из всего этого многообразия склеить следующее:
Есть mtext, в котором последовательно с разделителями пробел стоит метка $Kpblc (имя_функции аргумент1 аргумент2 аргумент_n)
Надо эту строку прочесть и передать в соответствующую переменную. Поскольку макрос, который читает эту строку и запускает функции к самим функциям не имеет никакого отношения, то предлагаю переменную назвать также как и метку, только без доллара, но возможно с каким-нибудь префиксом. Чтобы тот, кто будет сочинять очередную функцию точно знал через какую переменную ему передадут параметры аргументов.

Параметры предлагаю делать сразу списком, а не строкой. В список вставлять простой текст строками, значение полей сразу превращать в -1 код объекта и название свойства строкой.

Получаются вполне читабельные данные для простого усвоения функцией.

Я посмотрю на новую прогу и попробую вычленить из строки mtexta первое поле, второе поле и так далее.
Supermax вне форума  
 
Автор темы   Непрочитано 14.12.2007, 11:20
#55
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


VVA, а у тебя это работало?
Вот к примеру.
Код:
[Выделить все]
(defun VALUE (num ent /)(cdr (assoc num ent)))
Совсем не работающая вещь. Вообще к тексту отношения не имеет. Наверное в том сайте num и ent в других лиспах определены. Ща гляну.
Supermax вне форума  
 
Непрочитано 14.12.2007, 11:25
#56
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Имя последнего отрисованного примитива
(value 0 (entget(entlast)))
Если num-dxf код поля, ent - список dxf кодов, возвращаемый entget
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.12.2007, 11:27
#57
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Нет там на его странице этих определений. Разобрать та все можно, просто тут дедушка Облом с визитом вежливости пришел.
Supermax вне форума  
 
Непрочитано 14.12.2007, 11:28
#58
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


В AddObjectField строку
(vl-position (value 0 EntData) '("MTEXT" "ATTRIB" "ATTDEF"))
заменить на
(vl-position (cdr(assoc 0 EntData)) '("MTEXT" "ATTRIB" "ATTDEF"))
то от нее можно отказаться
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.12.2007, 11:29
#59
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ага. Щас поколдую.
Supermax вне форума  
 
Непрочитано 14.12.2007, 11:30
#60
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Есть, в посте №6
Цитата:
No problem; I'll help as much as i can.

First look:
Code:
(vl-position (value 0 EntData) '("MTEXT" "ATTRIB" "ATTDEF"))

I dont have a `value' function so i cant run this.



Dang! Thought I didn't use one of the subs. Guess I wasn't sure if I was going to post the code.
Here you go.

Code:
(defun VALUE (num ent /)
(cdr (assoc num ent))
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нумерация и позиционирование (дубль 2)

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сквозная нумерация чертежей 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