| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > ПО от CSoft > Параметрические объекты СПДС для армирования ЖБК

Параметрические объекты СПДС для армирования ЖБК

Ответ
Поиск в этой теме
Непрочитано 05.02.2013, 13:26 3 |
Параметрические объекты СПДС для армирования ЖБК
swell{d}
 
гадание на конечно-элементной гуще
 
Düsseldorf
Регистрация: 31.05.2006
Сообщений: 7,604

В nanoCAD СПДС пользователь может создавать собственные параметрические объекты.
Использование пользовательских параметрических объектов может компенсировать отсутствующие на данный момент динамические блоки.

Ниже представлено видео Михаила Гладких (mihanick) про создание параметрических объектов на примере элемента обрамления проёмов:
http://youtu.be/EZwO6EIrrKQ

В этой теме буду выкладывать свои наработки. На данный момент есть:
- Фоновое армирование плит
- Обрамление проёмов
- Доп. армирование - зоны распределения
- Сопутствующие таблицы
- Маркеры для обрамлений и зон распределения
- Сваи

Предложения-пожелания приветствуются

Статьи на wiki:
- Основная статья

Видео с примером использования

П.С. Для установки вызвать Базу элементов (из панели инструментов или командой spbrowser). В Базе элементов выбрать любую папку, щёлкнуть по ней правой кнопкой мыши, выбрать импорт из файла и загрузить все файлы с расширением .mcd из распакованного архива

Последняя сборка в сообщении #38 или на вики
__________________
.: WikiЖБК + YouTube :.

Последний раз редактировалось swell{d}, 12.08.2013 в 23:43.
Просмотров: 231524
 
Непрочитано 03.02.2015, 11:43
#401
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


Цитата:
Сообщение от doctorraz Посмотреть сообщение
ты невнимательно читаешь форум :#379
new. существует только внутри OnChangeParameters
Да я читал это сообщение, но у меня отчего-то при изменении параметра из свойств оный не меняется.. Код - аналогичный #398. Точней сказать, меняется, если после N=new.N; поставить вызов MessageBox..
Хотя, - уже решение нашел.. Пару заплаток пришил по нескольким функциям, и пару отпорол, - вроде заработало!
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.02.2015, 12:31
#402
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


lionzoll, он почему то запоминает, что один объект перекрывает другой, и когда отключаешь вырезание, все равно продолжает вырезать. Что бы это прекратить, поставь обоим объектам одинаковый порядок следования.
Что-то он как-то от балды, то перерезает, то не перерезает )) Ну все равно, одинаковый порядок следования вроде бы лечит эту беду.
Konstruktiv54 вне форума  
 
Непрочитано 03.02.2015, 12:40
#403
lionzoll


 
Регистрация: 06.12.2010
Сообщений: 186


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
lionzoll, он почему то запоминает, что один объект перекрывает другой, и когда отключаешь вырезание, все равно продолжает вырезать. Что бы это прекратить, поставь обоим объектам одинаковый порядок следования.
Что-то он как-то от балды, то перерезает, то не перерезает )) Ну все равно, одинаковый порядок следования вроде бы лечит эту беду.
Да, от балды, то режет ,то нет, так порядок следования в свойствах изначально стоит 100 у всех объектов по умолчанию, выбираю все объекты меняю на другой и ничего не меняется ...
lionzoll вне форума  
 
Непрочитано 03.02.2015, 12:43
#404
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Кхм...странно, я меняю, у меня все меняется...
Konstruktiv54 вне форума  
 
Непрочитано 03.02.2015, 12:49
#405
lionzoll


 
Регистрация: 06.12.2010
Сообщений: 186


Цитата:
Сообщение от lionzoll Посмотреть сообщение
Да, от балды, то режет ,то нет, так порядок следования в свойствах изначально стоит 100 у всех объектов по умолчанию, выбираю все объекты меняю на другой и ничего не меняется ...
Вот
Миниатюры
Нажмите на изображение для увеличения
Название: 2015-02-03 12-48-02 Скриншот экрана.png
Просмотров: 44
Размер:	308.8 Кб
ID:	143043  Нажмите на изображение для увеличения
Название: 2015-02-03 12-49-19 Скриншот экрана.png
Просмотров: 46
Размер:	298.0 Кб
ID:	143044  
lionzoll вне форума  
 
