Перейти к публикации

Setsystemvalue3 C++


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

Привет,

Кто небуть помогите,

Надо постабит параметер на "SKETCHSEGMENT", фунция визиваэт ADDDimension, но невстаблеет нужен параметер.


IModelDoc2 pModel2;

 IDimension pDim;

double RK_v;

pModel2.SelectByID("Arc1","SKETCHSEGMENT",0,0,0);

		 pModel2.AddDimension2(0,0,0);	  

		 pDim.SetSystemValue(RK_v);

Наверно што небуть я пропыстил в этом коде, но сам немогу понять што.

Помогите!!!

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


Можно немного и по другому, если не знаем имя размера. Код на C#, на С++ аналогично

public void SetNewDimension()

		{

			bool bDim = iSwApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate);

			if (bDim == true)

				iSwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate, false);



			IModelDoc2 swModel = (IModelDoc2)iSwApp.ActiveDoc;

			int DocType = (int)swModel.GetType();

			if (DocType != (int)swDocumentTypes_e.swDocPART)

				return;

			ISelectionMgr swSelMgr = (ISelectionMgr)swModel.SelectionManager;



			bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

			swModel.AddDimension2(0, 0, 0);

			swModel.ClearSelection();



			bres = swModel.Extension.SelectByID2("", "DIMENSION", 0, 0, 0, false, 0, null, 0);



			double dVal = 0.1; // нужное значение размера в метрах



			IDisplayDimension swDisplayDimension = (IDisplayDimension)swSelMgr.GetSelectedObject5(1);

			IDimension swDimension = (IDimension)swDisplayDimension.IGetDimension();

			swDimension.SetSystemValue3(dVal, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations, null);



			swModel.ClearSelection2(true);

			iSwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate, bDim);

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

Спосибо за советы. Shvg ваш код работает до AddDimension2,

public void SetNewDimension()

{

bool bDim = iSwApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate);

if (bDim == true)

iSwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate, false);

IModelDoc2 swModel = (IModelDoc2)iSwApp.ActiveDoc;

int DocType = (int)swModel.GetType();

if (DocType != (int)swDocumentTypes_e.swDocPART)

return;

ISelectionMgr swSelMgr = (ISelectionMgr)swModel.SelectionManager;

bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

swModel.AddDimension2(0, 0, 0);

а патом, SW ждёт пока я засуну параметер, немомогает ClearSelection(). Здес и зовисает.

Я решил перенастит 3 "SKETCHPOINT" по нужнаму параметру "Arc1". Хоть работает :D

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

Не знаю, у меня работает. Надо бы, наверное, поконкретнее прояснить ситуацию. Что и как у Вас делается до вставки размера?

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

Добры день,

Проблема втом, што я самаумка в програмирование.

Моя програма читает по строкам Excel файл, и чертит контуры в SW потом делает "LOFT".

http://img139.imageshack.us/my.php?image=loftlo8.jpg

http://img139.imageshack.us/my.php?image=loftlo8.jpg

Это приложение к моей дипломной работы, "Параметризация обектов графикий".

1 часть програмы работает отлично, она чертит и делает "LOFT". Я решил ечо зделать и "ReCheck" функцию, каторая корегирует "Sketch" по изменинаму "Excel" файлу(переносит точки).

Так мой код :

