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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как найти центр массы плиты??

Как найти центр массы плиты??

Ответ
Поиск в этой теме
Непрочитано 20.05.2009, 13:23 #1
Как найти центр массы плиты??
Homer
 
Регистрация: 01.10.2008
Сообщений: 64

Дана плита с пустотами! как расчитать центр ее массы??
расчет необходим для привязки монтажных петель!!!

Вложения
Тип файла: dwg
DWG 2007
Плита..dwg (1.09 Мб, 2129 просмотров)

Просмотров: 11401
 
Непрочитано 20.05.2009, 14:09
#2
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,202


В акаде строите регион(контур плиты) вычитаете из него отверстия, поставте ноль ПСК куда-нибудь, затем команда massprop вернет вам cenroid относительно вашего нуля.
stas_org вне форума  
 
Непрочитано 20.05.2009, 14:10
#3
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ну, на сколько я еще что-то помню, то надо построить сетку и определить плотность в каждой точке сетки. Затем найти скажем по оси Х центр тяжести на всех горизонталях и вес в этих центрах, построить график перемещения центра тяжести по Y. Сделать сечение по этой кривой и найти в ней центр тяжести.
Supermax вне форума  
 
Непрочитано 20.05.2009, 14:13
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Нужно построить 3D модель плиты и затем вызвать _massprop. См. приложенный файл.
Вложения
Тип файла: zip pack.zip (58.1 Кб, 186 просмотров)
Makswell вне форума  
 
Автор темы   Непрочитано 20.05.2009, 14:32
#5
Homer


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


