public List <LinhaComAtributo> SelecionarDuto() { List <LinhaComAtributo> listaDeDutos = new List <LinhaComAtributo>(); double comprimento = 0; Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; Editor acDocEd = acDoc.Editor; //COMEÇAR UMA TRANSAÇÃO using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { TypedValue[] filList = new TypedValue[1] { new TypedValue((int)DxfCode.Start, "LWPOLYLINE") }; SelectionFilter filter = new SelectionFilter(filList); PromptSelectionOptions opts = new PromptSelectionOptions(); opts.MessageForAdding = "Selecione o(s) duto(s): "; PromptSelectionResult res = acDocEd.GetSelection(opts, filter); if (res.Status == PromptStatus.OK) { SelectionSet selSet = res.Value; ObjectId[] ids = selSet.GetObjectIds(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < ids.Length; i++) { Polyline pl = (Polyline)acTrans.GetObject(ids[i], OpenMode.ForRead); LinhaComAtributo duto = new LinhaComAtributo(); duto.ID = ""; duto.Nome = pl.Layer; duto.Descricao = "Duto de instalação elétrica"; comprimento = Math.Round(pl.Length, 3); duto.Comprimento = comprimento.ToString(); listaDeDutos.Add(duto); } } acTrans.Commit(); } return(listaDeDutos); }
public List <LinhaComAtributo> MontarListaDeDutos(List <Elemento> listaElementos) { List <LinhaComAtributo> listaDutos = new List <LinhaComAtributo>(); List <LinhaComAtributo> listaBlocosCorrigida = new List <LinhaComAtributo>(); try { foreach (Elemento elem in listaElementos) { if (elem.Tipo == "duto") { LinhaComAtributo duto = new LinhaComAtributo(); duto.ID = elem.ID; duto.Nome = elem.Nome; duto.Descricao = elem.Especificacao; duto.Comprimento = elem.Quantificacao; listaDutos.Add(duto); } } } catch { } listaBlocosCorrigida = CorrigirListaDeDutos(listaDutos); return(listaDutos); }