Announcements

The Autodesk Community Forums has a new look. Read more about what's changed on the Community Announcements board.

3Dsolid Mass Properties

k005
Advisor

3Dsolid Mass Properties

k005
Advisor
Advisor

Hello friends;

 

How can I get the Total volumes of a 3Dsolid object or objects with the message box?

I bought the Quantities, but how can I get the Volumes?

 

Thanks in advance to the helper.

 

 

 this.Hide();
            Editor ed = aCap.DocumentManager.MdiActiveDocument.Editor;

            Adb.TypedValue[] filitre = new Adb.TypedValue[1];
            
            filitre.SetValue(new Adb.TypedValue((int)Adb.DxfCode.Start, "3DSOLID"), 0);
            SelectionFilter acSelFtr = new SelectionFilter(filitre);

            var selection = ed.GetSelection(acSelFtr);
            if (selection.Status != PromptStatus.OK)
            {
                ed.WriteMessage("\n\nKatı obje (3DSOLID) Bulunamadı.\n");
                return;
            }

            if (selection.Status == PromptStatus.OK)
            {
                SelectionSet acsset = selection.Value;
                MessageBox.Show("seçilen 3dsolid sayısı: " +
                                        acsset.Count.ToString());
            }

 

 

0 Likes
Reply
Accepted solutions (1)
448 Views
4 Replies
Replies (4)

Alexander.Rivilis
Mentor
Mentor
Solid3d.MassProperties.Volume

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

0 Likes

k005
Advisor
Advisor

@Alexander.Rivilis 

 

Thank you. How is it used in the message box?

0 Likes

Alexander.Rivilis
Mentor
Mentor
Accepted solution
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;


// This line is not mandatory, but improves loading performances
[assembly: CommandClass(typeof(TotalVolume.MyCommands))]

namespace TotalVolume
{
    public class MyCommands
    {
        [CommandMethod("TTV")]
        public void TTV()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            if (doc == null) return;
            Editor ed = doc.Editor;
            TypedValue[] filter = new TypedValue[] 
                { new TypedValue((int)DxfCode.Start, "3DSOLID") };
            SelectionFilter selFilter = new SelectionFilter(filter);
            PromptSelectionOptions pr = new PromptSelectionOptions();
            pr.MessageForAdding = "Add 3DSolid's for select"; 
            pr.MessageForRemoval = "Remove 3DSolid's from selection";
            PromptSelectionResult rs = ed.GetSelection(pr, selFilter);
            if (rs.Status == PromptStatus.OK)
            {
                double vol = 0.0;
                using (Transaction tr = doc.TransactionManager.StartTransaction())
                {
                    foreach (ObjectId id in rs.Value.GetObjectIds())
                    {
                        Solid3d sol = tr.GetObject(id, OpenMode.ForRead) as Solid3d;
                        if (sol != null)
                        {
                            vol += sol.MassProperties.Volume;
                        }
                    }
                }
                Application.ShowAlertDialog("Total Volume: " + vol.ToString());
            }
        }
    }
}

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

k005
Advisor
Advisor

@Alexander.Rivilis 

 

Thank you very much. You have completed the missing piece in my work on densities-weights.

 

0 Likes