Перейти к содержанию
swell{d}

параметрические объекты СПДС

Рекомендуемые сообщения

1 минуту назад, dromandon сказал:

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

у каждого символа Своя ширина "знакоместа". Это не решит проблему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, MCAD сказал:

у каждого символа Своя ширина "знакоместа". Это не решит проблему

Ну хотя бы частично решит, полка будет плюс минус да совпадать) Плюс можно добавить ручку для полки, чтобы, если что, увеличить/уменьшить ширину полки руками)
В любом случае, это было бы лучше, чем каждый раз руками полку настраивать)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, MCAD сказал:

у каждого символа Своя ширина "знакоместа". Это не решит проблему

А как эта проблема решается в обычной позиционной выноске? Есть тут разработчики? Выноска - это ведь такой же объект БД. Или я ошибаюсь?

добавлено через 4 минут
18 часов назад, dromandon сказал:

Ну хотя бы частично решит, полка будет плюс минус да совпадать) Плюс можно добавить ручку для полки, чтобы, если что, увеличить/уменьшить ширину полки руками)
В любом случае, это было бы лучше, чем каждый раз руками полку настраивать)

А как в скрипте узнать длину строки? Есть функция такая?

Изменено пользователем AlExTs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
40 минут назад, AlExTs сказал:

А как в скрипте узнать длину строки? Есть функция такая?

Вроде нет (хотя могу ошибаться). Если бы была, проблема бы отсутствовала в принципе.

добавлено через 2 минуты
19 часов назад, AlExTs сказал:

Задача: в исполнении объекта есть текст и отрезок

Обычный в таких ситуациях вопрос (чаще мимо, но пару раз мне помогало): а Маркер не подойдёт? Обязательно параметрика?

Вот я и дожил до момента, когда сам это спрашиваю первым делом...

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
50 минут назад, Mитька сказал:

Вроде нет (хотя могу ошибаться). Если бы была, проблема бы отсутствовала в принципе.

добавлено через 2 минуты

Обычный в таких ситуациях вопрос (чаще мимо, но пару раз мне помогало): а Маркер не подойдёт? Обязательно параметрика?

Вот я и дожил до момента, когда сам это спрашиваю первым делом...

Параметрика обязательна. Текст и отрезок - части более сложного объекта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Или сократить текст на букву, зациклить и посчитать операции. Короче, посчитать буквы.

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, AlExTs сказал:

Выноска - это ведь такой же объект БД. Или я ошибаюсь?

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

добавлено через 2 минуты
46 минут назад, Mитька сказал:

хитрый способ разложить текст на буквы

Шрифты все разные по ширине

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, MCAD сказал:

хитрый способ разложить текст на буквы

Я про количество. От кол-ва букв можно хоть условно похожий результат получить. Неидеальный, но средний.

Да, это колхоз. Ноооо...

С тем же успехом это такой же колхоз, как и анализ того, ЧТО написано. Если это произвольный текст, то ничего не сделаешь.

Если сводный - из N переменных, каждая из которых имеет определенную структуру текста бла-бла-бла, то тут тоже ещё можно повыделываться с длиной выноски под них...

А вообще, мне более всех нравится вариант присобачить к линии ручку.

Плюс в зависимости от объекта и механики его эксплуатации можно прикрутить мгновенное "удлинение на величину", "удлинение на процент длины".... да всё, чё хочешь....

