Part of Line Element during Jig is invisible
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
hi, I am new here to post my questions.
I code a element jig function based on DuplicateGraphics examples of SDK,but it fails to work well as shown in the attacthed Media . The core code is as follows.
//Setting BoundingBox
public Outline GetBoundingBox(Autodesk.Revit.DB.View dBView)
{
if (mListLines.IsEmpty())
{
return null;
}
CurveTwoEndPointEntity mFirstCurveTwoEndPointEntity = mListLines.First().GetCurveTwoEndPointEntity();
Outline mOutline = new Outline(mFirstCurveTwoEndPointEntity.StartPoint.SetZTo(-1), mFirstCurveTwoEndPointEntity.EndPoint.SetZTo(1));
foreach (Line mLine in mListLines)
{
List<XYZ> mListXYZs = mLine.GetCurveTwoEndPointEntity().ToList();
foreach (XYZ mXYZ in mListXYZs)
{
mOutline.AddPoint(mXYZ);
}
}
return mOutline;
}
//Render Scene
RevitBufferStorage mRevitBufferStorage = new RevitBufferStorage(mDisplayStyle);
foreach (Line mLine in mListLines)
{
CurveTwoEndPointEntity mCurveTwoEndPointEntity = mLine.GetCurveTwoEndPointEntity();
List<XYZ> mListXYZs = mCurveTwoEndPointEntity.ToList();
mRevitBufferStorage.VertexBufferCount += mListXYZs.Count;
mRevitBufferStorage.PrimitiveCount += mListXYZs.Count - 1;
mRevitBufferStorage.EdgeXYZs.Add(mListXYZs);
mRevitBufferStorage.FormatBits = VertexFormatBits.Position;
int mBufferSize = VertexPosition.GetSizeInFloats() * mRevitBufferStorage.VertexBufferCount;
mRevitBufferStorage.VertexBuffer = new VertexBuffer(mBufferSize);
mRevitBufferStorage.VertexBuffer.Map(mBufferSize);
VertexStreamPosition mVertexStreamPosition = mRevitBufferStorage.VertexBuffer.GetVertexStreamPosition();
foreach (List<XYZ> mSubListXYZs in mRevitBufferStorage.EdgeXYZs)
{
foreach (XYZ mXYZ in mSubListXYZs)
{
mVertexStreamPosition.AddVertex(new VertexPosition(mXYZ));
}
}
mRevitBufferStorage.VertexBuffer.Unmap();
mRevitBufferStorage.IndexBufferCount = mRevitBufferStorage.PrimitiveCount * IndexLine.GetSizeInShortInts();
int mIndexBufferSize = 1 * mRevitBufferStorage.IndexBufferCount;
mRevitBufferStorage.IndexBuffer = new IndexBuffer(mIndexBufferSize);
mRevitBufferStorage.IndexBuffer.Map(mIndexBufferSize);
IndexStreamLine mIndexStreamLine = mRevitBufferStorage.IndexBuffer.GetIndexStreamLine();
int i = 0;
foreach (List<XYZ> mSubListXYZs in mRevitBufferStorage.EdgeXYZs)
{
mIndexStreamLine.AddLine(new IndexLine(2 * i, 2 * i + 1));
i++;
}
mRevitBufferStorage.IndexBuffer.Unmap();
mRevitBufferStorage.VertexFormat = new VertexFormat(mRevitBufferStorage.FormatBits);
mRevitBufferStorage.EffectInstance = new EffectInstance(mRevitBufferStorage.FormatBits);
}