Revit API Forum
Welcome to Autodesk’s Revit API Forums. Share your knowledge, ask questions, and explore popular Revit API topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Solid LinePattern

12 REPLIES 12
SOLVED
Reply
Message 1 of 13
krispy
3498 Views, 12 Replies

Solid LinePattern

Just wanting to confirm the ElementId of the "Solid" LinePattern. When I retrieve the list of LinePatternElements using a FilteredElementCollector it retrieves all of the line patterns except the built in "Solid" line pattern. Using the RevitLookUp addin I was able to determine the ElementId of the solid linePattern is -3000010 but I just wanted to confirm that this doesn't change between flavours and versions of Revit, and also ask if there is another way to retrieve the ElementId of the "solid" linePattern?

12 REPLIES 12
Message 2 of 13
Joe.Ye
in reply to: krispy


Hi krispy,

I cannot see the LinePattern with the name of Solid. Do you mean the fill pattern? There is a fill pattern named Solid. However its id is 3. Thanks for your clarification.


Joe Ye
Contractor
Developer Technical Services
Autodesk Developer Network
Message 3 of 13
krispy
in reply to: krispy

Hi Joe, thanks for replying. Yes I really mean the line pattern, it is the default pattern that doesn't have any dashes just a single continuous line.
Message 4 of 13
krispy
in reply to: krispy

It does not show up in the list when you select "Line Patterns" from the "Manage" ribbon tab, but will show up when you are assigning object styles or overriding graphics.

Message 5 of 13
Joe.Ye
in reply to: krispy

Thanks Krispy for the update.

yes, I see the solid line pattern now. And I can get its Id from an line pattern overrided element

However, using this ElementId (which value is -3000010.
And we can construct an ElementId with the value of -3000010. And then assign this ElementId to line pattern Id of the OverrideGraphicSettings object to change an element's line pattern.

With regard to the Id unique issue, as far as I know the negative value in Revit is stable. I am double checking with the team if this is the case.


Joe Ye
Contractor
Developer Technical Services
Autodesk Developer Network
Message 6 of 13
Ning_Zhou
in reply to: krispy

hi krispy / joe,

seems i've trouble to get that solid linePattern -3000010 either using lookup or coding, any chance to give a hint? thanks.

Message 7 of 13
krispy
in reply to: krispy

I used the "ProjectionLinePatternId" of the "OverrideGraphicSettings" of a category that I manually overrode the line pattern to be solid in Visibility/Graphics. This told me the ElementId of the "Solid" line pattern... I have been able to use this value in my app to apply the solid line pattern as an override programatcially but have had to hard code the ElementId value in... just wanted to confirm that the Id is stable, or if there is another way to retrieve a reference to the solid line pattern.

 

uidoc.ActiveView.GetCategoryOverrides(categoryId).ProjectionLinePatternId;

Message 8 of 13
Ning_Zhou
in reply to: krispy

thanks krispy, it works, but how can i get it from lookup?
Message 9 of 13
Joe.Ye
in reply to: krispy

Hi Krispy,

Our engineering team confirmed the negative Id value meaning as follow.

"egative element id values in Revit are generally specially designated ids that are known internally to the system. Because they are an internal representation, the Revit team reserves the right to change them when needed, but in all probability they won’t be changed. The number definitely won’t change between flavors of Revit (e.g. Architecture, LT) on the same version."

 

 

Our mentioned to get the solid line pattern element. I tested and it shows that we cannot  filter out the solid line pattern using FilteredElementCollector.   However I don't think it is a problem.

When we want to assign the solid line pattern to a override, we can just create a ElementId object and set its IntegerValue to -3000010. And then assign this ElementId object to the override. This can successfully change the target element's or category's line pattern to solid line pattern.

 

Here is the ShartDevelop code I used.

 

public void ReadElementOverwriteLinePattern()
        {
                Document doc = this.ActiveUIDocument.Document;
            Selection sel = this.ActiveUIDocument.Selection;

            
            ElementId id = new ElementId(-3000010);
            Reference ref2 = sel.PickObject(ObjectType.Element,"Please pick another element");            
            Element elem2 = doc.GetElement(ref2);            
            
            Transaction trans = new Transaction(doc);
            trans.Start("change cut line pattern");
            OverrideGraphicSettings override2 = doc.ActiveView.GetElementOverrides(elem2.Id);
            override2.SetCutLinePatternId(id);
            doc.ActiveView.SetElementOverrides(elem2.Id,override2);
            trans.Commit();
        }



Joe Ye
Contractor
Developer Technical Services
Autodesk Developer Network
Message 10 of 13
krispy
in reply to: Joe.Ye

Thanks Joe, yes I was already doing that to assign the solid pattern. Thanks for the confirmation that there is no other way to get the solid line pattern programatically. I will continue to use the negative ElementId value until it breaks 😉

Message 11 of 13
Joe.Ye
in reply to: Ning_Zhou



We cannot use the Revit lookup to see the solid line pattern. it is special element in revit.

I just found that Revit does provide an API to return the solid line pattern.

LinePatternElement.GetSolidPatternId() static method to return the solid line pattern Id.

The RevitAPI.chm documents says: Note that Solid is special. It isn't a line pattern at all -- it is a special code that tells drawing and export code to use solid lines rather than patterned lines. Solid is visible to the user when selecting line patterns.

So we don't need to worry about the changes of the id integer value. Just call the static method to get the ElementId.



Joe Ye
Contractor
Developer Technical Services
Autodesk Developer Network
Message 12 of 13
krispy
in reply to: Joe.Ye

Good news. I have updated my code and it works well. Thanks Joe.

Message 13 of 13
ahmed.errazak
in reply to: krispy

For to change color with SETELEMENTOVERRIDES is so simply !
è doc.ActiveView.SetElementOverrides(ElementID,color )


But for to read of get color from (ElementID of Object) I not find
Have someone an direction to search?

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Rail Community