Нужен lisp для вытаскивания высоты 3d примитива ящик
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен lisp для вытаскивания высоты 3d примитива ящик

Нужен lisp для вытаскивания высоты 3d примитива ящик

Ответ
Поиск в этой теме
Непрочитано 03.03.2013, 12:43 #1
Нужен lisp для вытаскивания высоты 3d примитива ящик
PusTIP
 
Регистрация: 18.07.2012
Сообщений: 15

Нужен лисп, похожий на geomprops, т.е. который бы запрашивал выбор объектов, а после выбора выдавал бы сумму высот 3d-примтивов "ящик". было бы здорово, если б он умел вытаскивать и складывать длину 3d объектов полученных операцией сдвиг (в свойствах она, длина, есть). Если это можно сделать стандартными какими-то средствами, то подскажите как.
Если по поводу лиспа, то очень бы хотелось пояснения по поводу работы алгоритма. Я немного почитал и наткнулся на функции типа vla-get-Color. Т.е. я понимаю что нужно организовать ввод (выбор объектов), потом использовать функцию типа vla-get и получить значения, в принципе без разницы в каком виде (либо сразу сумма, либо просто набор значений типа(100 200 150 300)). Ну в общем все. Спасибо огромное за внимание и помошь!
Просмотров: 3727
 
Непрочитано 03.03.2013, 13:37
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Ошибся веткой форума. Тебе сюда.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 03.03.2013, 15:14
#3
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от PusTIP Посмотреть сообщение
Т.е. я понимаю что нужно организовать ввод (выбор объектов), потом использовать функцию типа vla-get и получить значения,
К сожалению здесь такое не прокатит - можно рыть в DXF или .Net см. пример, еще один и этот. Как это "разрыть" .Net я тоже как-то писал, но мне чего-то не найти.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 03.03.2013 в 15:21.
Дима_ вне форума  
 
Автор темы   Непрочитано 03.03.2013, 22:29
#4
PusTIP


 
Регистрация: 18.07.2012
Сообщений: 15


Спасибо огромное, буду пробовать
PusTIP вне форума  
 
Непрочитано 03.03.2013, 23:04
#5
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Как это "разрыть" .Net я тоже как-то писал, но мне чего-то не найти.
Я ищу размеры таким макаром SolidMassProperties (A 2010)

Код:
[Выделить все]
        [CommandMethod("bibo", CommandFlags.UsePickSet)]
        public void testBoxDimensions()
        {

            Entity ent;

            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;

            Editor ed = doc.Editor;

            Database db = doc.Database;

            Transaction tr = doc.TransactionManager.StartTransaction();

            using (tr)
            {

                PromptEntityOptions peo = new PromptEntityOptions("\nPlease select a solid  >>");

                peo.SetRejectMessage("\nObject is not a solid");

                peo.AddAllowedClass(typeof(Solid3d), false);

                PromptEntityResult res;

                res = ed.GetEntity(peo);

                if (res.Status != PromptStatus.OK)  return;

                ent = (Entity)tr.GetObject(res.ObjectId, OpenMode.ForRead);

                if (ent == null) return;

                Solid3d sol = (Solid3d)ent as Solid3d;

                if (sol == null) return;

                double length, width, height,volume;
          
                Point3d centroid;

                Extents3d extents;

                Autodesk.AutoCAD.DatabaseServices.Solid3dMassProperties mprops = sol.MassProperties;

                extents = mprops.Extents;

                volume = mprops.Volume;

                centroid = mprops.Centroid;

                Point3d max = extents.MaxPoint;

                Point3d min = extents.MinPoint;

                length = max.X - min.X;

                width = max.Y - min.Y;

                height = max.Z - min.Z;

                 volume = (max.X - min.X) * (max.Y - min.Y) * (max.Z - min.Z);

                 string infos = string.Format("Length = {0:f3}\nwidth = {1:f3}\nHeight = {2:f3}\nVolume = {3:f6}", length, width, height,volume);

                 Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(infos);

        }
    }
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 04.03.2013, 20:50
#6
PusTIP


 
Регистрация: 18.07.2012
Сообщений: 15


эммм..) а можно то же самое только скомпиленное?.. я так понял это visual studio надо ставить... Был бы очень признателен...
PusTIP вне форума  
 