Непрочитано 03.02.2015, 12:55
#406
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Попробуй пересоздай заного элементы.
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 03.02.2015, 13:27
#407
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


Цитата:
Сообщение от AlexV Посмотреть сообщение
Вопрос: а в какой функции можно отследить любое изменение параметра?
Вопрос - зачем? Если происходит действие над объектом, то срабатывает OnChangeParameters. Если вы сами пересчитываете какую-то переменную, а от неё зависят другие, то там же пересчитывайте и другие.
У меня это всё в функции вынесено. Что-то поменялось - прогоняю функцией пересчёт всех меняющихся переменных.
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 03.02.2015, 13:27
#408
lionzoll


 
Регистрация: 06.12.2010
Сообщений: 186


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
Попробуй пересоздай заного элементы.
Попробовал перекинул план в новый чертёж, и заново создал там эти 2 распределения, всё ок, но я так уже делал, и думаю ещё придётся (( изначально видимо часть объектов у меня была сделана с той не закомментированной строчкой, и вот теперь глючит...
lionzoll вне форума  
 
Непрочитано 03.02.2015, 14:04
#409
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


Цитата:
Сообщение от swell{d} Посмотреть сообщение
Вопрос - зачем? Если происходит действие над объектом, то срабатывает OnChangeParameters. Если вы сами пересчитываете какую-то переменную, а от неё зависят другие, то там же пересчитывайте и другие.
У меня это всё в функции вынесено. Что-то поменялось - прогоняю функцией пересчёт всех меняющихся переменных.
Да это я заглючил вслед за своим скриптом.. Отчего-то подумал, что OnChangeParameters не обрабатывает изменение параметра из акадоокна свойств.. То бишь "ручками" менялось значение, а через свойства - хрен! Просто было пара лишних строчек с отсылкой к пользовательской функции..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.02.2015, 14:20
#410
lionzoll


 
Регистрация: 06.12.2010
Сообщений: 186


Цитата:
Сообщение от lionzoll Посмотреть сообщение
Попробовал перекинул план в новый чертёж, и заново создал там эти 2 распределения, всё ок, но я так уже делал, и думаю ещё придётся (( изначально видимо часть объектов у меня была сделана с той не закомментированной строчкой, и вот теперь глючит...
Ни хрена, переставил спдс, перекинул всё в новый файл, сделал 2 новых распределения, сначала не перекрывает, потом двигаешь раздвигаешь и бац начинает перекрывать, пипец...
lionzoll вне форума  
 
Непрочитано 03.02.2015, 14:57
#411
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Может после перестановки скрипт объекта восстановился в старом состоянии? ты ж сказал, что работает...
Konstruktiv54 вне форума  
 
Непрочитано 03.02.2015, 15:14
#412
lionzoll


 
Регистрация: 06.12.2010
Сообщений: 186


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
Может после перестановки скрипт объекта восстановился в старом состоянии? ты ж сказал, что работает...
Не, перед перестановкой экспортировал базу...
В том то и дело, я никак не пойму в каких случаях он перекрывает а в каких нет, когда перекинул всё в новый файл, создал новые 2 распределения, вроде всё нормально, потом перемещаешь , раз два три, и в какой-то момент бац, ) и начинает перекрывать...
Вот что заметил,
1.хватаю объект за ручку перемещения и переношу на расстояние N вводя расстояние вручную - ничего не перекрывает.
2.также выделяю объект, нажимаю переместить, и переношу на тоже расстояние N вводя также расстояние вручную - ничего не перекрывает.
3. выделяю, нажимаю переместить , но переношу уже на тоже расстояние не вводя вручную, а при помощи объектной привязки автокада, - соседний объект сразу перекрывается.
это как так...
Точно, как только переношу объект с помощью объектной привязки объект перекрывается, и как без этого работать...
lionzoll вне форума  
 
Непрочитано 03.02.2015, 16:44
#413
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


А почему при анализе функции OnMoveGripPoint в строке
Цитата:
WP0x=Plane(pntGrip0,vecDirection);
выдается ошибка
Цитата:
Строка 193 : синтаксическая ошибка : Unknown name or function - pntGrip0
? В SetGripPoint задано "pntGrip0 = pntOrigin;", причем, если анализ всего скрипта - ошибок нет, а ежели отдельно функции - ошибко.. Причем не только у меня, на объектах swell{d} та же хрень..

али все эти pntGrip0 надо публично объявлять в ActHeader?

Граждане-товарищи, интересно, как быстро у вас получилось лепить нормальные объекты? И как вы себе помогали не запутаться в этих блин точках-ручках-плоскостях? То ли я такой тупой.. Ни фига не пойму, то объект почти работал, а потом -опа - и перестал.. Вообче, - точки и плоскости надо создавать в зависимости от вида (типа, сверху - 3 точки, фронт - 5 и т.д., - где сколько надо), - или сразу объявить все возможные варианты, а в OnMoveGripPoint уже использовать нужные в зависимости от текущего вида?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 03.02.2015 в 18:34.
AlexV вне форума  
 
Непрочитано 03.02.2015, 19:26
#414
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Offtop: быстро только кошки плодятся, иначе у каждого бы давно было по красной кнопке.
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 03.02.2015, 20:47
#415
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


один объект - один вечер. дальше тонкая доработка напильником по замечаниям пользователей объекта.
может юношеская программистская молодость помогает, не знаю...
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 03.02.2015, 22:58
#416
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


Цитата:
Сообщение от swell{d} Посмотреть сообщение
один объект - один вечер. дальше тонкая доработка напильником по замечаниям пользователей объекта.
может юношеская программистская молодость помогает, не знаю...
Юношеская молодость - это вестчь! Мозги перепрограммируются гораздо легче! Жаль, что я не познакомился с языком скриптов лет 10-15 назад..

Вообще, затыки в основном с программированием графики на разных видах.. Метод научного тыка хорошо работает, когда плоскость одна. На 3-х уже втыкается гораздо хуже..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.02.2015, 23:55
#417
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от AlexV Посмотреть сообщение
Метод научного тыка хорошо работает, когда плоскость одна. На 3-х уже втыкается гораздо хуже..
а для чего ты плоскости "втыкаешь"?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 04.02.2015, 00:07
#418
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


Цитата:
Сообщение от doctorraz Посмотреть сообщение
а для чего ты плоскости "втыкаешь"?
Ну, я так понимаю, сначала создаются грипсы в SetGripPoint, потом в OnMoveGripPoint - плоскости, проходящие через них и векторы vecDirection, vecPlane, vecDirection. Ну а в OnMoveGripPoint - вычисляем через них изменения параметров..

Вот, к примеру, кусок быдло-скрипта.. Це с объекта, который вроде как ведет себя более-менее адекватно..

Код:
[Выделить все]
function SetGripPoint {
	if (lViewType == VFRONT) {
		NGrip = 5;
		pntGrip0 = pntOrigin; //нижний левый
		pntGrip1 = pntOrigin + vecDirection*(rOtgib1) + vecPlane*(rDlina); //правый верхний
		pntGrip2 = pntOrigin + vecDirection*(rOtgib2) + vecPlane*(0); //правый нижний
		pntGrip3 = pntOrigin + vecDirection*(0) + vecPlane*(rDlina); //левый верхний	
		pntGrip4 = pntOrigin + vecDirection*(max(rOtgib1;rOtgib2)) + vecPlane*(rDlina/2);
   };
   	if (lViewType == VLEFT) {//
   	 if (blnRaspred !=0){
   	 		NGrip = 5;
   	 		vecNormal=getLocalNormal(vecDirection,vecPlane);
			pntGrip0 = pntOrigin; 
			pntGrip1 = pntOrigin + vecDirection*(rOtgib1) ; //
			pntGrip2 = pntOrigin + vecDirection*(rOtgib2) ; //
			pntGrip3 = pntOrigin + vecDirection*(rX) - vecNormal*(rZona-rY); //
	   		pntGrip4 = pntOrigin + vecDirection*(rX) + vecNormal*(rY); //
	   } else {
   	 		NGrip = 3;
			pntGrip0 = pntOrigin; 
			pntGrip1 = pntOrigin + vecDirection*(rOtgib1) ; //
			pntGrip2 = pntOrigin + vecDirection*(rOtgib2) ; // 
   	 			};
   	 };
   	 if (lViewType == VTOP) {//
   	 	//if (blnRaspred !=0){
   	 		NGrip = 5;
   	 		vecNormal=getLocalNormal(vecDirection,vecPlane);
			pntGrip0 = pntOrigin; 
			pntGrip1 = pntOrigin + vecPlane*(rDlina) ; //
			pntGrip2 = pntOrigin + vecPlane*(rDlina/2) ; //
			pntGrip3 = pntOrigin + vecPlane*(rDlina/2)+ vecNormal*(rZona-rY);// + vecNormal*(rY); //
			pntGrip4 = pntOrigin + vecPlane*(rDlina/2) - vecNormal*(rY); //   
		// } else {
   	 	//	NGrip = 2;
		//	pntGrip0 = pntOrigin; 
		//	pntGrip1 = pntOrigin + vecPlane*(rDlina) 
   	 	//		};
	 };
   	 //VTOP
};// end SetGripPoint 

function OnMoveGripPoint {
	if (lViewType == VFRONT) {
		WP0x=Plane(pntGrip0,vecDirection);
		WP0y=Plane(pntGrip0,vecPlane);
		WP1x=Plane(pntGrip1,vecDirection);
		WP1y=Plane(pntGrip1,vecPlane);
		WP2x=Plane(pntGrip2,vecDirection);
		WP2y=Plane(pntGrip2,vecPlane);
		WP3x=Plane(pntGrip3,vecDirection);
		WP3y=Plane(pntGrip3,vecPlane);
		
		if(NMovingGrip == 0){
			rOtgib2 = -(WP2x - pntGrip0);
			rOtgib1 = -(WP1x - pntGrip0);
			rDlina = -(WP1y - pntGrip0);
			myCheck1();
			//Двигаем точку вставки
			pntOrigin=pntGrip0;
		};	
		if(NMovingGrip == 1){
			rOtgib1 =  WP0x-pntGrip1;
			rDlina = WP0y - pntGrip1;    
		myCheck1();
		};
		if(NMovingGrip == 2){
			rOtgib2 = (WP0x - pntGrip2);
			rDlina = -(WP1y - pntGrip2);
			myCheck1();
		//Двигаем точку вставки
	   pntOrigin=pntGrip3-vecPlane*rDlina;
		};		
		if(NMovingGrip == 3){	
			rOtgib2 = -(WP2x - pntGrip3);
			rOtgib1 = -(WP1x - pntGrip3);
			rDlina = (WP0y - pntGrip3);	
			myCheck1();
			//Двигаем точку вставки
			pntOrigin=pntGrip3-vecPlane*rDlina;		
		};	
		 if(NMovingGrip == 4){
			pntOrigin=pntGrip4-vecPlane*(rDlina/2)-vecDirection*(max(rOtgib1;rOtgib2));    
		};
	 };
	 if (lViewType == VTOP){
	 //if (blnRaspred !=0){
		vecNormal=getLocalNormal(vecDirection,vecPlane);
	 	WP0y=Plane(pntGrip0,vecPlane);
		WP1y=Plane(pntGrip2,vecPlane);
		WP2y=Plane(pntGrip3,vecPlane);
		//WP3x=Plane(pntGrip3,vecDirection);
		//WP4x=Plane(pntGrip2,vecDirection);
		WP0z=Plane(pntGrip0,vecNormal); //vecNormal
		WP3z=Plane(pntGrip3,vecNormal);
		WP4z=Plane(pntGrip4,vecNormal);
	 	if(NMovingGrip == 0){
			//rOtgib2 = -(WP2x - pntGrip0);
			//rOtgib1 = -(WP1x - pntGrip0);
			myCheck1();
			//Двигаем точку вставки
			pntOrigin=pntGrip0;
		};	
		if(NMovingGrip == 2){
		  rY =(WP4z- pntGrip2);
		  pntOrigin=pntGrip2-vecPlane*(rDlina/2);
			//rOtgib1 =  WP0y-pntGrip1;
		myCheck1();
		};
		if(NMovingGrip == 1){
			rDlina = (WP0y - pntGrip1);
			myCheck1();
		};		
		if(NMovingGrip == 3){
			rZona = (WP4z - pntGrip3);
			
			//rY = WP0z- pntGrip3;
			myCheck1();
		};	
		if(NMovingGrip == 4){
			rZona = -(WP3z - pntGrip4);
			rY =-(WP0z- pntGrip4);
	
			myCheck1();
		};	
	// };//end if (blnRaspred !=0)		
	 };//end if (lViewType == VTOP)
		 if (lViewType == VLEFT){
		// if (blnRaspred !=0){
			vecNormal=getLocalNormal(vecDirection,vecPlane);
	 		WP0x=Plane(pntGrip0,vecDirection);
			WP1x=Plane(pntGrip1,vecDirection);
			WP2x=Plane(pntGrip2,vecDirection);
			WP3x=Plane(pntGrip3,vecDirection);
		//WP4x=Plane(pntGrip2,vecDirection);
			WP0z=Plane(pntGrip0,vecNormal); //vecNormal
			WP3z=Plane(pntGrip3,vecNormal);
			WP4z=Plane(pntGrip4,vecNormal);
	 		if(NMovingGrip == 0){
			//rOtgib2 = -(WP2x - pntGrip0);
			//rOtgib1 = -(WP1x - pntGrip0);
			myCheck1();
			//Двигаем точку вставки
			pntOrigin=pntGrip0;
			};	
			if(NMovingGrip == 1){
				rOtgib1 =  WP0x-pntGrip1;
				myCheck1();
			};
			if(NMovingGrip == 2){
				rOtgib2 = (WP0x - pntGrip2);
				myCheck1();
			};		
			if(NMovingGrip == 3){
				rZona = -(WP4z - pntGrip3);
				rX = WP0x- pntGrip3;
			//rY = WP0z- pntGrip3;
				myCheck1();
			};	
			if(NMovingGrip == 4){
				rZona = (WP3z - pntGrip4);
				rY = WP0z- pntGrip4;
				rX = WP0x- pntGrip4;
				myCheck1();
			};	
		//};		
	 };//end if (lViewType == VLEFT)
 
	}//end OnMoveGripPoint //
Вложения
Тип файла: zip Арматура А400 ГОСТ 5781-82 П.zip (25.8 Кб, 35 просмотров)
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 04.02.2015, 01:49
#419
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


Сделал бы разные объекты и не парился...
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 04.02.2015, 10:36
#420
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


А при образмеривании графики имеет значение, какая последовательность выбора точек размера?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > ПО от CSoft > Параметрические объекты СПДС для армирования ЖБК

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПДС Graphics. Интеграция с AutoCAD. Нет панелек СПДС Sn4ke ПО от CSoft 40 31.07.2020 11:52
Не редактируются объекты СПДС 4атланин ПО от CSoft 86 11.12.2017 16:03
Изменения системы СПДС. ГОСТ 21.101-97 и не только! Red_line Архитектура 19 05.08.2010 18:01
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35
СПДС, Автоматическая загрузка при открытии файла Vildar Прочее. Программное обеспечение 11 05.09.2008 16:58