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

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

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

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

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

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


А поиск не пользуется по религиозным причинам?
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,406


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

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


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
Санкт-Петербург
Сообщений: 910


Спасибо за разъяснения. А для следующего случая ничего не подскажете? Есть таблица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
Санкт-Петербург
Сообщений: 910


Цитата:
Сообщение от 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
Санкт-Петербург
Сообщений: 910


Уже не на работе, так что приложу файл только завтра (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 Кб, 29 просмотров)
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

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

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


Видимо, это действительно баг, потому что у меня в вашем файле при изменении формулы с (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 вне форума  
Ответ
Вернуться   Форум 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