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

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

Как взорвать все field?

Ответ
Поиск в этой теме
Непрочитано 08.08.2013, 14:22 #1
Как взорвать все field?
Bestoloch
 
Регистрация: 09.04.2011
Сообщений: 60

В общем то задача такая: есть таблица и в ней проставлены поля (как ссылки на другие таблицы, тексты и другие примитивы), так вот требуется заменить поля а вместо них в ячейку написать текст со значениями собственно говоря этих ссылок. То есть заменить поле текстом, а по факту в ячейке будет одно и тоже. У кого возникала такая задача и как кто её решал? Может кто поделится каким-нибудь лиспом?
Просмотров: 5532
 
Непрочитано 08.08.2013, 14:25
1 | #2
Кулик Алексей aka kpblc
Moderator

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


А поиск не пользуется по религиозным причинам?
http://www.google.ru/cse?cx=partner-...%8F&gsc.page=1
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.08.2013, 14:27
#3
Bestoloch


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


Извиняюсь, наверное не так запрос вводил. Спасибо. Это можно удалить.
Bestoloch вне форума  
 
Непрочитано 08.08.2013, 14:31
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Offtop:
@Bestoloch,
а позднее целевые объекты в чертеже изменятся, но данные в таблицах останутся прежними... И выяснится это на стройке, в самый неподходящий момент. Тут главное, чтобы фамилия исполнителя была достоверной, чтобы руководители быстро смогли определить, кому именно следует глаз на ж@пу натягивать...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 08.08.2013, 14:46
#5
Bestoloch


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


Использование ссылок хорошо но не всегда.
1. Ситуация: есть допустим две таблицы, из таблицы А сослался на таблицу Б, изменил (допустим добавил строку) таблицу Б ( в А ничего не менял) изменилась и А. Как быть? перебивать все сслыки?
2. Ситуация: копирование данных из одного чертежа в другой. Сюда же относится передача чертежей пользователю который понятия не имеет и не хочет иметь, что это такое поля.
Bestoloch вне форума  
 
Непрочитано 08.08.2013, 15:14
1 | #6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Bestoloch Посмотреть сообщение
1. Ситуация: есть допустим две таблицы, из таблицы А сослался на таблицу Б, изменил (допустим добавил строку) таблицу Б ( в А ничего не менял) изменилась и А. Как быть? перебивать все сслыки?
Всё зависит от того, как ты формулу пишешь. Если так:
Код:
[Выделить все]
=Table(8796087977152).B8
То обозначенная тобой проблема действительно возникнет. Однако если ты сам немного подумаешь, то напишешь примерно так:
Код:
[Выделить все]
=Table(8796087977152).B%<\AcObjProp Object(%<\_ObjId 8796087977152>%).Rows>%
то не зависимо от того, сколько ты добавишь\удалишь строк в таблице А, Таблица Б будет всегда ссылаться на последнюю строку, где у тебя указано "Итого".
Цитата:
2. Ситуация: копирование данных из одного чертежа в другой.
Нужно как следует подумать, дабы принять правильное решение: когда стоит выполнять копирование, а когда целесообразней воспользоваться внешней ссылкой. В большинстве случаев первый второй вариант - самый рациональный (тогда изменение в файле А автоматом применятся и в файле Б).
Цитата:
Сюда же относится передача чертежей пользователю который понятия не имеет и не хочет иметь, что это такое поля.
Это вообще никуда не относится. Если ты будешь ориентироваться на подобных Буратин, у которых в голове н@ср@но, то тебе всю жизнь придётся чертить в нулевом слое, не использовать блоки, лэйауты, подшивки и т.п. Только ориентируясь на уровень подобных дятлов, долго ты на плаву не продержишься т.к. подобного качества "работа" вряд ли будет одобрена теми, кто в данном вопросе разбирается (и им будет фиолетово, что ты подстраивался под пофигизм Васи Иванова, которого, как выяснится, уже давно под ж@пу пинком выгнали в виду его некомпетентности и наплевательского отношения к своей работе).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 08.08.2013 в 15:22. Причина: Очепятка: зачеркнул неправильное.
hwd вне форума  
 
