Jump to content

Простейшая автоматизация с помощью отчётов таблиц


Recommended Posts

коль разговор зашел за платформу.. зачем там в базе шаблоны скриптов? или я что-то пропустил?

Link to comment
Share on other sites

коль разговор зашел за платформу.. зачем там в базе шаблоны скриптов? или я что-то пропустил?

Если ты про эти, то пользователь платформы их не увидит

 

img-2018-09-06-19-19-33.png

Link to comment
Share on other sites

Если ты про эти, то пользователь платформы их не увидит

понимаю, что из наны их не видать,

это забытые хвосты от механика или так задумано?? про это спросил.

Link to comment
Share on other sites

  • 6 months later...

Иногда простое "традиционное" решение даёт более быстрый результат.

Не всегда рационально использовать отчёты, особенно если есть стандартное и отработанное решение в Excel'e

Просто надо помнить, что Таблицы nanocad позволяют выбирать разные листы и в них можно в ручную задавать необходимые диапазоны ячеек, если автоматическое определение заполненных ячеек чем-то не устраивает.

http://www.youtube.com/watch?v=PWuif0EeMM4

  • Like 3
Link to comment
Share on other sites

  • 4 weeks later...

Продолжаю разбираться с таблицами и походу возникла пара вопросов...

1. В таблицах (вертикалок наны) можно создать пользовательскую форму.. с этим понятно, как ее удалить? Штатного средства не нашел, только через экспорт-импорт xml (но отцепляется "Имя таблицы")

2. В построителе выражений можно присоединить объект, тут понятно... а вот как его отсоединить или присоединить другой взамен первого? Аналогично штатных средств нет, но работают хуки с перевставкой таблицы из базы или *.xml.. *.dat, удалением и повторной вставкой присоединенных объектов...

------------

Может, кто подскажет штатные методы... без костыликов?

  • Like 3
Link to comment
Share on other sites

В построителе выражений можно присоединить объект, тут понятно... а вот как его отсоединить или присоединить другой взамен первого?

Вот тут не совсем понятно. А что конкретно Вы хотите? можно на примере?

Link to comment
Share on other sites

>> А что конкретно Вы хотите? можно на примере?

Собрал параметрический объект, к нему есть таблица которая собирает с него параметры (отчет не годится мне нужно в столбец, и таблицу начиная кажется с СПДС CS6 не повернуть на 180, 270 град )

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

-----------

на самом деле решение:

группа в базе (объект(ы)+таблица(ы))

вставка таблицы из базы (файла) с послед привязкой объекта

перевставкой объекта (sppickpoint) с послед привязкой

-----------------

собственно вопрос был, что коль есть кнопка присоединить... должна быть и отсоединить

аналогично и с формой, коль можно создать, можно и удалить...

----------

про костыли я в курсе, мне б про штатные способы.

  • Like 1
Link to comment
Share on other sites

В построителе выражений можно присоединить объект, тут понятно... а вот как его отсоединить или присоединить другой взамен первого?

Вот тут не совсем понятно. А что конкретно Вы хотите? можно на примере?

 

Да есть такое желание чтобы можно было проще управлять присоединенными объектами.

Сейчас приходится удалять ненужные объекты с чертежа, и тогда они удаляются из таблицы (но ссылки на них остаются)

 

Еще один момент который напрягает:

в таблице есть формулы со ссылкой на объект, которого уже нет (object1).

Добавляем объект существующий, он становится object2.

Начинаем править все формулы где есть object1 - меняем индекс на 2.

Доходим до последней формулы и опа все поменялось на object1 кроме последней формулы, там осталось object2.

Правим его на object1. готово.

Но еще одна тонкость - если в формуле несколько раз ссылаемся на object1, то он поменяется только в первом упоминании остальные останутся object2 и надо будт опять ручками все править на object1.

 

Поэтому нужен инструмент для управления объектами.

Я сейчас спасаюсь кросс-ячейками - делаю скрытые ячейки в таблице в которых ссылаюсь на объекты чертежа, а в формулах уже ссылаюсь на эти кросс-ячейки, так быстрее получается

Edited by Bucho
  • Like 1
Link to comment
Share on other sites

и вдогон еще вопрос: есть команда присоединить объект (что б не заходить в редактор)?

по аналогии с СПЭКСПТАБЛ, СПИМПТАБЛ

Link to comment
Share on other sites

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

..

