Part of Line Element during Jig is invisible

Part of Line Element during Jig is invisible

caoli_aubrey
Explorer Explorer
313 Views
1 Reply
Message 1 of 2

Part of Line Element during Jig is invisible

caoli_aubrey
Explorer
Explorer

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);
}

0 Likes
314 Views
1 Reply
Reply (1)
Message 2 of 2

lutingtingWKN8V
Explorer
Explorer

I face the same problem, could any give some advice?

0 Likes