Цитата:
Сообщение от Makswell Посмотреть сообщение
Нужно построить 3D модель плиты и затем вызвать _massprop. См. приложенный файл.
координаты всякий раз "прыгают" и причем наглядно видно что не в центре масс(((
Homer вне форума  
 
Непрочитано 20.05.2009, 14:41
#6
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Homer Посмотреть сообщение
координаты всякий раз "прыгают" и причем наглядно видно что не в центре масс(((
Расшифруй, что значит "прыгают"?
Makswell вне форума  
 
Автор темы   Непрочитано 20.05.2009, 14:45
#7
Homer


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


Цитата:
Сообщение от Homer Посмотреть сообщение
координаты всякий раз "прыгают" и причем наглядно видно что не в центре масс(((
а нет, прошу прощения, считает одинаково!
НО!!!! оно тупо в центр прямоугольной плиты ставит координаты!! как будто нет проемов!!!
Homer вне форума  
 
Непрочитано 20.05.2009, 15:02
#8
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Homer Посмотреть сообщение
а нет, прошу прощения, считает одинаково!
НО!!!! оно тупо в центр прямоугольной плиты ставит координаты!! как будто нет проемов!!!
Да вроде не совсем в центр. Думаешь не правильно?
Makswell вне форума  
 
Автор темы   Непрочитано 20.05.2009, 15:38
#9
Homer


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


да!! не совсем!!!
наверное придется согласиться с автокадом!!
хотя визуальное восприятие отказывается соглашаться)))
Homer вне форума  
 
Непрочитано 20.05.2009, 15:53
#10
viking1963

Расчеты конструкций (SCAD 11.5; Мономах 4.5; STARK ES); Техническое Обследование Зданий и Сооружений
 
Регистрация: 20.03.2009
до VIII-2009-жил в Золотой Орде (Северное Джайляу, Улус Джучи),с VIII-2009 переехал в Россию (СЗФО)
Сообщений: 2,080
Отправить сообщение для viking1963 с помощью Skype™


Странно, в SCAD-e выдает почти ту же картинку, хотя, вроде-бы должно быть не совсем так.
Миниатюры
Нажмите на изображение для увеличения
Название: Центр масс.JPG
Просмотров: 337
Размер:	54.2 Кб
ID:	20743  
viking1963 вне форума  
 
Автор темы   Непрочитано 20.05.2009, 16:05
#11
Homer


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


значит надо думать правильно!!
потому как в двух независимых программах одинаковый результат!!
Homer вне форума  
 
Непрочитано 20.05.2009, 16:05
#12
Foksolic

инженер-конструктор
 
Регистрация: 26.01.2008
СПб
Сообщений: 523
<phrase 1= Отправить сообщение для Foksolic с помощью Skype™


Кто нибудь помнит сопромат??? Статический момент инерци и т.д.
Откройте книжку!!!!
эти формулы не чего не напоминают? (смотри вложения)
Миниатюры
Нажмите на изображение для увеличения
Название: формулы.jpg
Просмотров: 352
Размер:	72.1 Кб
ID:	20744  
__________________
私は読んで考える、私が勉強しています。:read:

Последний раз редактировалось Foksolic, 20.05.2009 в 16:13.
Foksolic вне форума  
 
Автор темы   Непрочитано 20.05.2009, 16:21
#13
Homer


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


Цитата:
Сообщение от Foksolic Посмотреть сообщение
Кто нибудь помнит сопромат??? Статический момент инерци и т.д.
Откройте книжку!!!!
эти формулы не чего не напоминают? (смотри вложения)
ну это на много маленьких объектов надо разбивать мою плиту!!
проще в программе посчитать!!
Homer вне форума  
 
Непрочитано 20.05.2009, 16:24
#14
eilukha


 
Регистрация: 10.09.2007
Сообщений: 10,592


вот по Компасу (см. файл)
Вложения
Тип файла: pdf 333.pdf (9.5 Кб, 180 просмотров)
eilukha вне форума  
 
Непрочитано 20.05.2009, 16:29
#15
viking1963

Расчеты конструкций (SCAD 11.5; Мономах 4.5; STARK ES); Техническое Обследование Зданий и Сооружений
 
Регистрация: 20.03.2009
до VIII-2009-жил в Золотой Орде (Северное Джайляу, Улус Джучи),с VIII-2009 переехал в Россию (СЗФО)
Сообщений: 2,080
Отправить сообщение для viking1963 с помощью Skype™


Ну, блин "замес", пошел, Автокад, Скад, Компас, "рукопашка"
надоб Лиру еще с Мономахом...
(Homer, может, просто Вашу плиту на пенек поставить и туды-сюды качнуть, центр масс и определится?)
(замерить микрометром, отмечать мелом, отрубать топором (+ - полметра в строительстве допустимо)...

Последний раз редактировалось viking1963, 20.05.2009 в 16:36.
viking1963 вне форума  
 
Непрочитано 20.05.2009, 16:42
#16
Foksolic

инженер-конструктор
 
Регистрация: 26.01.2008
СПб
Сообщений: 523
<phrase 1= Отправить сообщение для Foksolic с помощью Skype™


Цитата:
Сообщение от viking1963 Посмотреть сообщение
Ну, блин "замес", пошел, Автокад, Скад, Компас, "рукопашка"
надоб Лиру еще с Мономахом...
(Homer, может, просто Вашу плиту на пенек поставить и туды-сюды качнуть, центр масс и определится?)
(замерить микрометром, отмечать мелом, отрубать топором (+ - полметра в строительстве допустимо)...
D
__________________
私は読んで考える、私が勉強しています。:read:
Foksolic вне форума  
 
Непрочитано 20.05.2009, 17:07
#17
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А вы разрежте плиту пополам, через точку, которую _massprop выдает и тем же _massprop сравните объем обеих частей. Центр тяжести плиты, это такая точка, если через нее резать по прямой плиту, то всегда, не зависимо от градуса поворота оси разреза, должны быть одинаковые объемы (массы) обеих частей.
Да, и не путать с равновесием! Равновесие может зависеть от точки подвески. Плита-то толщину имеет. Надо считать будто она на острие поставлена. Да и не факт, что равновесие может быть стабильным. Если на ось подвески при наклоне плиты наедет сектор проема в плите, то равновесие нарушится. У некоторых предметов может быть несколько равновесных состояний (все из-за того, что они толщину имеют и неоднородности в ней).

Последний раз редактировалось Supermax, 20.05.2009 в 17:54.
Supermax вне форума  
 
Непрочитано 20.05.2009, 21:46
#18
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Все ! Господа трудящиеся я балдею! Живот лопнет от смеха, в отпуск, иду и буду изучать с внуком таблицу умножения (скоро в школу), а то он сразу в инете игры находит, безобразие какое-то... Центр масс не найти. Да в свое время - вручную находили.
__________________
С уважением sbi

Последний раз редактировалось sbi, 20.05.2009 в 21:54.
sbi вне форума  
 
Автор темы   Непрочитано 21.05.2009, 08:50
#19
Homer


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


Цитата:
Сообщение от sbi Посмотреть сообщение
Все ! Господа трудящиеся я балдею! Живот лопнет от смеха, в отпуск, иду и буду изучать с внуком таблицу умножения (скоро в школу), а то он сразу в инете игры находит, безобразие какое-то... Центр масс не найти. Да в свое время - вручную находили.
ну простите если ваз раздрожает мой вопрос!!!
но представьте если мне надо посчитать таких плит 10, или 50!?!?
и проемы в них на разных местах!!!! тогда как??? тоже вручную!??!
Homer вне форума  
 
Непрочитано 21.05.2009, 09:32
1 | 1 #20
Кулик Алексей aka kpblc
Moderator

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


Ну тогда лови код. Правда, только для 3D. В твоем варианте я бы задумывался о полноценном применении 3-мерки с последующими разрезами уже по твердому телу
Код:
[Выделить все]
(defun c:set-center-3d (/ adoc blk ent blk_name)
  (vl-load-com)
  (if (and (= (type (setq ent (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (car (entsel "\nУкажите 3D-твердое тело <Отмена> : "))
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'ename
              ) ;_ end of =
           (= (cdr (assoc 0 (entget ent))) "3DSOLID")
           ) ;_ end of and
    (progn
      (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
      (setq ent      (vlax-ename->vla-object ent)
            blk_name "kpblc_dwgru_CenterPoint3D"
            blk      ((lambda (/ item lst_layers pt)
                        (if (vl-catch-all-error-p
                              (setq item (vl-catch-all-apply
                                           (function
                                             (lambda ()
                                               (vla-item (vla-get-blocks adoc) blk_name)
                                               ) ;_ end of lambda
                                             ) ;_ end of function
                                           ) ;_ end of vl-catch-all-apply
                                    ) ;_ end of setq
                              ) ;_ end of vl-catch-all-error-p
                          (progn
                            (setq item       (vla-add (vla-get-blocks adoc) (vlax-3d-point '(0. 0. 0.)) blk_name)
                                  lst_layers (mapcar (function
                                                       (lambda (x / tmp)
                                                         (setq tmp (list x
                                                                         (cons "freeze" x)
                                                                         (cons "lock" x)
                                                                         ) ;_ end of list
                                                               ) ;_ end of setq
                                                         (foreach prop '("freeze" "lock")
                                                           (vl-catch-all-apply
                                                             (function
                                                               (lambda ()
                                                                 (vlax-put-property x prop :vlax-false)
                                                                 ) ;_ end of lambda
                                                               ) ;_ end of function
                                                             ) ;_ end of vl-catch-all-apply
                                                           ) ;_ end of foreach
                                                         ) ;_ end of lambda
                                                       ) ;_ end of function
                                                     ((lambda (/ _res)
                                                        (vlax-for item (vla-get-layers adoc)
                                                          (setq _res (cons item _res))
                                                          ) ;_ end of vlax-for
                                                        ) ;_ end of lambda
                                                      )
                                                     ) ;_ end of mapcar
                                  ) ;_ end of setq
                            (foreach norm '((0. 0. 1.) (0. 1. 0.) (1. 0. 0.))
                              (setq pt (vla-addpoint item (vlax-3d-point '(0. 0. 0.))))
                              (vla-put-layer pt "0")
                              (vla-put-color pt 0)
                              (vla-put-lineweight pt aclnwtbyblock)
                              (vla-put-linetype pt "ByBlock")
                              (vla-put-normal pt (vlax-3d-point norm))
                              ) ;_ end of foreach
                            (foreach layer lst_layers
                              (foreach prop (cdr layer)
                                (vl-catch-all-apply
                                  (function
                                    (lambda ()
                                      (vlax-put-property (car layer) (car prop) (cdr prop))
                                      ) ;_ end of lambda
                                    ) ;_ end of function
                                  ) ;_ end of vl-catch-all-apply
                                ) ;_ end of foreach
                              ) ;_ end of foreach
                            ) ;_ end of progn
                          ) ;_ end of if
                        item
                        ) ;_ end of lambda
                      )
            ) ;_ end of setq
      (vla-insertblock
        (vla-objectidtoobject
          adoc
          (vla-get-ownerid ent)
          ) ;_ end of vla-objectidtoobject
        (vlax-3d-point (vlax-safearray->list (vlax-variant-value (vla-get-centroid ent))))
        blk_name
        1.
        1.
        1.
        0.
        ) ;_ end of vla-InsertBlock
      (vla-endundomark adoc)
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
---
Добавлено:
Код для нескольких элементов. Обрабатывает 3DSOLID и REGION.
Код:
[Выделить все]
(defun c:set-center-3d-m (/                      adoc                   blk                    selset
                          ent                    ins                    blk_name               _kpblc-conv-ent-to-vla
                          *error*                _kpblc-conv-ent-to-ename                      _kpblc-conv-vla-to-list
                          _kpblc-conv-selset-to-ename                   _kpblc-conv-selset-to-vla
                          )
  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (defun _kpblc-conv-ent-to-vla (ent_value / res)
                                ;|
*    Функция преобразования полученного значения в vla-указатель.
*    Параметры вызова:
*	ent_value	значение, которое надо преобразовать в указатель. Может
*			быть именем примитива, vla-указателем или просто
*			списком.
*			Если не принадлежит ни одному из указанных типов,
*			возвращается nil
*    Примеры вызова:
(_kpblc-conv-ent-to-vla (entlast))
(_kpblc-conv-ent-to-vla (vlax-ename->vla-object (entlast)))
|;
    (cond
      ((= (type ent_value) 'vla-object) ent_value)
      ((= (type ent_value) 'ename) (vlax-ename->vla-object ent_value))
      ((setq res (_kpblc-conv-ent-to-ename ent_value))
       (vlax-ename->vla-object res)
       )
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-ent-to-ename (ent_value /)
                                  ;|
*    Функция преобразования полученного значения в ename
*    Параметры вызова:
*	ent_value	значение, которое надо преобразовать в примитив. Может
*			быть именем примитива, vla-указателем или просто
*			списком.
*			Если не принадлежит ни одному из указанных типов,
*			возвращается nil
*    Примеры вызова:
(_kpblc-conv-ent-to-ename (entlast))
(_kpblc-conv-ent-to-ename (vlax-ename->vla-object (entlast)))
|;
    (cond
      ((= (type ent_value) 'vla-object)
       (vlax-vla-object->ename ent_value)
       )
      ((= (type ent_value) 'ename) ent_value)
      ((= (type ent_value) 'str) (handent ent_value))
      ((= (type ent_value) 'list) (cdr (assoc -1 ent_value)))
      (t nil)
      ) ;_ end of cond
    ) ;_ end of defun


  (defun _kpblc-conv-vla-to-list (value / res)
                                 ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((listp value)
       (mapcar '_kpblc-conv-vla-to-list value)
       )
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (_kpblc-conv-vla-to-list (vlax-safearray->list value))
         ) ;_ end of if
       )
      ((and (member (type value) (list 'ename 'str 'vla-object))
            (setq value (_kpblc-conv-ent-to-vla value))
            (and (= (type value) 'vla-object)
                 (vlax-property-available-p value 'count)
                 ) ;_ end of and
            ) ;_ end of and
       (vlax-for sub (_kpblc-conv-ent-to-vla value)
         (setq res (cons sub res))
         ) ;_ end of vlax-for
       )
      (t value)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-selset-to-ename (selset / tab item)
                                     ;|
*    Преобразование набора, полученного через ssget, в список ename-представлени
* примитивов.
*    Параметры вызова:
	selset	набор примитивов
*    Примеры вызова:
(_kpblc-conv-selset-to-ename (ssget))
|;
    (cond
      ((not selset) nil)
      ((= (type selset) 'pickset)
       (repeat (setq tab  nil
                     item (sslength selset)
                     ) ;_ end setq
         (setq tab (cons (ssname selset (setq item (1- item))) tab))
         ) ;_ end repeat
       )
      ((= (type selset) 'vla-object)
       (_kpblc-conv-vla-to-list selset)
       )
      ((listp selset) selset)
      ) ;_ end of cond
    ) ;_ end of defun

  (defun _kpblc-conv-selset-to-vla (selset)
                                   ;|
*    Преобразование набора примитивов в список vla-представлений примитивов
*    Параметры вызова:
	selset	набор, сформированный (ssget)
|;
    (mapcar (function vlax-ename->vla-object)
            (_kpblc-conv-selset-to-ename selset)
            ) ;_ end of mapcar
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type (setq selset (vl-catch-all-apply
                              (function
                                (lambda ()
                                  (ssget '((0 . "3DSOLID,REGION")))
                                  ) ;_ end of lambda
                                ) ;_ end of function
                              ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'pickset
         ) ;_ end of =
    (progn
      (setq blk_name "kpblc_dwgru_CenterPoint3D"
            blk      ((lambda (/ item lst_layers pt)
                        (if (vl-catch-all-error-p
                              (setq item (vl-catch-all-apply
                                           (function
                                             (lambda ()
                                               (vla-item (vla-get-blocks adoc) blk_name)
                                               ) ;_ end of lambda
                                             ) ;_ end of function
                                           ) ;_ end of vl-catch-all-apply
                                    ) ;_ end of setq
                              ) ;_ end of vl-catch-all-error-p
                          (progn
                            (setq item       (vla-add (vla-get-blocks adoc) (vlax-3d-point '(0. 0. 0.)) blk_name)
                                  lst_layers (mapcar (function
                                                       (lambda (x / tmp)
                                                         (setq tmp (list x
                                                                         (cons "freeze" x)
                                                                         (cons "lock" x)
                                                                         ) ;_ end of list
                                                               ) ;_ end of setq
                                                         (foreach prop '("freeze" "lock")
                                                           (vl-catch-all-apply
                                                             (function
                                                               (lambda ()
                                                                 (vlax-put-property x prop :vlax-false)
                                                                 ) ;_ end of lambda
                                                               ) ;_ end of function
                                                             ) ;_ end of vl-catch-all-apply
                                                           ) ;_ end of foreach
                                                         ) ;_ end of lambda
                                                       ) ;_ end of function
                                                     ((lambda (/ _res)
                                                        (vlax-for item (vla-get-layers adoc)
                                                          (setq _res (cons item _res))
                                                          ) ;_ end of vlax-for
                                                        ) ;_ end of lambda
                                                      )
                                                     ) ;_ end of mapcar
                                  ) ;_ end of setq
                            (foreach norm '((0. 0. 1.) (0. 1. 0.) (1. 0. 0.))
                              (setq pt (vla-addpoint item (vlax-3d-point '(0. 0. 0.))))
                              (vla-put-layer pt "0")
                              (vla-put-color pt 0)
                              (vla-put-lineweight pt aclnwtbyblock)
                              (vla-put-linetype pt "ByBlock")
                              (vla-put-normal pt (vlax-3d-point norm))
                              ) ;_ end of foreach
                            (foreach layer lst_layers
                              (foreach prop (cdr layer)
                                (vl-catch-all-apply
                                  (function
                                    (lambda ()
                                      (vlax-put-property (car layer) (car prop) (cdr prop))
                                      ) ;_ end of lambda
                                    ) ;_ end of function
                                  ) ;_ end of vl-catch-all-apply
                                ) ;_ end of foreach
                              ) ;_ end of foreach
                            ) ;_ end of progn
                          ) ;_ end of if
                        item
                        ) ;_ end of lambda
                      )
            ) ;_ end of setq
      (foreach item (_kpblc-conv-selset-to-vla selset)
        (if (not
              (vl-catch-all-error-p
                (vl-catch-all-apply
                  (function
                    (lambda ()
                      (setq ins (vla-insertblock
                                  (vla-objectidtoobject adoc (vla-get-ownerid item))
                                  (vlax-3d-point (vlax-safearray->list (vlax-variant-value (vla-get-centroid item))))
                                  blk_name
                                  1.
                                  1.
                                  1.
                                  0.
                                  ) ;_ end of vla-InsertBlock
                            ) ;_ end of setq
                      ) ;_ end of lambda
                    ) ;_ end of function
                  ) ;_ end of vl-catch-all-apply
                ) ;_ end of vl-catch-all-error-p
              ) ;_ end of not
          (if (= (vla-get-objectname item) "AcDbRegion")
            (vla-put-normal ins (vla-get-normal item))
            ) ;_ end of if
          ) ;_ end of if
        ) ;_ end of foreach
      (vla-endundomark adoc)
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 17.08.2009 в 13:44.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как найти центр массы плиты??



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти обьем? Torero AutoCAD 32 25.04.2012 10:27
При армировании плиты не сделали разбежку арматуры. Как быть? vittorio Железобетонные конструкции 30 05.09.2008 17:30
Как из программы VB найти файл(любой) paha Программирование 5 05.08.2004 06:59
Как найти текст без содержания и еще вопросы Елена AutoCAD 5 29.06.2004 14:16
Как найти файл по содержащемуся в нем тексту? Visla AutoCAD 7 09.04.2004 12:16