Тема: Внутренний язык объектов СПДС

Где можно найти инфу по синтаксису внутреннего языка описания объектов СПДС ? Имеется ввиду язык для создания пользовательских объектов.

Re: Внутренний язык объектов СПДС

> demontage
Тут: http://files.mcad.ru/ForSite/MCS_dbScript.htm

Re: Внутренний язык объектов СПДС

MechWizard как инструмент разработки БД MechaniCS и СПДС GraphiCS
Курс рассчитан на пользователей AutoCAD и Inventor, заинтересованных в развитии БД. Желательно, чтобы пользователю были предварительно вычитаны курсы AutoCAD level 1 и MechaniCS & СПДС.
Цель курса: Научить пользователей самостоятельной разработке стандартных деталей БД.
http://dwg.ru/dnl/4787

Re: Внутренний язык объектов СПДС

Подскажите пожалуйста, где можно всетаки найти справочную информацию о скрипте? Hе о стандартных функциях, а о примитивах отрисовки объекта. UText(), USymbol(), LineToA(), Arc(), Hatch() и т.п.
Еще возникают глюки с операторами. if(...) {...}; не всегда работает. Иногда помогает такое:
if(); ...; ...; EndIf;
While вообще логикой не поймешь. Работает, когда хочет и как хочет.
Методом тыка приходится работать, хотелось бы посмотреть на описание скрипта.
Спасибо.

Re: Внутренний язык объектов СПДС

Михаил пишет:

Методом тыка приходится работать, хотелось бы посмотреть на описание скрипта.
Спасибо.

Пользуйтесь автоматическим распознаванием "Вида". "Ручное описание" графики модели практически не реально!

Re: Внутренний язык объектов СПДС

Яков, автоматическое распознавание не дает того, что нужно. Массивы могут состоять только из блоков, даже обычную динамическую шкалу не создать (с подписями делений n, n+1, n+2...). Толщина линий текста не задается (я по крайней мере не нашел описания того, как в блок вставить корректно текст, как его привязать, как геометрическую длину текста использовать). Так же не смог я задать толщину эллиптическим примитивам.
Автораспознавание создает массив точек (node12345), в сложном объекте оперативка съедается моментом (что сказывается на скорости либо приводит к зависаниям).
Самый простейший объект - изогнутый отвод. Кроме диамтра трубы и радиуса отвода хочу использовать пространственные углы поворота. Возникают ситуации, когда эллипс вырождается в отрезок, чего в примитиве автокада не предусмотрено. Если вписать if() нельзя, то что можно?
Можно много примеров тут писать, доказывая необходимость лезть в скрипт...
Отметки уровня, размеры и возможность штрихового перекрытия - полезные вещи, но без возможности применять их на объектах, которые нереально автораспознаванием создать, их польза пропадает.

Re: Внутренний язык объектов СПДС

Михаил, расписать в двух, трех постах  все тонкости автоматического распознавания не реально. Тем более,  как Вы надеюсь понимаете, слово автоматическое несет в себе некоторую вариативность, и , как следствие возникают сложности с созданием сложных параметрических объектов.  Опыт показывает, что без обучения документация не помогает.  Мы искренне будем рады принять Вас в нашем учебном классе smile

Re: Внутренний язык объектов СПДС

ПРЕАМБУЛА.
Уже почти расстроился и опустил свои «пользовательские ручки» (время потратил, а оказывается «руками не трогать»), но неожиданно пришел ответ по существу. :)
Толщину текста я так и задавал, все таки это не совсем правильно (и далее, можно изменить на чертеже параметр примитива в объекте, текст в число таких примитивов не включен). А длину, занимаемую текстом, есть возможность получить? Или только «ручками»? :)
Объекты конечно не на 100к, но есть ли другие ограничения (вложенность операторов например)?
На счет «ГОСТЕЙ», работаю по этому поводу с начальством. Я в гости к вам зайти был бы рад. Надеюсь, что можно разобраться по существу, а не остаться у разбитого корыта, прослушав вводный курс «Лекции о справке СПДС для чайников, и за что отрубаем пользовательские ручки». :)
ТЕСТИРОВАНИЕ ОПЕРАТОРОВ (объект – горизонтальная черточка длиной L, точка вставки слева, ручка с параметром и расстоянием L справа, парочка публичных флажков h1 и h2):

Version = 2; // То есть while() {} и if() {} else {}; (а если без else, то if() {}; или if() {})
Line(mp,mp+L*oX,1,1);
ii=0;
while(ii<L) // while не подсвечивается. Это синоним While? If и if, Endif и endif… Где список синонимов глянуть можно?
{
    Line(mp+ii*oX,mp+ii*oX+2*oY,1,1);
    ii=ii+1;
}
if(h1)
{
    Line(mp+2*oY,mp+L*oX+2*oY,1,1); //вместо L не работало ii, а что с этой переменной стало?
}
else
{
    kk=0; // ii ? переменные одноразовые?
    while(kk<L)
    {
        Line(mp+(kk-1)*oX,mp+kk*oX+2*oY,1,1);
        if(h2) // Если h1=0 и h2=1, то зависание (далее фатальная ошибка: недостаточно памяти – завершение приложения…). В каком месте я дурак?
        {
            Line(mp+(kk+1)*oX,mp+kk*oX+2*oY,1,1);
        }
        else
        {
            Line(mp+(kk+1)*oX,mp+kk*oX+2*oY,2,1);
        };
        kk=kk+1;
    }
};  // Если поиграть внешним видом кода (пробелы, ентеры и табуляции), то можно добиться невозможного: палочки из второго цикла чертятся немного слева от места, где они по логике должны были стоять.