Непрочитано 08.08.2013, 15:37
#7
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от hwd Посмотреть сообщение
уже давно под ж@пу пинком выгнали в виду его некомпетенции
Боюсь не доживу я до того момента, когда этих "специалистов с многолетним стажем" разгонят поганой метлой - ну ни какие рыночные механизмы им не почем - то ли из-за того, что в этой области приемущественно "знатоки" которые когда-то в нем плакат для диплома нарисовали - и теперь считаються мастерами автокада высшего дана (даже бумажка о знании автокада есть), но факт есть факт 80 процентов сторонних чертежей это полный абзац (причем, справедливости ради, хочу замететь, не малый процент чертежей по работе у меня приходит от различных западных друзей - там ситуация ни чуть не лучше - как они там сами по таким работают???). Когда (редко) видишь действительно что-то "нормальное", лично я это воспринимаю как что-то необыкновенное.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 08.08.2013, 15:42
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Когда (редко) видишь действительно что-то "нормальное", лично я это воспринимаю как что-то необыкновенное.
К сожалению это так. Однако ориентируясь на бездарности, ты тем самым понижаешь свой коэффициент ликвидности, вместо того, чтобы качеством своей работы стимулировать их к саморазвитию. Представь, что новый работодатель захочет посмотреть чертежи в качестве примера, а ты их оформлял подстраиваясь под уровень "владения AutoCAD" таких вот "специалистов"... Если работодатель не шарит в этом, то такая "залепуха" возможно и пройдёт, но если вдруг окажется, что он разбирается в этом на уровне Алексея Кулика (к примеру), то может и матом послать (и собственно правильно сделает).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 08.08.2013, 16:02
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Да я вроде как и не ориентируюсь (ну по крайней мере считаю что это так). Я уж с десяток действительно "толковых" человек пытался переубедить не тратить свое время на обезъянний труд - все вроде с этим согласны - но по факту - люди (подчеркиваю достаточно толковые) все одно пользуються только тем что им дали (ну или делают практически один в один по шаблону) - это что программы, что дин. блоки... думать (делать) сами - ну ни как - колються и опять на свой кактус - "мне уже к завтру надо - я сейчас за ночь в рукопашную сделаю, а потом ....", а "шаблоны" по которым они типовуху делают - это вобще тихий ужас - ладно какие-то одноразовые вещи... так и живем.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 08.08.2013, 16:03
#10
Кулик Алексей aka kpblc
Moderator

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


С флудом завязываем.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.08.2013, 16:50
#11
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


hwd, не могли бы пояснить код из #6?
kacugu вне форума  
 
Непрочитано 08.08.2013, 17:06
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kacugu Посмотреть сообщение
hwd, не могли бы пояснить код из #6?
А что там не понятно? вместо цифры, жёстко указывающей номер строки, я вставляю поле, ссылающееся на общее количество строк целевой таблицы (см. выделенное красным цветом):
Цитата:
=Table(8796087977152).B%<\AcObjProp Object(%<\_ObjId 8796087977152>%).Rows>%
AutoCAD вычисляет это значение и подставляет результат в главную формулу, получается нечто такое:
Цитата:
=Table(8796087977152).B8
где 8 - количество строк в таблице в настоящий момент. Далее всё идёт по старинке.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 08.08.2013, 17:28
#13
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Спасибо за разъяснения. А для следующего случая ничего не подскажете? Есть таблица1 и таблица2. Таблица2 ссылается на таблицу1 (не только на ячейки в последней строке). При добавлении строк в таблицу2 ниже ячеек, зависимых от таблицы1 (таблица1 при этом не меняется), сбиваются значения в этих зависимых ячейках. Например: в таблице2 ячейка D3 ссылается на ячейку таблицы1, т.е. D3=Table(8796083801488).D25. Добавляю в таблицу2 5 строк. Теперь D3=Table(8796083801488).D30. При этом ячейки D30 в таблице1 не существует
kacugu вне форума  
 
Непрочитано 08.08.2013, 17:38
#14
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kacugu Посмотреть сообщение
При добавлении строк в таблицу2 ниже ячеек, зависимых от таблицы1
Не ниже, а выше. Решить можно например так: вместо того, чтобы в формуле жёстко прописывать 25-й номер строки, можно вместо числа засунуть формулу, например такую:



Т.е. формула будет выглядеть так:
Цитата:
=Table(8796087901792).B%<\AcExpr (20+5)>%
Теперь, если выше будем добавлять/удалять строки, значение не будет сбиваться и всегда будет указывать на 25-ю строку таблицы 1. Однако если в таблице 1 вы добавите новую строку выше той, на которую ссылались в таблице 2, то сами понимаете, что у целевой строки номер изменится, в то время как таблица 2 по прежнему будет ссылаться на 25-ю.

Чтобы избежать подобных проблем, добавлять строки в таблицу 1 следует внизу, после тех уже имеющихся строк, на которые имеются ссылки.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 231
Размер:	34.1 Кб
ID:	109344  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 08.08.2013 в 17:51.
hwd вне форума  
 
Непрочитано 08.08.2013, 18:04
#15
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Цитата:
Сообщение от hwd Посмотреть сообщение
Не ниже, а выше.
все-таки ниже. В таблице2, пусть 10 строк, т.е. последней будет ячейка D10. Добавляю строки ниже ячейки D10 и значение ячейки D3 меняется
kacugu вне форума  
 