И даааааа, всё это колхоз, но чистого решения нет. =(

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Mитька сказал:

Да, это колхоз. Ноооо...

Посмотреть бы , что должно получиться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, MCAD сказал:

тем более из "исполнения" передать его в скрипт как параметр вернуть назад в "исполнение".

А это вообще ненужная операция, текст ведь УЖЕ внутри скрипта...

добавлено через 0 минут
Только что, MCAD сказал:

Посмотреть бы , что должно получиться?

Согласен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, Mитька сказал:

Согласен

Подозреваю, что-то похожее

добавлено через 4 минут
11 минут назад, Mитька сказал:

А это вообще ненужная операция, текст ведь УЖЕ внутри скрипта...

Когда как и не всегда горизонтально

UText(mp+oX+oY*(B/2+15),iff(angleTwoPi(oX,gX)>90;iff(angleTwoPi(oX,gX)>270;0;DegToRad(180))),iff(rCheck==1;hText*rSymScl/rScl;hText),1,-10.0000,"%%U"+sText+iff(rCheck3!=1;("A="+A);""),iff(angleTwoPi(oX,gX)>90;iff(angleTwoPi(oX,gX)>270;0,2;2,1));

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваша правда, пожалуй. Но это уже магия не моего уровня. =( - не требуется... Наше дело простое...

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 минут назад, Mитька сказал:

Наше дело простое...

у меня тем более ничего сложного не может быть. Просто значит технологично в производстве и надежно в работе

Выравние uText в зависимости от угла вставки.mcd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В плане сложности не про выравнивание и положение текстов. Я скорее, просто взаимосвязь "таблица" ---> "параметрика" ---> "графика".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Mитька сказал:

Я скорее, просто взаимосвязь "таблица" ---> "параметрика" ---> "графика".

Жаль. Это основное преимущество нашего ПО.

Там где-то  идет вебинар по 20.1

Ветка 33хх теперь из таблиц можно управлять объектами (СПДС) в чертеже

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, MCAD сказал:

Жаль. Это основное преимущество нашего ПО.

Не, не всё так плохо. 

Для нас нормальная последовательность:

1. Вставить объект

2. Завязать на него таблицу.

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

 

У вас же в примере вы в п.1,2 завызываете объект на таблицу при вставке. Хотя пример прикольный, скину КМДшникам нашим. Может и приспособим механику такую...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Mитька сказал:

вас же в примере вы в п.1,2 завызываете объект на таблицу при вставке

Одна из самый крутых новых функций, как на мой взгляд)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, MCAD сказал:

Жаль. Это основное преимущество нашего ПО.

Там где-то  идет вебинар по 20.1

Ветка 33хх теперь из таблиц можно управлять объектами (СПДС) в чертеже

Пример такой механики я бы поглядел с удовольствием. :wub:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В ‎23‎.‎06‎.‎2020 в 14:02, Mитька сказал:

Пример такой механики я бы поглядел с удовольствием. :wub:

Ну вот, кажется, наглядный пример. Легенда и тело документа есть под видео.

 

Нужно:

• Разбить строку по символу «×»;

• Отсортировать по возрастанию, в каждом поддиапазоне;

• Автоматически проставить позиции; • Определить количество одинаковых значений;

• Сформировать текстовую строку;

• Вывести на чертёж;

Спойлер

00:04 Открываем таблицу в «Редакторе таблиц». В таблице имеется форма для интерактивного взаимодействия при создании отчёта с обратной связью с чертежом

00:15 Вставляем раздел отчёта. В качестве источника данных выбираем «Позиционные выноски», расположенные на слое «Example». В столбце «А» отчёту будет вычисляться номер «Позиции». Для этого пишем выражение =row-I$15, где ячейка «I$15=row». В столбце «В» задаём значение первой строки «позиционной выноски» =Object.String1

00:58 Так как нам нужно будет разделить содержимое =Object.String1 по символу «×», которого не т на клавиатуре, заходим в «спец. Символы» вставляем это символ в ячейки и вырезаем его, тем самым копируя его в «буфер обмена»

01:05 В ячейке «С» строки отчёта пишем функцию subSplit , в качестве первого аргумента ссылаемся на ячейку off(0;-1), в качестве разделителя строки пишем "×", и 1 - первая группа символов. =subSplit(off(0;-1) ;"×";1). Примечание: в качестве первого аргумента можно использовать «Object.String1» или непосредственный адрес «В16». Но лучше использовать «относительный» адрес ячейки.

01:39 Для ячеек отчёта «D» и «E» пишем =subSplit(off(0;-2) ;"×";2) и =subSplit(off(0;-3) ;"×";3) соответственно.

02:07 В ячейке «F» перемножаем полученные в столбцах «C», «D» и «E» значения, вычисляя «объём»

02:26 В ячейке «G» определяем, что должно должна содержать вторая строка «Позиционной выноски». Мы хотим вывести туда позицию (столбец «А» отчёта), толщину (столбец «Е» отчёта) и суммарное количество данных записей на чертеже (count()). Сложим все вместе: ="Поз."+off(0;-6)+"(S="+off(0;-2)+"мм, "+count()+"шт.)". В «кавычках» просто текстовые константы, которые будут добавляться в нужное место строки

02:54 Теперь нам нужно просто передать вычисленное в столбце «G» значение во вторую строку «позиционной выноски» =sum(ctlsetValue(off(0;-1);Object.String2)). Функция ctlsetValue в качестве первого аргумента принимает значение «ЧТО передавать» (off(0;-1)), а второй аргумент «КУДА передавать» (Object.String2)

03:34 После закрытия диалога «Редактора таблиц» мы видим, что у четырёх «позиционных выносок», расположенных на слое «Example», появились значения во второй строке, соответствующие вычисленным в отчёте.

03:37 При переносе «Позиционных выносок» на разные слои вторая строка выносок, попавших на слой «Example» автоматически пересчитывается.

04:48 Теперь мы должны найти одинаковые «позиционные выноски». Заходим в диалог «Группировка и объединение» и создаём правила для «Объединения» , «Группировки» и «Сортировки». Задаём объединение по "С" и "D" и группировку по "Е". Теперь функция count() в колонке «G» считает нам количество сгруппированных строк. Например: Поз.2 (S=2мм, 3шт.)

04:59 Теперь расчётные данные предаются в объект. Но, при изменении условия выборки, ничего не меняется в уже установленных объектах. Так как при изменении слоя они автоматически пропадают из выборки и, соответственно, из отчёта. 05:11 Мы можем отредактировать «позиционную выноску» через диалог или через свойства платформы, но для полного счастья нам хотелось бы добиться полной автоматизации.

05:15 Заходим в диалог «Редактирование таблицы» и создаём новый отчёт. Нажимаем «Выбрать исходные объекты» и, Указав «Позиционную выноску», добавляем условие, что выбор по все слоям кроме «Example».

05:57 В любой столбец нового отчёта, кроме «А», вставляем =sum(ctlsetValue(off(0;-1);Object.String2)). Теперь, при переносе «Позиционной выноски» со слоя «Example» на любой другой слой, значение второй строки выноски будет «обнуляться» 06:20 Группируем отчёт по столбцу «А»

06:40 Проверяем работу

07:20 Воспользуемся созданным отчётом, как прототипом для работы с абсолютно другим объектом.

07:27 Для этого нам нужно поменять источник данных для отчёта на «Параметрический объект»

07:41 Изменить источник строк столбца «В» на «=Object.sPartName» и целевой параметр в столбце «Н» на =sum(ctlsetValue(off(0;-1);Object.sPoz)).

08:22 Так как слово «Поз.» уже присутствует в параметрическом объекте, мы легко можем модифицировать строку в ячейке «G» - просто удалив “Поз. “+

09:07 Редактируем "источник данных" и "строк" второго отчёта в таблице.

Разбор строки subSplit и ctlSetValue.dwg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, это нормально, что любой шаблон отчёта при выборке параметрических объектов (с примитивами такого нет) по области (с набором тоже не повторяется) не видит объекты, у которых Z не строго 0?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Mитька сказал:

Кстати, это нормально, что любой шаблон отчёта при выборке параметрических объектов (с примитивами такого нет) по области (с набором тоже не повторяется) не видит объекты, у которых Z не строго 0?

Видимо я что-то не понял. 20.1 (в шестом тоже проверял)

z не равно 0.dwg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 часов назад, MCAD сказал:

Видимо я что-то не понял. 20.1 (в шестом тоже проверял)

У вас выбор объектов не по области, а в текущем листе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реально ли один объект сконнектить с двумя?
Сделал анкер под плиту, хотел бы, чтобы была возможность указать плоскости у лвух плит, чтобы анкер поменял при этом своё исполнение и одник концом с коннектился с одной точкой, вторым с другой.
Мне кажется это нереально, но всё же вдруг?)
 

Спойлер

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, dromandon сказал:

Мне кажется это нереально, но всё же вдруг?)

