heh, sorry to be caption obvious....
As usual, I solved the immediate problem but the solution was not complete - argh!
Here is what I have:
[CommandMethod("MySolidTest")]
public void MySolidTest()
{
PromptSelectionResult selRes;
PromptSelectionOptions opts = new PromptSelectionOptions();
opts.AllowSubSelections = true;
opts.SingleOnly = true;
Autodesk.AutoCAD.EditorInput.SelectionSet oSS = null;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
Database db = Application.DocumentManager.MdiActiveDocument.Database;
selRes = ed.GetSelection(opts);
Transaction trans;
using (trans = db.TransactionManager.StartTransaction())
{
if (selRes.Status != PromptStatus.OK)
{
return;
}
else
{
oSS = selRes.Value;
for (int i = 0; i < oSS.Count; i++)
{
SelectedObject so = oSS[i];
Entity entity = (Entity)trans.GetObject(oSS[i].ObjectId, OpenMode.ForWrite);
int gsM = oSS[i].GraphicsSystemMarker;
ed.WriteMessage("\n GSMarker: " + gsM.ToString());
Solid3d sol = (Solid3d)entity;
Point3d pt;
Matrix3d mat;
int numIns = new int();
ObjectId[] ids = null;
FullSubentityPath[] fsP = sol.GetSubentityPathsAtGraphicsMarker
(SubentityType.Face, gsM, pt, mat, numIns, ids);
SubentityId sID = fsP[0].SubentId;
SubentityId[] sIDs = new SubentityId[] { sID };
double dTemp = 12.0;
sol.OffsetFaces(sIDs, dTemp);
}
}
}
trans.Dispose();
}
Selecting a face on a solid produces what appears to be a correct SubentityId. It appears to be valid as I did some digging and even tried it out in some of the methods that use it. But, when I try to use it in an array argument like OffsetFaces() above, I get an eInvalidInput error.
I think you can see the significance of how this would work - easily modifiying the lengths of extrusions.