boolstatus=pModel2.SelectByID(strSk,"SKETCH",0,0,0);

	   pModel2.EditSketch();

		pModel2.ClearSelection();

		pModel2DocExtension=pModel2.GetExtension();

			

		boolstatus=pModel2.SelectByID("Line1","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line2","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line3","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line4","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line5","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc1","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc2","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc3","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc4","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED"); 

		pModel2.ClearSelection();

 //Смотрит или координаты точи совпадает с "Excel". если нет, то переносит их.

	pModel2DocExtension.SelectByID2(strPointName,"SKETCHPOINT",0,0,0,true,1,NULL,0);

	pSelMgr = pModel2.GetSelectionManager();

	pSPoint=pSelMgr.GetSelectedObject3(1);

	pxSolid = pSPoint.GetX();

	pySolid = pSPoint.GetY();



	if (pxSolid != px || pySolid != py) 

	{

	  pSPoint.SetCoords( px, py,0);

	  pModel2.SketchAddConstraints("sgFIXED");

	  pModel2.ClearSelection();

//Виберает "Arc1" его точки уже переносение по новым координатам, а радиус oсталса старым, так надо изменит и его..

 boolstatus = pMoldel2.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

pModel2.AddDimension2(0, 0, 0);

pModel2.ClearSelection();

Я решил перенести и центр "Арс1". Но все таки есть азарт наити причину почему мне несробатает "AddDimension" и "SetSystemValue3".

И извените за много ошибок.

post-8576-1175061932_thumb.jpg

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

To Rollas

В вашем коде Вы сначала освобождаете "Arc1" от фиксации

boolstatus=pModel2.SelectByID("Arc1","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");
так его можно опять зафиксировать, изменив размер

bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

				if (bres == false)

				{

					Debug.WriteLine("Не выбран Arc1");

					return;

				}

				else

				{

					ISketchSegment swSketchSegment = (ISketchSegment)swSelMgr.GetSelectedObject5(1);

					int TypeSketch = swSketchSegment.GetType();

					if (TypeSketch != (int)swSketchSegments_e.swSketchARC)

						return;

					ISketchArc swSketchArc = (ISketchArc)swSketchSegment;

					double radius = swSketchArc.GetRadius();

					if (radius != newRadius) // newRadius - новое значение, например из Exel

						swSketchArc.SetRadius(newRadius);



					swModel.SketchAddConstraints("sgFIXED");

				}

Ну а если хотите поставить размер, попробуйте:

bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

				if (bres == false)

				{

					Debug.WriteLine("Не выбран Arc1");

					return;

				}

				else

				{

					ISketchSegment swSketchSegment = (ISketchSegment)swSelMgr.GetSelectedObject5(1);

					int TypeSketch = swSketchSegment.GetType();

					if (TypeSketch != (int)swSketchSegments_e.swSketchARC)

						return;

					ISketchArc swSketchArc = (ISketchArc)swSketchSegment;

					double radius = swSketchArc.GetRadius();

					if (radius != newRadius) // newRadius - новое значение, например из Exel

						swSketchArc.SetRadius(newRadius);



					SelectData swSelectData = (SelectData)swSelMgr.CreateSelectData();

					bres = swSketchSegment.Select4(false, swSelectData);

					double xArc = swSelectData.X;

					double yArc = swSelectData.Y;

					double zArc = swSelectData.Z;



					IDisplayDimension swDisplayDimension = (IDisplayDimension)swModel.AddDimension2(xArc, yArc, zArc);

				}

это из моего старого кода, естественно, удалите:

swModel.AddDimension2(0, 0, 0);

			swModel.ClearSelection();



			bres = swModel.Extension.SelectByID2("", "DIMENSION", 0, 0, 0, false, 0, null, 0);



			double dVal = 0.1; // нужное значение размера в метрах



			IDisplayDimension swDisplayDimension = (IDisplayDimension)swSelMgr.GetSelectedObject5(1);

			IDimension swDimension = (IDimension)swDisplayDimension.IGetDimension();

			swDimension.SetSystemValue3(dVal, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations, null);
Ссылка на сообщение
Поделиться на других сайтах

To Shvg,

Огромное спосибо, за вашие советы. Искрене блогодарин и рад, што нашлис Вы и захотели мне помоч. Если года небуть будете у нас в Вилнюсе, в Литве, то угосчю пивом и покрепче.

Надеюс и я когда небуть досдигну токого уравня, штобы мог тадь советы другим.

СПОСИБО!!!!

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

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

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

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

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

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

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • lexx174
    • Snake 60
      Иногда в этом нет необходимости, особенно когда это касается покупной детали, масса которой известна, а нарисована она схематически или упрощенно. Допустим если конструктор захочет дорисовать что-то более подробно, то масса такой детали измениться, а это будет не соответствовать действительности и не всегда уследишь за плотностью такой детали, поэтому мое ИМХО изменение массы вручную иногда полезно и имеет место быть.
    • Killerchik
      Я хочу сказать, что при указанном выше перекосе невозможно будет программными компенсациями добиться перпендикулярности оси шпинделя к поверхности стола и, как следствие, к поверхности детали, притянутой к столу. Как следствие мы получаем неисправимый перекос отверстий при расточке и столь же неисправимый перекос при обработке плоскостей торцом вращающегося инструмента: торцевыми фрезами, чашечными шлифовальными кругами, однозубыми фрезами летучками.
    • Kelny
      Если узел взвешен, то подгоните плотность, это будет лучше соответствовать взвешенному узлу. Заодно проверьте все входящие детали: правильно ли задан материал или плотность, нет ли ошибок в деталях при изготовлении.
    • Alexander.k
      Я новичок  моделировании, много не понимаю.    Мне нужно получить пересечение трёх выдавленных отверстий без без артефактов. Как правильно это сделать? Я попытался создать 3 эскиза по плоскостям.    И пытался выдавить. Не найдя нужного инструмента , выдавил по стеке (хотя понимаю, что это не правильно).   Естественно на пересечении появились  артефакты. Конечно можно было построить в углу шар который убрал бы артефакты. Но я уверен что делаю это не правильно и существует более простой способ. Если не сложно, подскажите пожалуйста .
    • Андрей67
      Здравствуйте! В каталогах производителей зубчатых ремней указан параметр Zmin для каждого типа ремня.     А вот как быть с минимальным охватом шкива, чтоб ремень не разрушился от максимальной нагрузки? Понятное дело, что чем больше охват тем лучше. Но должен же быть и минимум? К примеру, для профиля Т5 как знать этот параметр?
    • Guhl
      Там об этом и написано в последнем абзаце. Видим люфт, переходим в полузамкнутый, побороли люфт, переключаемся в замкнутый контур Люфты вызывают вибрацию, пожтому с ними и борятся.  Не, не, не Ты же сам сказал: я, мол, в прошлый раз бла-бла-бла, тыры-пыры А где он, этот прошлый раз? Это ж легко - взял и дал ссылку на комментарий Ох и фантазёр ты @lem_on А я тебе отвечу, не было его, этого "последнего раза", не было Пора про тебя песню сочинить Ты бы как предпочел - в миноре, аль в мажоре? Или марш сочинить, а?
    • Viktor2004
      Таблица компенсаций позволяет корректировать любую ось в любой точке в зависимости от положения остальных осей. Вот я создаю такую таблицу для компенсации Я буду вести индикатор вдоль оси Y, а компенсировать буду Иксом. Разворачиваю поворотную ось влево на 90 градусов и компенсациями выравниваю игрек за счет икса. Потом поворачиваю стол вправо на 90 градусов. А там мне нужны уже другие компенсации, не те что для минус 90. То есть таблицу я могу составить только для минус 90 либо для плюс 90. Потому что в данные компенсации я могу вносить только константы. Если бы можно было вносить формулы, эту задачу можно было бы решить
    • lem_on
      Так у тебя память как у рыбы, 3 секунды и забыл. Ну или дурака включил, что более вероятно. Так что живи с коричневым носом. Хоть нормальные люди тебя обходить будут. 
    • gudstartup
      ну я же говорю что вы основное не понимаете. функция борется не с люфтом люфт никуда не исчезает а с последствиями которые привносит люфт в полно замкнутый контур регулирования. с люфтом борется напрямую только компенсация его в полузамкнутом контуре.
×
×
  • Создать...