Реально. У тебя функция OnСonnect просто будет идти в несколько шагов.

image.png.fca322d107c53a1473d3862f04dafc5d.png

 

У Доктора в блоге есть прекрасная инструкция по созданию тройника. С работающим прототипом вроде даже.

http://doctorraz.blogspot.com/2015/01/DefineDependenciesLesson1part1.html

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Давно хотел выложить. Элементы КМ*.

Во вложении: 4 основных элемента КМ, которыми мы пользуемся в работе и 2 спецификации под них.

 

Делалось под себя и исходя из насущных потребностей. Вдруг у кого такие же...

Изменения: 

image.thumb.png.39b170eb44ff9049ec51d07c2d0b6566.png

1. Переделана система переменных: все ОБЩИЕ свойства профилей подогнаны об единую гребенку, что позволяет оперировать ими из инспектора всеми вместе без дополнительного напряга. Также это облегчает формирование спецификаций металла.

 

2. "Исполнения" (в кавычках, т.к. это нестандартная трактовка, а моя личная). Их 3: 1 - полный вид, 2 - стержень, 3 - контур.

 

3. Пятки и зазоры: актуально для исполнения "стержень" - чисто ВИЗУАЛЬНАЯ характеристика профиля.

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

image.png.4f89ef352d8f745ef1e5790ff587cdc5.png

