Перейти к содержанию

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

  • 2 недели спустя...
  • Ответов 925
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Популярные посты

function OnConnect

Если кто пользуется, то обновил обрезку, добавил перекрытие примитивов)  

Часто задают вопросы как заполнять список в comboBox из скрипта. Как правило на вопрос: "Зачем нужно именно так" - ответа нет, но вот один пользователь захотел "Управлять содержимым списка" в зависимо

Изображения в теме

Кто знает, как работать с ключевым словом EndWhile в коде параметрических объектов?

Оно синим подсвечивается, но как заставить его оставить перебор не могу понять)
image.thumb.png.a0af91ab5e20ba8bbe0470c5feae9686.png

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...
В 15.01.2021 в 14:22, dromandon сказал:

Кто знает, как работать с ключевым словом EndWhile в коде параметрических объектов?

Оно синим подсвечивается, но как заставить его оставить перебор не могу понять)
image.thumb.png.a0af91ab5e20ba8bbe0470c5feae9686.png

Перебор останавливает не EndWhile, а While, если условие при нём не выполняется. В вашем случае оно будет выполняться всегда, потому что увеличение i идёт вне цикла, т.е. в цикле всегда i будет одинаковым - в данном случае 1. Перетащите i=i+1; на строку выше, а EndWhile вынесите за скобки.

While (i<100)
{
	i=i+1;
}
EndWhile

 

Изменено пользователем Kreator
Опечатка
Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Kreator сказал:

EndWhile

В скрипте зачем?

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

В скрипте зачем?

Вообще без понятия, я из общих соображений :))

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

В исполнениях без скобок, поэтому EndWhile, кактотакпонимаю))

Ссылка на сообщение
Поделиться на другие сайты
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, т.е. останавливать цикл)
Но понял, что нужно для исполнения)

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

Я надеялся, что оно будет работать как break, т.е. останавливать цикл)

Так и работает, при выполнении условия идет дальше, пока условие цикла не выполнено зачем перепрыгивать?

Изменено пользователем doctorraz
Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, doctorraz сказал:

пока условие цикла не выполнено зачем перепрыгивать?

Видимо нужно было прервать мне цикл, сейчас уже не помню почему)
 

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

Видимо нужно было прервать мне цикл, сейчас уже не помню почему)

В позапрошлом году чет такое лепили... вложенные циклы.. полистай назад..

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

Добрый день, коллеги!

Есть ли возможность разорвать связь параметрического объекта с табличными параметрами? Хочу реализовать возможность выбора из таблицы и ручного ввода параметров, но после выбора из таблицы, вручную значения уже не поменять (возвращаются к выбранным табличным после очередного вызова формы 1).

В прикрепленном примере объект "маркер" может брать параметры из таблицы в объекте "материалы".

_ПКО.mcdi

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

но после выбора из таблицы, вручную значения уже не поменять

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

Всем, добрый день! Подскажите пожалуйста, как распознается длина элементов в параметрических объектах? Через параметр (например размер), объект (например отрезок или полилинию) или по другому ?

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

Всем, добрый день! Подскажите пожалуйста, как распознается длина элементов в параметрических объектах? Через параметр (например размер), объект (например отрезок или полилинию) или по другому ?

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

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

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

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

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

Советую вам открыть справку в программе и по поиску найти нужный вам раздел, касающийся распознавания исполнения) там всё достаточно понятно расписано) 

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

Советую вам открыть справку в программе и по поиску найти нужный вам раздел, касающийся распознавания исполнения) там всё достаточно понятно расписано) 

Если бы там было понятно, я тут бы не спрашивал, казалось бы элементарный вопрос. А еще салют разработчикам за неработающий функционал в 20.1 СПДС (20.1.5304.3354/20.1.3363.5269) в скрипте не присваивает кол-во и движение ручек. Только дописывать не надо, что руками можно прописать, человеку который только начинает разбираться в скрипте.

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

если в блоке будет не хватать параметра к линии

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

добавлено через 6 минут
1 минуту назад, MD27 сказал:

в скрипте не присваивает кол-во и движение ручек

 Это?

3 минуты назад, MD27 сказал:

Только дописывать не надо, что руками можно прописать

 

 

4 минуты назад, MD27 сказал:

А еще салют разработчикам за неработающий функционал

Да вообще бестолковые, ни искусственного интеллекта, ни нейронных сетей. Даже красной кнопки нет 👎 

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

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

Вам отдельное спасибо за Ваши видео на ютуб, процесс обучения идет быстрее. Нет, у меня обычные блоки без массива. Там два вида, есть скрытые линии, и растяжение, ну и получение длины через табл. Пока все делаю на пробной версии, рабочая не работает, я написал об этом Выше. И еще, не могу скрипт обновлять, так как сбрасывает наличие и движение ручек до базовой(то же к предыдущему посту). Придётся все делать руками. Прочитал всю справку распечатал 8 примеров, а до сих пор вопросов много. Пробная версия СПДС+АК, там работает, там сейчас и делаю.

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

"Даже красной кнопки нет 👎 " Сарказм засчитан) Просто хотел как то облегчить и ускорить работу в программе с помощью параметрических блоков, прочитал и изучил часть литературы, я понимаю, что еще много надо понять. Вроде готов создавать несложные параметрические блоки. Создал скрипт, ладно он не прописывает, то что должен. Так и еще и обнуляет скрипт при повторном редактирование. 

Изменено пользователем MD27
Ссылка на сообщение
Поделиться на другие сайты

@MD27, я в загрузки выкладывал несколько параметрических объектов, думаю интересен для вас должен быть объект обрезки прямоугольной, а именно скрипт поведения точек растягивания) 

Изменено пользователем dromandon
Ссылка на сообщение
Поделиться на другие сайты
В 15.05.2021 в 19:42, MD27 сказал:

в скрипте не присваивает кол-во и движение ручек.

Не нашли удачного решения для создания Grip's   в "Мастере объектов". 

Уж очень много на них завязано.

Посмотрите ролик, возможно станет более понятно. Пример я приложил. 

 

Кроме того, все объекты БД могут быть описаны в трёх координатах. 

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

image.thumb.png.b9248a36f8abef2e5f69e45cea7ed6f0.png

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);
	};		
};
Спойлер

image.png.a1016d09365d432b9b8a50a6396c74cd.png

 

 

 

 

Grips Крест.mcd

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

Спасибо за развёрнутый ответ. Продолжаю изучение. Но пока сделал дин. блоки в АК на скорую руку. Так что, теперь торопиться некуда). 

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

Но пока сделал дин. блоки в АК

Так одно другому не мешает,   с блоками тоже можно работать как с объектами.

Самый простой пример:

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

А кто-нибудь может разъяснить, как правильно пользовать messagebox?
Желательно на примере, конечно)
Хочу реализовать запрос, при коннекте к объекту, но у меня какой-то неадекват выходит.

В справке нашёл следующее:
image.png.f2876bad1c52d29f1e63300521f4f6eb.png

У себя в скрипте написал так:
 

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;
		};
	};
}

 

На что при попытки достать перемычку из базы получаю следующее:

В чём косяк? Как правильно работать с этой функцией?)

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

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

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

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

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

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

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

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

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

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!

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