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

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 пользователей

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




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