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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помощь в составлении макроса указывающего центр массы фигуры

Помощь в составлении макроса указывающего центр массы фигуры

Ответ
Поиск в этой теме
Непрочитано 10.04.2019, 20:18 #1
Помощь в составлении макроса указывающего центр массы фигуры
mr.frai1992
 
Регистрация: 10.04.2019
Сообщений: 47

Идея такая: по нажатию клавиши сначала выполняется команда _region выделяем замкнутый контур, он преобразуется в область, далее вызывается команда _massprop которая и находит координаты центра тяжести. Остается только построить круг с центром по найденным координатам с небольшим диаметром (использовать в качестве маркера).
команда очень облегчила бы мне работу, но своих знаний чтобы написать макрос не хватает пока...
Вот то что я пробовал
^C^C_region;_masspropp;
он только определяет область а геометрия и масса не запускается.
А как извлечь полученные координаты центра масс и подставить их для центра круга (маркера) вообще не представляю (вообще это можно сделать на уровне макросов или как-то иначе нужно?).
Надеюсь на вашу помощь
Просмотров: 4955
 
Непрочитано 10.04.2019, 21:08
#2
h5r32


 
Регистрация: 28.12.2011
СПб
Сообщений: 843


А чем не подходят готовые лиспы для определения геометрических характеристик?
h5r32 вне форума  
 
Автор темы   Непрочитано 10.04.2019, 21:17
#3
mr.frai1992


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


Цитата:
Сообщение от h5r32 Посмотреть сообщение
А чем не подходят готовые лиспы для определения геометрических характеристик?
Не нашел подходящего
родные команды хорошо с этим справляются вот только не знаю как их увязать чтобы результат получать в два клика а не 22
mr.frai1992 вне форума  
 
Непрочитано 10.04.2019, 21:52
#4
Кулик Алексей aka kpblc
Moderator

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


См.опции неявно вызываемой команды _.select
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2019, 22:11
#5
Cfytrr

Балка на балку, кирпич на кирпич...
 
Регистрация: 09.10.2007
Питер
Сообщений: 4,811
Отправить сообщение для Cfytrr с помощью Skype™


mr.frai1992,
попробуйте вот это, ставит точку в цт региона
Вложения
Тип файла: lsp set-center-3d-m.lsp (10.4 Кб, 29 просмотров)
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Автор темы   Непрочитано 10.04.2019, 23:01
#6
mr.frai1992


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


Cfytrr, попробовал ничего не вышло. может что не так делаю
сохранил лисп, загрузил через _appload, нарисовал ломанную замкнутую фигуру полилинией, попробовал команду SET-CENTER-3D-M, не распознало объект, преобразовал _REGION, попробовал SET-CENTER-3D-M, объект распознало но центр не появился

Кулик Алексей aka kpblc, извините не понимаю
mr.frai1992 вне форума  
 
Непрочитано 10.04.2019, 23:53
#7
Kaha251184


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


Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
Идея такая: по нажатию клавиши сначала выполняется команда _region выделяем замкнутый контур, он преобразуется в область, далее вызывается команда _massprop которая и находит координаты центра тяжести. Остается только построить круг с центром по найденным координатам с небольшим диаметром (использовать в качестве маркера).
Попробуйте через Action Reader. https://www.youtube.com/results?sear...reader+autocad
Kaha251184 вне форума  
 
Автор темы   Непрочитано 11.04.2019, 08:04
#8
mr.frai1992


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


я правильно понимаю что родные команды через макросы связать невозможно/сложно?
Про редактор операций понял буду пробовать

----- добавлено через ~15 мин. -----
остается както вынять кординаты из massprop
например
ОБЛАСТИ ----------------------
Площадь: 68246242.9320
Периметр: 36761.8892
Ограничивающая рамка: X: -365149.6701 -- -352168.8256
Y: 179013.5611 -- 185320.1754
Центр масс: X: -358192.2099
Y: 181959.2076
Моменты инерции: X: 2.2598E+18
Y: 8.7569E+18
Ц/беж. мом. инерции: XY: 4.4480E+18
Радиусы инерции: X: 181967.0468
Y: 358208.5905
Главные моменты и направления X-Y относительно центра масс:
I: 1.9292E+14 вдоль [0.9985 0.0541]
J: 8.0266E+14 вдоль [-0.0541 0.9985]
для того чтобы они сами подставлялись в начало построения маркера центра
mr.frai1992 вне форума  
 
Непрочитано 11.04.2019, 08:27
#9
Семёныч


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


Вопросы автору темы:
1. Вам нужен именно макрос меню или же программа на каком-либо языке программирования? Для запуска программы возможен специальный макрос с кнопкой или без.
2. Чертежи выполняются в масштабе 1:1 или другом?
Семёныч вне форума  
 