собственно вопрос был, что коль есть кнопка присоединить... должна быть и отсоединить

Присоединяете объект, у Вас появляются в формулах "Object1.", так? Потом передумали. Присоединяете второй объект. В формулах "Object1." заменяете на "Object2.". При этом если все ссылки на первый объект исчезли, то объект 2 становится объектом 1, т.е. первый отсоединяется автоматически.

Достаточно штатно?

Link to comment
Share on other sites

>>в таблице есть формулы со ссылкой на объект, которого уже нет (object1). Добавляем объект существующий, он становится object2.

нет, так это работает

есть привязанные object1 object2 object3

при удалени object1

object2 станет object1, а object3 станет object2, если добавить еще один он встанет в конец очереди object3, править конечно придется

но если объект всего один, то при удалении с чертежа.. "стек " пуст и при добавлении нового он будет object1

-----------------

кстати правку табличных отчетов.. типа object1 на object2 и т.п. легко автоматизировать... сохраняем таблицу в xml открываем в текстовом редакторе, автозаменой меняем что надо на что, открываем в существующую или новую таблицу, правда перепривязать объекты придется

Link to comment
Share on other sites

Присоединяете объект, у Вас появляются в формулах "Object1.", так? Потом передумали. Присоединяете второй объект. В формулах "Object1." заменяете на "Object2."

руками, 100500 параметров :blink:

При этом если все ссылки на первый объект исчезли, то объект 2 становится объектом 1, т.е. первый отсоединяется автоматически.

если объект не удалялся, то с чего бы ссылки на него исчезли?

Достаточно штатно?

ага перебить руками Object1 на Object2, а потом ждать когда исчезнут ссылки на Object1 :D

  • Like 1
Link to comment
Share on other sites

Еще один момент который напрягает:

в таблице есть формулы со ссылкой на объект, которого уже нет (object1).

Добавляем объект существующий, он становится object2.

Начинаем править все формулы..

Погодите )

А если сразу в таблице F5 нажать? Во всех формулах (ну кроме последней, тут ерунда какая-то) поменяется само?

Link to comment
Share on other sites

............

Я сейчас спасаюсь кросс-ячейками - делаю скрытые ячейки в таблице в которых ссылаюсь на объекты чертежа, а в формулах уже ссылаюсь на эти кросс-ячейки, так быстрее получается

поэтому глюки ловишь...

присоединить объект работает не к ячейке, а всей таблице (я щас про из редактора формул)

а ты походу пристегиваешь к ячейке из свойств (работает только с блоками) или внедряешь объект в ячейку?

Link to comment
Share on other sites

Если объект не удалялся, то к несчастью руками. По-другому я не умею.

а я умею :D

1. spDEdit->Файл->Сохранить в файл-*.xml

не выходя из редактора

2. Файл-Загрузить из файла -сохраненый*.xml

3. на любой ячейке заходим в построитель выражений и присоединяем объекты в нужном нам порядке

------------------

но имха ни разу не штатный метод

Link to comment
Share on other sites

............

Я сейчас спасаюсь кросс-ячейками - делаю скрытые ячейки в таблице в которых ссылаюсь на объекты чертежа, а в формулах уже ссылаюсь на эти кросс-ячейки, так быстрее получается

поэтому глюки ловишь...

присоединить объект работает не к ячейке, а всей таблице (я щас про из редактора формул)

а ты походу пристегиваешь к ячейке из свойств (работает только с блоками) или внедряешь объект в ячейку?

Да нет к таблице привязываю.

Просто если б все было как Артем описывает, то было бы приемлемо, а так я ж говорю что последнюю ячейку со ссылкой на объект приходится дважды править.

По F5 формулы не обнуляются, ссылки на несуществующие объекты не исчезают.

Link to comment
Share on other sites

>>По F5 формулы не обнуляются, ссылки на несуществующие объекты не исчезают.

Какая версия...программа?

Link to comment
Share on other sites

  • 5 months later...

