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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Центр тяжести фигуры

Центр тяжести фигуры

Ответ
Поиск в этой теме
Непрочитано 24.01.2009, 23:34 #1
Центр тяжести фигуры
scarface
 
Регистрация: 06.01.2009
Сообщений: 4

Необходимо найти центр тяжести дифференцированной фигуры состоящей из множества элементов, есть ли возможность сделать это в акаде?Если да то как?
Просмотров: 23952
 
Непрочитано 25.01.2009, 00:04
#2
Кулик Алексей aka kpblc
Moderator

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


Сделать из всех сечений области, потом через _.union объединить их, следом команда _.massprop. Для твердых тел все то же самое
---
Добавлено: для встречных вопросов есть форум, задавай их здесь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 25.01.2009 в 00:15.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.01.2009, 00:14
#3
scarface


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


ввел команду _region, дальше massprop, все заработало... спасибо!
scarface вне форума  
 
Непрочитано 25.01.2009, 00:24
#4
tutanhamon


 
Блог
 
Регистрация: 06.09.2007
Архангельск/СПб
Сообщений: 461


Как то было необходимо определить центр тяжести различных фигур - например несимметричных сечений из металлопроката и т.д. Так как надо было сделать это неоднократно, написал небольшой лиспик, который ставит точку в центр тяжести сечения, состящего из отдельных плоских фигур (полилинии, области, круг или эллипс)... Для всех заинтересованных - выкладываю - может кто заинтересуется, а может кто и доработает ... Лиспик работает по принципу нахождения статического момента плоской фигуры.

Код:
[Выделить все]
(defun c:compcentroid (/)
  (vl-load-com)
  (setq acadObject (vlax-get-acad-object))
  (setq acadDocument (vla-get-ActiveDocument acadObject))
  (setq numSpace (vla-get-ActiveSpace acadDocument))
  (cond	((= numSpace 1)
	 (setq ActSpace (vla-get-ModelSpace acadDocument))
	)
	((= numSpace 0)
	 (setq ActSpace (vla-get-PaperSpace acadDocument))
	)
  )
  (setq	sset (ssget '((-4 . "<OR")
		      (0 . "CIRCLE")
		      (0 . "ELLIPSE")
		      (-4 . "<AND")
		      (0 . "LWPOLYLINE")
		      (70 . 1)
		      (-4 . "AND>")
		      (0 . "REGION")
		      (-4 . "OR>")
		     )
	     )
  )
  (setq	count	  (sslength sset)
	i	  0
	n	  0
	m	  0
	k	  0
	summX	  0
	summY	  0
	summareas 0
	listX	  (list)
	listY	  (list)
	listAreas (list)
  )
  (while (<= i (1- count))
    (setq objType (cdr (assoc 0 (entget (ssname sset i)))))
    (setq Obj (vlax-ename->vla-object (ssname sset i)))
    (if	(= objType "LWPOLYLINE")
      (progn
	(setq vla_region
			  (car (vlax-safearray->list
				 (vlax-variant-value
				   (vla-addregion
				     (vla-objectidtoobject
				       (vla-get-document
					 Obj
				       )
				       (vla-get-ownerid
					 Obj
				       )
				     )
				     (vlax-safearray-fill
				       (vlax-make-safearray
					 vlax-vbobject
					 (cons 0 (1- (length (list Obj))))
				       )
				       (list Obj)
				     )
				   )
				 )
			       )
			  )
	      centerPtLst
			  (vlax-safearray->list
			    (vlax-variant-value (vla-get-centroid vla_region))
			  )
	      CurrArea
			  (vla-get-Area vla_region)
	)
	(setq ListX	(append ListX (list (car centerPtLst)))
	      ListY	(append ListY (list (cadr centerPtLst)))
	      ListAreas	(append ListAreas (list CurrArea))
	)
	(vla-delete vla_region)
      )
    )

    (if	(= objType "REGION")
      (progn
	(setq centerPtLst
			  (vlax-safearray->list
			    (vlax-variant-value (vla-get-centroid Obj))

			  )
	      CurrArea
			  (vla-get-Area obj)
	)
	(setq ListX	(append ListX (list (car centerPtLst)))
	      ListY	(append ListY (list (cadr centerPtLst)))
	      ListAreas	(append ListAreas (list CurrArea))
	)
      )
    )
    (if	(or (= objType "CIRCLE") (= objType "ELLIPSE"))
      (progn
	(setq centerPtLst
			  (vlax-safearray->list
			    (vlax-variant-value (vla-get-center Obj))
			  )
	      CurrArea
			  (vla-get-Area obj)
	)
	(setq ListX	(append ListX (list (car centerPtLst)))
	      ListY	(append ListY (list (cadr centerPtLst)))
	      ListAreas	(append ListAreas (list CurrArea))
	)
      )
    )
    (setq i (1+ i))
  )
  (setq	summXlist (mapcar '* ListX ListAreas)
	summYlist (mapcar '* ListY ListAreas)
  )
  (foreach n summXList (setq summX (+ summX n)))
  (foreach m summYList (setq summY (+ summY m)))
  (foreach k ListAreas (setq summAreas (+ summAreas k)))
  (setq	centerPtList (list (/ summX summAreas) (/ summY summAreas) 0)
	pointCoord   (ptnList->variantArray centerPtList)
	PointObj     (vla-addPoint ActSpace pointCoord)
  )
  (princ)
)

(defun ptnList->variantArray (ptsList / arrayActSpace sArray)
  (setq	arrayActSpace
	 (vlax-make-safearray
	   vlax-vbdouble
	   (cons 0
		 (- (length ptsList) 1)
	   )
	 )
  )
  (setq sArray (vlax-safearray-fill arrayActSpace ptsList))
  (vlax-make-variant sArray)
)
tutanhamon вне форума  
 
Непрочитано 25.01.2009, 11:08
#5
ssn

Инженер проектировщик (раздел ТМ - фриланс)
 
Регистрация: 06.12.2003
Геленджик
Сообщений: 1,794
Отправить сообщение для ssn с помощью Skype™


тоже делал такую штуку...
у произвольного региона находил центр тяжести и набор характеристик сечения типа всяких там радиусов инерции.
на ВБА.
ssn вне форума  
 
Непрочитано 20.12.2019, 11:03
#6
Frostsv


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


Можно создать штриховку плоской фигуры, посмотреть её свойства, координаты x, y исходной точки штриховки соответствуют центру тяжести плоской фигуры, образованной этой штриховкой.
Frostsv вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Центр тяжести фигуры

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Площадь фигуры и центр её тяжести rust-resisting AutoCAD 32 17.11.2010 08:53
Как в Inventor'е отобразить центр тяжести на чертеже? Fuel Element Другие CAD системы 4 10.09.2008 21:00
Как усилить определенные привязки (середина, края, центр фигуры) friendmickle AutoCAD 9 06.05.2008 13:43
Центр тяжести сечения Artiznov AutoCAD 2 31.10.2007 13:57
Центр тяжести плоской фигуры , геом. центр контура ? bdfy AutoCAD 1 10.05.2005 17:21