РЕЗЮМЕ:
1.    Геометрическая длина текста. Есть функция или «определять ручками»?
2.    Озвучьте ограничения, пожалуйста, если таковые есть.
3.    Информация для похода в гости. Есть ли прием гостей в СПб? Рекламка для агитации начальника к принятию решения не помешает, если есть. :)
4.    Разбор кода (вопросы в комментариях кода)
Вот такие пирожки.
Яков, огромное Вам спасибо, что откликаетесь. Приятно быть услышанным. :)

Re: Внутренний язык объектов СПДС

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

Re: Внутренний язык объектов СПДС

Светлана. Не секрет. Хотя описать не знаю как...
Некоторые чертежи не являются "сборкой деталей", там и масштаб зачастую всегда один.
Допустим объект такой (чертеж - продольный профиль подземной коммуникации): вертикальная палочка, сверху эллипс/(блок эллипсов)/(прямоугольник)/(кружок со стрелочкой "под напряжением"), на палочке вертикальный текст - обозначение объекта (+ состояние объекта), отметка уровня сверху эллипса/(снизу)/(по центру). Это другая коммуникация, "пересекающая" рассматриваемую на чертеже.
Если эти объекты стоят рядом, то тексты друг на друге получаются. Поэтому текст можно вертикально вдоль палочки двигать. Далее этот текст получается зачеркнут палочкой другой "пересечки". Поэтому область текста надо сделать областью перекрытия (в тексте автокада есть непрозрачный фон, но его в объект СПДС не запихать, хотя может у меня просто нет достаточной информации о примитивах).

Выглядит как записка из дурдома. :) Если хотите, могу прислать Вам рисунок(-ки), чтобы попонятнее было. :)

Re: Внутренний язык объектов СПДС

Яков, продолжаю.
Текст в объекте с пользовательской точки зрения иногда удобнее маркера.
Про форму, она устраивает, куда прислать рисунки, где видно о чем я говорю? Еще можно было бы сделать целочисленные параметры и менять их "счетчиком", но это уже удобные "излишества". :) Это так, когда заняться будет нечем.
Нет пределов совершенству, не всегда всё получается. Но всё поправимо. :)
На счет фатального падения, тут нужна инструкция. Я нашел только один файл MCD (Пользовательские.mcd), Вам он нужен?
Исходник с графикой и размерами - модель объекта? Или объект, вставленный в файл?
И куда всё прислать то?

Re: Внутренний язык объектов СПДС

Михаил пишет:

Если хотите, могу прислать Вам рисунок(-ки), чтобы попонятнее было.

Присылайте рисунок или чертеж, опубликуем, так будет понятно и полезно другим посетителям форума.

Re: Внутренний язык объектов СПДС

Михаил пишет:

И куда всё прислать то?

Смотри а PM smile

Re: Внутренний язык объектов СПДС

Не нашел, куда присылать.
Перехожу на другой форум.
Написал длинное сообщение, но истекла сессия. :( Набирать всё второй раз не хочу.
Всем спасибо.

Re: Внутренний язык объектов СПДС

Сорри, заглянул в персональные сообщения...
Всё перешлю.

Re: Внутренний язык объектов СПДС

Михаил пишет:

Всё перешлю.

А так ничего и не пришло. Жаль. Такая дискуссия разгоралась.

Re: Внутренний язык объектов СПДС

Скажите пожалуйста можно с помощью функции SetParamConstraint получать параметры с не библиотечных объектов таких как форма помещения, уневирсальный маркер. Если да то как?

Re: Внутренний язык объектов СПДС

Можно с помощью функции SetParamConstraint получать параметры с не библиотечных объектов таких как форма помещения, уневирсальный маркер?

Данная функция относится к скрипту только стандартных элементов.
Параметры формы помещения и универсального маркера можно получать таблицами СПДС GraphiCS.

Re: Внутренний язык объектов СПДС

Игорь Важинский пишет:

Скажите пожалуйста можно с помощью функции SetParamConstraint получать параметры с не библиотечных объектов таких как форма помещения, уневирсальный маркер. Если да то как?

Уточните вашу задачу!?!

Re: Внутренний язык объектов СПДС

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

Re: Внутренний язык объектов СПДС

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

Re: Внутренний язык объектов СПДС

Тогда как в ведомости отделки помещений указать какому помещению какие проемы принадлежат? Вот если их привязать к маркеру в котором производилось бы вычитание проемов из общей площади стен (которую просто получить из формы помещения через высоту и периметр) тогда без проблем можно транслировать в табличную форму. Если такая возможность есть то хотябы в общих словах если можно.

Re: Внутренний язык объектов СПДС

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

Re: Внутренний язык объектов СПДС

В табличном редакторе есть фукции скрыть строки и столбцы. Вопрос: есть переменая которую можно было бы использовать совместно с функцией if что бы скрывать пустые столбцы (например сделать ведомость расхода стали на все возможные диаметры. столбцы со значениями показывались а пустые скрывались)

Re: Внутренний язык объектов СПДС

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

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