Дублирую отсюда (сказали, что тут смогут помочь :( )

 

Надеялась, что ответят разработчики данного функционала. Но нет.

Напишите сюда Простейшая автоматизация. Не совсем по теме, но там они должны прочесть.

 

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

 

Эксплуатация показала, что основные тормоза случаются из-за "бесконечных" именованных диапазонов (типа $A:$A)

Имхо: насколько я понял, перед экспортом в DWG, Эксель пересчитывает ячейки, а это занимает время.

Плюс сам экспорт.

 

Можно как-нибудь сделать так что бы при экспорте Эксель не пересчитывал ячейки, а брал только значения и сразу отправлял в DWG?

А при обновлении, даже игнорировал форматирование?

Link to comment
Share on other sites

>>> не обновлял форматирование...

какой год уже нижайше просим(((

-----

Насчет долго... импорт в базу 4к строк 20 столбцов на ай7 16гб рам занимает минуты 3-5 столько жэж примерно сохранение..

-----

Как пример стандартная спецификация по технологии из 10к разных объектов собирает программный отчет минут 5, я сделал на вебеа в десять раз быстрее, на АК можно еще ускорить.. ( в некоторых случаях)

Это я к тому, что оптимизацией никто не занимается и при желании все можно переписать, шоб крутилось быстрее.

---

Имха повлиять на эксель не получится, в любом случае перед экспортом программам нужно определить диапазон экспорта, если он предварительно не задан...

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

Link to comment
Share on other sites

Когда именованный диапазон на листе Связь пытаюсь загрузит в Нанокад.

Таблица экспортируется 20(!!!) минут

А если и так и так попробовать?

http://www.youtube.com/watch?v=qF-d92jJu_M&feature=youtu.be

Смотрел файл давно. Откуда 20 минут не понятно :-(

  • Like 1
Link to comment
Share on other sites

  • 9 months later...
  • 1 month later...

  Перетащил из другой темы

6 часов назад, MCAD сказал:

Вот тут небольшой пример нумерации поля "номер страницы" с разными "исходными данными". Несмотря на то, что персонажи в основной надписи сказочные - пример рабочий. Думаю, что при работе с форматами в пространстве листа легко можно адаптировать и для поля "номер листа" (хотя проще менять прямо из таблицы)

  Легенда видео (доступно на YouTube) (Показать контент)

В примере показана возможность заполнения поля «Номер страницы» чертежей при создании проектной документации. Так же показана связь полей основной надписи формата и «Дополнительных свойств» файла через таблицы СПДС GraphiCS, с возможность ручного заполнения штампа.

0:00 Выделяем «Таблицу» на чертеже и из контекстного меню, выбираем «Открыть форму»

00:12 Снимаем checkbox «Копировать поля из свойств файла». Теперь поля основной надписи будут брать текущие значения «Пользовательской формы». В таблице «Зелёным цветом» показывается какое именно значение будет передаваться в основную надпись

00:19 Опять открываем «Пользовательскую форму» на редактирование и меняем значение в поле «Разраб». После нажатия на «Ok» и закрытия формы – значения передаются из таблицы в основную надпись чертежа.

00:31 Открываем диалог свойств файла (dwgProps) и меняем значение в поле «Author», «Enterprise» и «Номер страницы».

01:01 Открываем «Пользовательскую форму», снимаем checkbox «Ручной ввод | Доп. Свойство файла». Начальный номер страницы берётся теперь не из «Пользовательской формы», а поля «Номер страницы» дополнительных свойств файла. Так как это обычное поле dwg, то для его обновления нужно обязательно выполнить регенерацию чертежа (_regen)

01:14 Открываем форму, и устанавливаем checkbox «Копировать поля из свойств файла» . Теперь данные в чертёж будут передаваться не «Пользовательской формы», а из «Дополнительных свойств» файла. Проверяем изменение «Номеров страниц» во всем чертеже.

01:38 Удаляем несколько «чертежей» раздела «КМ» из файла. У нас просчиталось общее количество «страниц» и количество листов в разделе «КМ»

02:17 В этом же файле, в «Листах» оформлен ещё один пример нумерации. Открываем «Пользовательскую форму» нового отчёта и меняем «начальную станицу». Проверяем работу.

 

 

Нумерация поля -Номер страницы-.dwg 746 \u043a\u0411 · 0 загрузок

 

  • Like 3
Link to comment
Share on other sites

  • 5 months later...

Использование «ссылок на объект», существенно упрощает работу над чертежом, обеспечивая синхронное изменение данных у связанных объектов. К сожалению, связь, реализованная в формате гиперссылки, имеет свой формат и реализована в виде RTF. Соответственно имеет все сопутствующие признаки. В том числе, в начале и конце связанного текста добавляются «служебные» пробелы.   При формировании динамической таблицы это существенно сужает возможности пользователя по объединению и группировки данных. Ничем, казалось бы, визуально не отличающиеся строки не хотят подчиняться задуманному алгоритму :-|  .

image001.png.107a2af374b0dfe13df9ea1f278c2dc8.png

Хочу предложить одно из возможных решений, которое позволит тиражировать его на другие объекты и таблицы.

 

1.    Создание таблицы

Создадим в чертеже выноски и наложим на  них связи по «первой строке»

 

1.1.   В колонке «А» у нас =Object.String1, в колонке «С» =Object.String2. Добавим объединение по колонке «А». Наш отчёт имеет вид:

image002.png.a2f3c7e7bba6556384de46e095d210d0.png

2.    Определение начала текста без пробела

2.1.1.     В первую очередь нам нужно определить, в какой строке текст начинается с первого символа (родительские объекты) и в какой со второго символа (дочерние объекты)

2.1.2.     Учитывая что, текст «гиперссылки»  передаётся в формате RTF, используем функцию fmtRaw:

image003.png.f868d3d53b62e85cac78a35bfd441ff8.png

2.1.3.     Теперь  запишем условие: =iff(subleft(fmtRaw(object.String1);1)==" ";2;1)  где =iff(subleft(fmtRaw(object.String1);1)==" ";2;1) subLeft возьмёт из текстовой строки первый символ и, если он равен « » (пробел) то вернётся «2», если нет то «1».

 

image004.png.3eb9d98331ce691c607cd78ae00f76bd.png

image005.png.9997cf8788248237bb1bf749a6594f3b.png

2.1.4.     Теперь наша таблица имеет вид, который абсолютно не соответствует нашим ожиданиям:

image006.png.ef56178743ed6b99049608ff6af00240.png

 

3.    Определение знакоместа последнего символа « » (пробел).

3.1.1.     В колонке «B» будем использовать функцию  Select

3.1.2.     Так как просто определить конечный « »  пробел нам не удастся, то добавим к нашей строке любой символ, которой гарантированно не встретится нам при оформлении  документа (чертежа). Например, из таблицы символов выберем «ﻫ». В нашем случае, чем непонятнее и экзотичнее, тем лучше.

3.1.3.     Запишем условие SubString((fmtRaw(Object.String1)+"ﻫ");2;1) Выражение означает, что мы складываем текст (fmtRaw(Object.String1)+"ﻫ"), затем с помощью функции берём строку с позиции «2» длинной «1» символ.

image007.png.7f10f3831f093fb5e83ff9b27f7f93e4.png

3.1.4.     Теперь вернёмся к функции Select  и проверим

SubString((fmtRaw(Object.String1)+"ﻫ");2;1)=="ﻫ";3;// Если условие выполняется, то записываем номер символа по порядку. Так будем повторять для 20 символов.  

image008.png.3839a98e8700495bd1ded7e30ccce6fb.png

3.1.5.     Теперь наш отчёт имеет вид:

image009.png.3737de8735baa3a94beebf14d941c05c.png

4.    Формирование строки без начальных и конечных пробелов

4.1.   Рассмотрим, ещё раз, функцию SubString. Функция позволяет из строки «arg1», выделить часть подстроки начинающейся с знакоместа arg2 (п. 2.1.3) длинной arg3 (п.3.1.3)

image010.png.42950655802d16f2086c296843c548b1.png

4.2.   Открываем «Построитель выражений»  в колонке отчёта «А»  и  дописываем к  нашей функции =SubString(fmtRaw(Object.String1);iff(subleft(fmtRaw(object.String1);1)==" ";2;1)

4.3.   Теперь нужно определить arg3. Длина строки у нас определена в колонке «В». Но нам нужно ввести некоторые правки, из-за того, что в колонке «В» мы не учитывали возможное появление пробела в ссылке на объект в начале строки

4.3.1.     Берём значение из колонки «С»  (off(0;1)) и проверку на  начальный пробел из п. 2.1.3.

image011.png.9b73b3e4d57f6aabe102f02eaaef2c72.png

4.3.2.     Теперь наша функция имеет вид:

 

image012.thumb.png.e7dbd98a0531a29b236b28bb21da0bdd.png

5.     Итог:

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

image013.png.3b7e80752566505b1dcff6bd33830980.png

 

 

Ссылки на нобъект и объединение ячеек fmtString.dwg

 

Ссылки на объект и объединение ячеек SubString && subLeft .pdf

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...