Всё вышеперечисленное при правильной изначальной отрисовке позволяет МГНОВЕННО переключаться с полного вида профиля на схематичный, не теряя длины профиля для автоматического подсчёта материала, т.е. одновременно и оформлять, и считать.

Не знаю, как кому - а нам очень актуально.

 

4.Ручки базовой оси.

image.png.dc5f45bd9b5f536f886024c8039dcabb.png

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

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

Актуально для всех видов и проекций (включая "стержень"). Уголок затрагивает только на виде сбоку (реальном, а не как программа пишет, продольном т.е.)

Также на видах сбоку эта ручка расположена ближе к НАЧАЛУ профиля и по ней всегда можно понять, в какую сторону будет меняться размер профиля при его изменении из Свойств.

 

5. Опционально добавляет всем профилям штриховой вид.

 

6. Абсолютно у всех профилей при виде сбоку убрана бессмысленная замороженность точки вставки. Удлинять объект тут можно за ОБЕ ручки.

 

7. Уголок: ручки нейтральной оси.

image.png.9ef53ba3b118be7734eeb19f1182bd82.png

Не знаю, кто делал уголки, но он явно не чертил этими уголками КМД со связями. Добавлены 2 ручки по нейтральной оси профиля (оси центра масс, той, что по науке должна приходиться на ось связи). Обе ручки активны. Поворот в случае их использования осуществляется относительно второй аналогичной ручки. Что позволяет быстро расположить уголка по на требуемой оси.

Такое же можно было сделать и для швеллера при виде сверху, но мне было лениво, а нашим не требовалось, так что только уголок. Кому понравится - сам повторит.

 

8. Убраны дополнительные бессмысленные (для нас) дублирующиеся виды профиля. Теперь их всего 3: спереди, сбоку и сверху (т.к. виды спереди и сзади визуально идентичны), а 3D не наша тема. Так что для 3D моделирования это не подойдёт.

 

9. Убраны лишние (опять же для нас) ручки с профилей, оставлены только необходимые.

 

10. Труба: добавлен профиль сечение менее 40мм из соседнего ГОСТа. Не совсем научно, но нам вполне сойдёт, а считать значительно удобней.

image.png.5af9d7f7884cf306886af688ab25199c.png

 

11. Добавлены 3 текстовых примечания и 3 числовых, просто на случай необходимости дополнительно фильтровать профиль в таблицах.

 

12. Спецификации. Просто специфкации. pardon.gif Тут каждый того сАмого как хочет.

image.thumb.png.be99b1525f465019ece711f431847918.png

 

Итого.

Плюсы: тьма.

Минусы:

- отсутствие 3D.

- поскольку в профилях присутствуют "скрытые" ручки, то при их вставке в чертёж (или перерисовки геометрии) в точку 0,0,0 попадает некая фантомная ручка. Которая остаётся привязанной таким образом относительно профиля вечно.

image.png.faafa089a3f216197f0d90e4e9df4345.png

Как это побороть, я не нашёл... Но эта мелочь лично нам не мешает и картины не портит.

 

Собственно и всё вроде, мог что-то забыть, но основняк тут. Всё во вложении. Вся изначальная геометрия профиля (полные виды) правилась текстово, так что геометрию не прилагаю. Соврал. Всё, что есть по геометрии - во вложении.

Всё делалось на базе элементов из Наны СПДС 6.0. Так что последующие исторические изменения этих объектов мои не учитывают.

Ставится поверх базы, НЕ ЗАМЕНЯЯ существующие элементы (ID и имена другие*). У нас выглядит вот так:

image.png.74b758572edb027d620af30b2c146a81.png

 

ДОП (ну мало ли): пользоваться аккуратно и на свой страх и риск!

Не является индивидуальной финансовой рекомендацией. (с)

Выложено скорее как почва разработчикам Базы на "подумать".

Обязательно предварительно скопировать куда-нибудь базовые элементы (ну просто на всякий случай, они не заменятся), надеть защитную маску и соблюдать социальную дистанцию. girl_hospital.gif

 

КМ.rar

КМ на форум.dwg

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...