MCAD Posted January 7, 2021 Report Share Posted January 7, 2021 Кажется понял :-) @Xekkuc 2021_01_07_15_00_43_840x480.avi 1 Quote Link to comment Share on other sites More sharing options...
dromandon Posted January 15, 2021 Report Share Posted January 15, 2021 Кто знает, как работать с ключевым словом EndWhile в коде параметрических объектов? Оно синим подсвечивается, но как заставить его оставить перебор не могу понять) Quote Link to comment Share on other sites More sharing options...
MCAD Posted January 15, 2021 Report Share Posted January 15, 2021 Используется в "Исполнении" - поэтому и подсвечивает. Quote Link to comment Share on other sites More sharing options...
Kreator Posted March 2, 2021 Report Share Posted March 2, 2021 (edited) В 15.01.2021 в 14:22, dromandon сказал: Кто знает, как работать с ключевым словом EndWhile в коде параметрических объектов? Оно синим подсвечивается, но как заставить его оставить перебор не могу понять) Перебор останавливает не EndWhile, а While, если условие при нём не выполняется. В вашем случае оно будет выполняться всегда, потому что увеличение i идёт вне цикла, т.е. в цикле всегда i будет одинаковым - в данном случае 1. Перетащите i=i+1; на строку выше, а EndWhile вынесите за скобки. While (i<100) { i=i+1; } EndWhile Edited March 2, 2021 by Kreator Опечатка 2 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted March 2, 2021 Report Share Posted March 2, 2021 9 минут назад, Kreator сказал: EndWhile В скрипте зачем? Quote Link to comment Share on other sites More sharing options...
Kreator Posted March 2, 2021 Report Share Posted March 2, 2021 1 минуту назад, doctorraz сказал: В скрипте зачем? Вообще без понятия, я из общих соображений :)) Quote Link to comment Share on other sites More sharing options...
doctorraz Posted March 2, 2021 Report Share Posted March 2, 2021 В исполнениях без скобок, поэтому EndWhile, кактотакпонимаю)) Quote Link to comment Share on other sites More sharing options...
dromandon Posted March 2, 2021 Report Share Posted March 2, 2021 (edited) 53 минуты назад, Kreator сказал: Перебор останавливает не EndWhile, а While, если условие при нём не выполняется. В вашем случае оно будет выполняться всегда, потому что увеличение i идёт вне цикла, т.е. в цикле всегда i будет одинаковым - в данном случае 1. Перетащите i=i+1; на строку выше, а EndWhile вынесите за скобки. While (i<100) { i=i+1; } EndWhile While (i<100) { i=i+1; } EndWhile Я надеялся, что оно будет работать как break, т.е. останавливать цикл) Но понял, что нужно для исполнения) Edited March 2, 2021 by dromandon Quote Link to comment Share on other sites More sharing options...
doctorraz Posted March 2, 2021 Report Share Posted March 2, 2021 (edited) 18 минут назад, dromandon сказал: Я надеялся, что оно будет работать как break, т.е. останавливать цикл) Так и работает, при выполнении условия идет дальше, пока условие цикла не выполнено зачем перепрыгивать? Edited March 2, 2021 by doctorraz Quote Link to comment Share on other sites More sharing options...
dromandon Posted March 2, 2021 Report Share Posted March 2, 2021 4 минуты назад, doctorraz сказал: пока условие цикла не выполнено зачем перепрыгивать? Видимо нужно было прервать мне цикл, сейчас уже не помню почему) Quote Link to comment Share on other sites More sharing options...
doctorraz Posted March 2, 2021 Report Share Posted March 2, 2021 14 минут назад, dromandon сказал: Видимо нужно было прервать мне цикл, сейчас уже не помню почему) В позапрошлом году чет такое лепили... вложенные циклы.. полистай назад.. Quote Link to comment Share on other sites More sharing options...
AlExTs Posted March 14, 2021 Report Share Posted March 14, 2021 Добрый день, коллеги! Есть ли возможность разорвать связь параметрического объекта с табличными параметрами? Хочу реализовать возможность выбора из таблицы и ручного ввода параметров, но после выбора из таблицы, вручную значения уже не поменять (возвращаются к выбранным табличным после очередного вызова формы 1). В прикрепленном примере объект "маркер" может брать параметры из таблицы в объекте "материалы". _ПКО.mcdi Quote Link to comment Share on other sites More sharing options...
MCAD Posted March 14, 2021 Report Share Posted March 14, 2021 1 час назад, AlExTs сказал: но после выбора из таблицы, вручную значения уже не поменять Вот, кажется, пример, который показывает как менять источник. Но там не автоматически, а по выбору Quote Link to comment Share on other sites More sharing options...
MD27 Posted May 15, 2021 Report Share Posted May 15, 2021 Всем, добрый день! Подскажите пожалуйста, как распознается длина элементов в параметрических объектах? Через параметр (например размер), объект (например отрезок или полилинию) или по другому ? Quote Link to comment Share on other sites More sharing options...
dromandon Posted May 15, 2021 Report Share Posted May 15, 2021 11 минут назад, MD27 сказал: Всем, добрый день! Подскажите пожалуйста, как распознается длина элементов в параметрических объектах? Через параметр (например размер), объект (например отрезок или полилинию) или по другому ? Если я правильно понимаю вопрос, то через образмеренный примитив) если размер не будет ни к чему привязан, он выделится красным) а если к примитиву не будет привязан размер и тот будет неопределенной длины, по появится в бесконечность уходящий красный размер с привязкой от базовой точки до непривязанного конка приметива) 1 Quote Link to comment Share on other sites More sharing options...
MD27 Posted May 15, 2021 Report Share Posted May 15, 2021 9 минут назад, dromandon сказал: Если я правильно понимаю вопрос, то через образмеренный примитив) если размер не будет ни к чему привязан, он выделится красным) а если к примитиву не будет привязан размер и тот будет неопределенной длины, по появится в бесконечность уходящий красный размер с привязкой от базовой точки до непривязанного конка приметива) Я правильно понимаю, если в блоке будет не хватать параметра к линии, то длину этой линии я не смогу получить. Если есть 2 одинаковые линии в блоке, то длину могу получить через 1 параметр привязанный к одной линии и остальное по формуле (например длина линии умноженная на 2), это так? Quote Link to comment Share on other sites More sharing options...
dromandon Posted May 15, 2021 Report Share Posted May 15, 2021 Советую вам открыть справку в программе и по поиску найти нужный вам раздел, касающийся распознавания исполнения) там всё достаточно понятно расписано) 1 Quote Link to comment Share on other sites More sharing options...
MD27 Posted May 15, 2021 Report Share Posted May 15, 2021 7 минут назад, dromandon сказал: Советую вам открыть справку в программе и по поиску найти нужный вам раздел, касающийся распознавания исполнения) там всё достаточно понятно расписано) Если бы там было понятно, я тут бы не спрашивал, казалось бы элементарный вопрос. А еще салют разработчикам за неработающий функционал в 20.1 СПДС (20.1.5304.3354/20.1.3363.5269) в скрипте не присваивает кол-во и движение ручек. Только дописывать не надо, что руками можно прописать, человеку который только начинает разбираться в скрипте. Quote Link to comment Share on other sites More sharing options...
MCAD Posted May 15, 2021 Report Share Posted May 15, 2021 12 минут назад, MD27 сказал: если в блоке будет не хватать параметра к линии Вы, случайно, не массив объекте делаете? Только там используются блоки при распознавании графики добавлено через 6 минут 1 минуту назад, MD27 сказал: в скрипте не присваивает кол-во и движение ручек Это? 3 минуты назад, MD27 сказал: Только дописывать не надо, что руками можно прописать 4 минуты назад, MD27 сказал: А еще салют разработчикам за неработающий функционал Да вообще бестолковые, ни искусственного интеллекта, ни нейронных сетей. Даже красной кнопки нет 👎 1 2 Quote Link to comment Share on other sites More sharing options...
MD27 Posted May 15, 2021 Report Share Posted May 15, 2021 (edited) 20 минут назад, MCAD сказал: Вы, случайно, не массив объекте делаете? Только там используются блоки при распознавании графики Вам отдельное спасибо за Ваши видео на ютуб, процесс обучения идет быстрее. Нет, у меня обычные блоки без массива. Там два вида, есть скрытые линии, и растяжение, ну и получение длины через табл. Пока все делаю на пробной версии, рабочая не работает, я написал об этом Выше. И еще, не могу скрипт обновлять, так как сбрасывает наличие и движение ручек до базовой(то же к предыдущему посту). Придётся все делать руками. Прочитал всю справку распечатал 8 примеров, а до сих пор вопросов много. Пробная версия СПДС+АК, там работает, там сейчас и делаю. ------------------------------------------------------------------------------------------------------- "Даже красной кнопки нет 👎 " Сарказм засчитан) Просто хотел как то облегчить и ускорить работу в программе с помощью параметрических блоков, прочитал и изучил часть литературы, я понимаю, что еще много надо понять. Вроде готов создавать несложные параметрические блоки. Создал скрипт, ладно он не прописывает, то что должен. Так и еще и обнуляет скрипт при повторном редактирование. Edited May 15, 2021 by MD27 1 Quote Link to comment Share on other sites More sharing options...
dromandon Posted May 15, 2021 Report Share Posted May 15, 2021 (edited) @MD27, я в загрузки выкладывал несколько параметрических объектов, думаю интересен для вас должен быть объект обрезки прямоугольной, а именно скрипт поведения точек растягивания) Edited May 21, 2021 by dromandon 1 Quote Link to comment Share on other sites More sharing options...
MCAD Posted May 17, 2021 Report Share Posted May 17, 2021 В 15.05.2021 в 19:42, MD27 сказал: в скрипте не присваивает кол-во и движение ручек. Не нашли удачного решения для создания Grip's в "Мастере объектов". Уж очень много на них завязано. Посмотрите ролик, возможно станет более понятно. Пример я приложил. Кроме того, все объекты БД могут быть описаны в трёх координатах. Если посмотреть на них в изометрии (при выделенных объектах) ну будет более понятно function SetGripPoint { NGrip = 4; pntGrip0 = pntOrigin; //ручка длины pntGrip1 = pntOrigin+L*vecDirection; //Ручка высоты двутавра pntGrip2 = pntOrigin+h*vecPlane; //Ручка ширины полки двутавра vecNormal=getLocalNormal(vecDirection,vecPlane); pntGrip3 = pntOrigin+vecNormal*b/2; }; function OnMoveGripPoint{ if (NMovingGrip == 0) { pntOrigin = pntGrip0; }; //ручка длины if(NMovingGrip == 1){ L = max(vecLen(pntGrip0 - pntGrip1)/rScl,1); vecDirection = pntGrip1 - pntGrip0; }; //Ручка высоты двутавра if(NMovingGrip == 2){ //Так как, в данном конкретном случае параметры b и h являются табличными //(ограничены СТО АСЧМ 20-93),создаём временную переменную rNew_h. //Значение будет определяться как размер между точками pntGrip0 - pntGrip2 rNew_h = vecLen(pntGrip0 - pntGrip2)/rScl; LoadInCache( seria, h, b ); // подбираем ближайшие значения. При этом, табличное значение "h" будет сравниваться //с ближайшим к rNew_h SelectInCache( "kFirst", "seria", "~", seria, "h", "~", rNew_h, "b", "~", b); }; //Ручка ширины полки двутавра. Действиия аналогично с движдением NMovingGrip == 2 if(NMovingGrip == 3){ rNew_b = 2*vecLen(pntGrip0 - pntGrip3)/rScl; LoadInCache( seria, b,h ); SelectInCache( "kFirst", "seria","~",seria, "b", "~", rNew_b, "h", "~", h); }; }; Спойлер Grips Крест.mcd 3 1 Quote Link to comment Share on other sites More sharing options...
MD27 Posted May 18, 2021 Report Share Posted May 18, 2021 Спасибо за развёрнутый ответ. Продолжаю изучение. Но пока сделал дин. блоки в АК на скорую руку. Так что, теперь торопиться некуда). 1 Quote Link to comment Share on other sites More sharing options...
MCAD Posted May 18, 2021 Report Share Posted May 18, 2021 1 минуту назад, MD27 сказал: Но пока сделал дин. блоки в АК Так одно другому не мешает, с блоками тоже можно работать как с объектами. Самый простой пример: 3 Quote Link to comment Share on other sites More sharing options...
dromandon Posted May 24, 2021 Report Share Posted May 24, 2021 А кто-нибудь может разъяснить, как правильно пользовать messagebox? Желательно на примере, конечно) Хочу реализовать запрос, при коннекте к объекту, но у меня какой-то неадекват выходит. В справке нашёл следующее: У себя в скрипте написал так: function OnConnect { if(rPart == 0) { if(obj.strTheType == "Дверь" && obj.strTheName == "Дверь не базовая" { SetGeomConstraint(INSERT,CODIRECT,obj,WP1,obj.WP1,0,FALSE); SetParamConstraint(rLengthHole, obj, EXPR, "obj.rLength", FALSE); SetParamConstraint(rWideHole, obj, EXPR, "obj.rWidth", FALSE); NoVectorSelect = 1; sTypeLintelBlocks=2; if(IDNO == MessageBox("Несущая пермычка?", MB_YESNO, MB_ICONQUESTION)) { sTypeLintelBlocks=1; } LintelBlocksAutoSelection(); CenterAll(); Handled = OBJ_HANDLED; }; }; } На что при попытки достать перемычку из базы получаю следующее: D29fP0A2eK.mp4 В чём косяк? Как правильно работать с этой функцией?) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.