Refresh after every pickObject

Refresh after every pickObject

nyhyuqdhyrmmivhncg
Contributor Contributor
824 Views
3 Replies
Message 1 of 4

Refresh after every pickObject

nyhyuqdhyrmmivhncg
Contributor
Contributor

Hello,

I am trying to overwrite graphic of picked element(Room) in active view with temporary view properties ON, but it  only change after transaction end, and without temporary view property. Do you know where might be the problem ?

 

 

 

Transaction g = new Transaction(doc, "TST");
            g.Start();
            view.EnableTemporaryViewPropertiesMode(view.Id);
            try
            {
                while (true)
                {
                    Reference reference2 = uidoc.Selection.PickObject(ObjectType.Element,
                        "Select element");
                    Element o = doc.GetElement(reference2);
                    OverrideGraphicSettings ogs2 = new OverrideGraphicSettings();
                    ogs2.SetHalftone(true);
                    ogs2.SetSurfaceTransparency(100);
                    view.SetElementOverrides(o.Id, ogs2);
                }
            }
            catch (Autodesk.Revit.Exceptions.OperationCanceledException)
            {
            }
            TemporaryViewMode tvm = TemporaryViewMode.TemporaryViewProperties;
            view.DisableTemporaryViewMode(tvm);
            g.Commit();
            return Result.Succeeded;
0 Likes
Accepted solutions (1)
825 Views
3 Replies
Replies (3)
Message 2 of 4

TripleM-Dev.net
Advisor
Advisor
Accepted solution

Hi,

 

Use a TransactionGroup and put each while loop in a Transaction and commit after the pick.

If the changes should be retained, also commit the TransactionGroup at the end.

 

Something like this, could be the "view.EnableTemporaryViewPropertiesMode(view.Id);" also needs it's own transaction + commit.

TransactionGroup gr = new TransactionGroup(doc, "TST");
gr.Start();
	view.EnableTemporaryViewPropertiesMode(view.Id);
	try
	{
		while (true)
		{
			Transaction gs = new Transaction(doc, "TSTSUB");
			{
				gs.start
				try // don't use the try for esc pick action.
				{
					Reference reference2 = uidoc.Selection.PickObject(ObjectType.Element, "Select element");
					// check here if it's a valid reference, if not end while.
					Element o = doc.GetElement(reference2);
					OverrideGraphicSettings ogs2 = new OverrideGraphicSettings();
					ogs2.SetHalftone(true);
					ogs2.SetSurfaceTransparency(100);
					view.SetElementOverrides(o.Id, ogs2);
					gs.commit
				}
				catch (Autodesk.Revit.Exceptions.OperationCanceledException)
				{
				}
			}
		}
	}
	catch (Autodesk.Revit.Exceptions.OperationCanceledException)
	{
	}
	TemporaryViewMode tvm = TemporaryViewMode.TemporaryViewProperties;
	view.DisableTemporaryViewMode(tvm);
gr.Commit();
return Result.Succeeded;

- Michel

0 Likes
Message 3 of 4

nyhyuqdhyrmmivhncg
Contributor
Contributor

thanks it helped, but it's better to call Assimilate method to end transaction group.

0 Likes
Message 4 of 4

TripleM-Dev.net
Advisor
Advisor

I knew i forgot something. 👍

 

- Michel

0 Likes