Автор темы   Непрочитано 11.04.2019, 08:39
#10
mr.frai1992


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


не принципиально что именно я просто начал с того что хоть немного понимаю, а так цель определить центр тяжести неправильной формы фигуры парой кликов
чертежи все 1к1
mr.frai1992 вне форума  
 
Непрочитано 11.04.2019, 08:45
#11
gumel


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


Не знаю где я это взял, 99% что тут ))

ставит точку в центре тяжести полилинии/региона
Вложения
Тип файла: lsp centr.lsp (3.3 Кб, 22 просмотров)
gumel вне форума  
 
Непрочитано 11.04.2019, 09:00
#12
Семёныч


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


Если не принципиально, то вот пример простой программы на VLisp без всяких проверок, которая делает то, что вам нужно:
Код:
[Выделить все]
(defun C:CENMASS ( / obj ent vobj cen)
(setq obj (car (entsel "\nВыберите замкнутый контур: ")))
(if obj
    (progn
    (vl-cmdf "_REGION" "_L" "")
    (setq ent (entlast))
    (setq vobj (vlax-ename->vla-object ent))
    (setq cen_var (vlax-get-property vobj'Centroid))
    (setq cen (vlax-safearray->list (vlax-variant-value cen_var)))
    (vl-cmdf "_CIRCLE" cen "500")
    )
)
(princ)
)
Скопировать текст программы в командную строку и нажать Enter.
Для запуска программы ввести команду CENMASS.

Последний раз редактировалось Семёныч, 11.04.2019 в 10:11. Причина: Заменил выражение (progn) на (princ) и заменил опцию _p на опцию _L (предыдущий на последний).
Семёныч вне форума  
 
Автор темы   Непрочитано 11.04.2019, 09:03
#13
mr.frai1992


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


gumel, не работает у меня он почему-то объект когда выбираешь вроде определяет но точки не ставит и вообще ничего не ставит
пробовал на двух разных компьютерах с 2014 и 2016 автокадом
тоже самое и с лиспом от Cfytrr
mr.frai1992 вне форума  
 
Непрочитано 11.04.2019, 09:20
#14
Кулик Алексей aka kpblc
Moderator

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


Может, проблема в файле? Точнее, в обрабатываемых примитивах?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.04.2019, 09:29
#15
mr.frai1992


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


Семёныч, попробовал для прямоугольника ставит а для фигуры неправильной формы ошибка

Нажмите на изображение для увеличения
Название: 2019-04-11_091143.jpg
Просмотров: 20
Размер:	199.5 Кб
ID:	212937

----- добавлено через ~2 мин. -----
Кулик Алексей aka kpblc, не знаю
пробовал и просто замкнутым контуром и преобразованным в область
mr.frai1992 вне форума  
 
Непрочитано 11.04.2019, 09:36
#16
Кулик Алексей aka kpblc
Moderator

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


Это был намек на то, что неплохо было бы предоставить свой файлик. Может, там область вообще в принципе создаваться не может.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.04.2019, 09:40
#17
mr.frai1992


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


нету своего(
не способный я на написание самостоятельных лиспов или вы чертеж имеете ввиду?

----- добавлено через ~23 мин. -----
попробовал создать новый пустой файл чертежа и скопировал туда свой рабочий чертеж там попробовал лисп от gumel, все заработало) ура!))
оказалось у меня с файликом чтото не то было Кулик Алексей aka kpblc, вы были правы
Спасибо всем за помощь!)
mr.frai1992 вне форума  
 
Непрочитано 11.04.2019, 10:03
#18
Кулик Алексей aka kpblc
Moderator

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


Чертеж, конечно!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.04.2019, 10:14
#19
Семёныч


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


Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
Семёныч, попробовал для прямоугольника ставит а для фигуры неправильной формы ошибка
Внесены изменения в текст программы в # 12.
Семёныч вне форума  
 
Автор темы   Непрочитано 11.04.2019, 10:27
#20
mr.frai1992


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


Семёныч, попробовал работает) Спасибо!
mr.frai1992 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помощь в составлении макроса указывающего центр массы фигуры

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить к какому объекту относится центр? Den Commander AutoCAD 4 21.03.2017 18:17
LISP: центр масс фигуры по координатам WhiteShark Готовые программы 1 13.01.2015 22:14
Помогите, пожалуйста, найти центр тяжести сложной плоской фигуры. linki770 Разное 12 16.05.2013 00:17
VBA узнать центр дуги в полилинии AnteC Программирование 3 02.02.2013 01:27
Какой учеб. центр в Киеве учит работать с продук. Autodesk Silavsale Разное 2 03.12.2007 19:01