Непрочитано 04.03.2013, 20:52
#7
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от PusTIP Посмотреть сообщение
можно то же самое только скомпиленное?.. я так понял это visual studio надо ставить... Был бы очень признателен...
Могу только для 2010 версии, других нету
https://dl.dropbox.com/u/18024145/GetBoundBox.dll

Последний раз редактировалось Олег (jr.), 04.03.2013 в 21:44.
Олег (jr.) вне форума  
 
Непрочитано 04.03.2013, 21:55
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Цитата:
Сообщение от PusTIP Посмотреть сообщение
я так понял это visual studio надо ставить...
Можно и SharpDevelop - он, кажется, тоже на С# компилирует сборки под AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2013, 22:05
#9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
а можно то же самое только скомпиленное?.. я так понял это visual studio надо ставить...
такое можно и на лиспе, мне кажется, написать
gomer вне форума  
 
Непрочитано 04.03.2013, 22:23
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


компилятор c# есть и в "голом" составе .Net
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 04.03.2013, 23:12
#11
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от gomer Посмотреть сообщение
такое можно и на лиспе, мне кажется, написать
Естественно, но это то что было под рукой,
как раз этим занимался
Рад что работает
Олег (jr.) вне форума  
 
Непрочитано 05.03.2013, 01:11
#12
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Рад что работает
Только это не совсем то, потому что вычисляет габариты объекта, а нужны размеры...
gomer вне форума  
 
Автор темы   Непрочитано 05.03.2013, 20:28
#13
PusTIP


 
Регистрация: 18.07.2012
Сообщений: 15


Ребятушки я дико извиняюсь, чувствую себя утырком)) И все-таки..) Как оно должно работать? Подгружаю командой netload, он загружает .dll. Как запустить сам процесс? В командной строке пробовал getboundbox и bibo. Поясните пожалуйста...
PusTIP вне форума  
 
Непрочитано 05.03.2013, 22:31
#14
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811



Должно запускаться автоматом только выбирай объекты по-одному,
см. в командной строке подсказку, на экране должна показываться
нужная информация; без настройки UCS относительно сторон,
лучше попробовать в 3Д
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 06.03.2013, 09:53
#15
PusTIP


 
Регистрация: 18.07.2012
Сообщений: 15


Спасибо, попробовал на работе. Дома кад 2013, оно поэтому и не заработало. На 12-м все хорошо. В этой программке судя по всему метод т.к. она просто дублирует свойства. Свойства можно посмотреть и просто так. В этом самом .net я шарю еще хуже чем в lisp, если это возможно...) Если кто-нибудь ее немного доработает, что бы вывод в какой-нибудь текстовик шел и боксы можно было б кучей выделять было б офигенно. Ну а я пока буду пробовать познать азы лиспа
PusTIP вне форума  
 
Непрочитано 06.03.2013, 10:08
#16
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Олег (jr.), а есть разница между Solid->MassProperties->Extens и Solid->GetBoundingBox?
Do$ вне форума  
 
Непрочитано 06.03.2013, 10:31
1 | #17
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Do$ Посмотреть сообщение
а есть разница между Solid->MassProperties->Extens и Solid->GetBoundingBox?
Первое дает истинные размеры и остальные прибамбасы солида,
второе дает габаритный ящик который зависит от положения солида,
поворот, оси и т д
Олег (jr.) вне форума  
 
Непрочитано 06.03.2013, 19:15
#18
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Первое дает истинные размеры и остальные прибамбасы солида,
второе дает габаритный ящик который зависит от положения солида,
поворот, оси и т д
Значит все таки ошибся. В лиспе можно посмотреть PrincipialDirections для поиска размеров
gomer вне форума  
 
Непрочитано 07.03.2013, 11:59
#19
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от gomer Посмотреть сообщение
В лиспе можно посмотреть PrincipialDirections для поиска размеров
В SolidMassProperties тоже есть такая возможность, но тогда нужно устанавливать
систему координат соответственно нужной грани
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужен lisp для вытаскивания высоты 3d примитива ящик



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
AutoCAD 2009 нужен ли Direct 3D Grishanovich_din AutoCAD 4 23.06.2008 22:45
Нужен Lisp для работы с типами линий Gostushev LISP 12 06.07.2005 14:50
нужен LISP для округления координат. X-DeViL LISP 7 17.06.2005 20:52
Нужен 3D чертеж метромоста (Лужники) Геннадий aka PG AutoCAD 2 20.11.2003 09:36