Непрочитано 08.08.2013, 18:08
#16
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Не верю. Ничего подобного не наблюдаю. Оно даже по логике не возможно, поскольку такое добавление не затрагивает уже имеющихся связей.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 08.08.2013, 18:43
#17
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Уже не на работе, так что приложу файл только завтра (Offtop: За одно и проверю, может это у меня конец рабочего дня сказывается
З.Ы. Спасибо за идею с формулой
З.Ы.2 Идея с формулой не прокатила. Значения в зависимых ячейках все-равно меняются при добавлении строк в таблицу2
Вложения
Тип файла: dwg
DWG 2010
Таблицы для dwg.dwg (102.8 Кб, 1589 просмотров)

Последний раз редактировалось kacugu, 09.08.2013 в 09:40. Причина: добавил файл с таблицами
kacugu вне форума  
 
Непрочитано 09.08.2013, 11:58
#18
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kacugu Посмотреть сообщение
З.Ы.2 Идея с формулой не прокатила. Значения в зависимых ячейках все-равно меняются при добавлении строк в таблицу2
Хм... Да, вижу. А ну ка, гляньте этот файл, попробуйте в правой таблице то же самое проделать: если сейчас ниже ячейки с формулой добавлять\удалять строки, то значение меняться не будет (правильное поведение).

Идём далее... Но(!!!) если в правой таблице внести изменение в формулу:
вместо
Цитата:
=Table(8796087887712).B%<\AcExpr (2+2)>%
назначить
Цитата:
=Table(8796087887712).B%<\AcExpr (2+3)>%
то всё сразу становится с ног на голову: теперь последующие добавления\удаления строк ниже интересующей нас ячейки, будут каким-то "волшебным" образом влиять не неё и мы получаем то поведение, которое наблюдается в ваших таблицах.

Я думаю, что это баг AutoCAD.
Вложения
Тип файла: zip sample2.zip (208.1 Кб, 30 просмотров)
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 09.08.2013 в 13:15.
hwd вне форума  
 
Непрочитано 09.08.2013, 13:30
#19
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Видимо, это действительно баг, потому что у меня в вашем файле при изменении формулы с (2+2) на (2+3) ничего с ног на голову не становится
kacugu вне форума  
 
Непрочитано 09.08.2013, 13:55
#20
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kacugu Посмотреть сообщение
Видимо, это действительно баг, потому что у меня в вашем файле при изменении формулы с (2+2) на (2+3) ничего с ног на голову не становится
Я несколько раз тестировал в AutoCAD 2009 SP3 x64 Enu - результат всегда один и тот же - тот, который я назвал "багом". Сейчас попробовал в AutoCAD 2014 - баг на месте. Попробуйте после того, как поменяете 2+2 на 2+3, выделить строку, следующую после той, что содержит формулу, и в контекстном меню выбрать пункт Insert Row Above. Значение формулы изменилось? У меня в AutoCAD 2014 изменилось, как и в 2009-м. Т.о. баг на месте.

Это можно было бы оформить как критический баг AutoCAD здесь, поскольку эта ошибка может незаметно вносить изменения в таблицы ведомостей и спецификаций, что имеет весьма серьёзные последствия. Однако, в виду того, что 99,9% мемберов DWG.RU, как только дело касается подобных вопросов, пассивны аж до состояния овощей (со всей ответственностью заявляю - будут терпеть, молчать и ожидать, когда-же кто-то другой поспособствует устранению бага), то это ни на что не повлияет: будет очередная одинокая заявка в мусорное ведро, за которую проголосует (если повезёт) 2-3 человека. При такой "активности" Autodesk исправлять баг не станет (и правильно сделает, ибо - молчат, значит всё устраивает, о чём мне открытым текстом и заявлялось в ADN). Я, с некоторых пор, скептически отношусь к размещению подобного рода "заявок", ибо практика показывает, что это письма в лигу защиты сексуальных меньшинств.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 09.08.2013 в 14:08.
hwd вне форума  
 
Непрочитано 09.08.2013, 20:26
#21
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


попробовал. если вставляю строку выше, то да - значение меняется, если ниже, то нет.
если успею, то оформлю как баг.
Не смогу оформить баг по правилам, так как требуются данные рабочего компьютера, но на работе появлюсь только через несколько месяцев, а дома автокад не держу.

Последний раз редактировалось kacugu, 09.08.2013 в 22:10. Причина: прошло время
kacugu вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как взорвать все field?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание значение ячейки таблицы в виде Field в AutoLISP tokhot LISP 9 08.01.2017 17:54
Как взорвать блок в AutoCAD 2013 (все стандартные средства опробованы) April Динамические блоки 17 09.07.2014 01:53
ПОле, вставленное в атрибут блока maestro AutoCAD 46 10.03.2007 01:43
Простановка площади через field oshnik AutoCAD 19 10.05.2006 14:07