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

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Siemens PLM Femap - 1001 вопрос.

Siemens PLM Femap - 1001 вопрос.

Закрытая тема
Поиск в этой теме
Непрочитано 02.02.2009, 22:02 1 | #1
Siemens PLM Femap - 1001 вопрос.
Cfytrr
 
Балка на балку, кирпич на кирпич...
 
Питер
Регистрация: 09.10.2007
Сообщений: 4,175


Siemens PLM Femap
with NX Nastran
"Real FEA made easy"




Тема посвящается вопросам, возникающим при работе в среде программного комплекса Femap

Примеры выполнения некоторых расчетов можно посмотреть:
на домашней страничке

Последний раз редактировалось Cfytrr, 27.09.2013 в 17:54.
Просмотров: 1078903
 
Автор темы   Непрочитано 02.02.2009, 22:05
#2
Cfytrr

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


to: voyager2007

Как двигать узлы вообще не вопрос! и в пред версиях с этим проблем не было!!!! но как сделать вот это
http://ru.youtube.com/watch?v=h6s52qMZGzM
http://ru.youtube.com/watch?v=k4xh8f...eature=related

Voyager2007
Да просто:
1. Это интерактивное переразбиение Solid тела на тетра элементы, делается также в Meshing tools (раздел Mesh Sizing), путем изменения количества элементов на кривой, принадлежащей данной геометрии. Можно установить конкретное количество узлов на кривой, можно добавить nn-ое количество или убавить. Для мгновенного переразбиения вверху панели под иконкой с зеленым шариком отметье Auto Remesh. Для активировации режима выделения кривых нажмите на кнопку Select с зеленой стрелкой и вперед выделять и переразбивать .
2. То же самое, только на Plate элементах. Делается там же.
Ну и самое главное, в папке с дистрибутивом есть файл, который всегда надо читать при появлении новой версии. В данном случае это newfeat.pdf
Там весь механизм работы с сеткой подробно описан.
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.

Последний раз редактировалось Cfytrr, 02.02.2009 в 22:15.
Cfytrr вне форума  
 
Непрочитано 02.02.2009, 23:16
#3
Voyager2007

авиация
 
Регистрация: 02.02.2009
Москва
Сообщений: 114


Я увидел
Voyager2007 вне форума  
 
Непрочитано 02.02.2009, 23:56
#4
sv4


 
Регистрация: 01.09.2005
Сообщений: 102
<phrase 1=


Понадобилось приложить нагрузку на группу стержневых элементов.
Помогла функция интерполяции.

0.0м 5.0м

1.1тонны +---------------+---------------+---------------+---------------+ 2.2тонны
растояние 5 м

Function 1 - Dimensionless Function
Type: Dimensionless Num Matl: 0 Num Load: 0 Num Prop: 0
X Y
0. 1.1
5. 2.2

Function 1, что характерно, может быть любая, парабола гипербола.... и тд

кусочно постоянная
FNI(1;xel(!i))

трапецевидная
A FNI(1;xnd(ELND(1;!i)))
B FNI(1;xnd(ELND(2;!i)))
sv4 вне форума  
 
Непрочитано 02.02.2009, 23:59
#5
sv4


 
Регистрация: 01.09.2005
Сообщений: 102
<phrase 1=


Код:
[Выделить все]
'разбивает линию(curve) по точке на 2 линии. 
например верхний пояс фермы заданный одной линией, к которому примыкают расскосы. после этого удобнее накладывать сетку на геометрию


Dim App As femap.model

Sub Main

	Debug.Clear
	Set App = GetObject(,"femap.model")
	Dim ln As femap.Curve
	Set ln  = App.feCurve
	Dim pt3 As femap.Point
	Set pt3 = App.fePoint


	Dim pcoord(3) As Double
	Dim xyzp(3) As Double
	Dim vxyzp As Variant

	Dim s As Double


	Dim keepSET As femap.Set
	Set keepSET = App.feSet
	Dim curveSET As femap.Set
	Set curveSET = App.feSet
	Dim tolerance As Double
	Dim coinCount As Long
	Dim coinPoints As Variant

	tolerance = 0.000001

	curveSET.AddAll(FT_CURVE)
	keepSET.AddAll(FT_POINT)

	App.feCheckCoincidentCurve( curveSET.ID, tolerance)
	App.feCheckCoincidentPoint(keepSET.ID, keepSET.ID, tolerance, True, False, coinCount, coinPoints)


		While(pt3.Next = FE_OK)
			Debug.Print pt3.ID
			pcoord(0) = Round (pt3.x,10)
			pcoord(1) = Round (pt3.y,10)
			pcoord(2) = Round (pt3.z,10)


			While ( ln.Next()= FE_OK And ln.type = 0 )


				ln.XYZToParam (pcoord, s)

				If(s>0.000001 And s<.9999999) Then

					ln.project(pcoord, vxyzp)

					vxyzp(0) = Round (vxyzp(0),10)
					vxyzp(1) = Round (vxyzp(1),10)
					vxyzp(2) = Round (vxyzp(2),10)

					If( pcoord(0) = vxyzp(0) And pcoord(1) = vxyzp(1) And pcoord(2) = vxyzp(2)) Then
						App.feCurveBreak(ln.ID, pcoord)
					End If

				 End If

			Wend
			ln.Reset()
		Wend

	curveSET.Clear()
	keepSET.Clear()
	curveSET.AddAll(FT_CURVE)
	keepSET.AddAll(FT_POINT)

	App.feCheckCoincidentCurve( curveSET.ID, tolerance)
	App.feCheckCoincidentPoint(keepSET.ID, keepSET.ID, tolerance,True, False, coinCount, coinPoints)



End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 03.02.2009 в 00:17.
sv4 вне форума  
 
Непрочитано 03.02.2009, 00:03
#6
sv4


 
Регистрация: 01.09.2005
Сообщений: 102
<phrase 1=


Лично меня не удовлетворяет отоброжение шарниров (DOF) для элементов типа beam
ниже небольшой макрос, который борется с этой проблеммой.
С бэйсиком знаком слабо, но вроде работает.

Код:
[Выделить все]
'© 2007  40ushek  
Dim App As femap.model 
Dim feGroup As femap.Group 
Dim feView As femap.View 
Sub Main 
    Set App = GetObject(,"femap.model") 
    Set feGroup  = App.feGroup 
    Set feView  =  App.feView 
 
    Dim groupID As Long 
    Dim viewID As Long 
    Dim elemCount As Long 'in active group 
 
    'SET objects 
    Dim textSET As femap.Set 
    Dim elemSET As femap.Set 
    Dim elemSET2 As femap.Set 
    Dim elemSET3 As femap.Set 
    Set textSET = App.feSet 
    Set elemSET = App.feSet 
    Set elemSET2 = App.feSet 
    Set elemSET3 = App.feSet 
 
    Dim textID As Long 
    'textID = 0 
 
 
    Dim el As femap.Elem 
    Set el = App.feElem() 
 
    Dim nd As femap.Node 
    Set nd = App.feNode 
    Dim nID As Long 
    Dim nd1(3) As Double 
    Dim nd2(3) As Double 
 
    Debug.Clear 
 
    rc =App.feAppGetActiveView(viewID) 
    Debug.Print viewID 
    feView.Get(viewID) 
    Debug.Print feView.Group 
 
    groupID = App.Info_ActiveID(FT_GROUP) 
    feGroup.Get(groupID) 
 
    elemSET2.AddRule(2, FGD_ELEM_BYTYPE)'bar 
    elemSET2.AddRule(5, FGD_ELEM_BYTYPE)'beam 
 
 
    If(feView.Group = -1) Then 
        elemSET3.AddGroup(FT_ELEM, groupID) 
        'Debug.Print elemSET3.count 
        elemSET3.RemoveSet(elemSET2.ID) 
        'Debug.Print elemSET3.count 
        elemSET.AddGroup(FT_ELEM, groupID) 
        elemSET.RemoveSet(elemSET3.ID) 
        'Debug.Print elemSET.count 
    Else 
        elemSET.AddRule(2, FGD_ELEM_BYTYPE)'bar 
        elemSET.AddRule(5, FGD_ELEM_BYTYPE)'beam 
    End If 
 
 
    CreateNewLayer() 
    DeleteUserGraphics() 
    ClearText() 
    feGroup.RangeDeleteAll(FGD_TEXT_ID) 
 
    elemCount = elemSET.count 
    Debug.Print elemCount 
 
    'del all TEXT objects 
 
 
    For i =0 To elemCount-1 Step 1 
        nID = elemSET.Next() 
        el.Get(nID) 
        nID =(el.Node(0)) 
        nd.Get(nID) 
        nd1(0) = nd.x 
        nd1(1) = nd.y 
        nd1(2) = nd.z 
        nID =(el.Node(1)) 
        nd.Get(nID) 
        nd2(0) = nd.x 
        nd2(1) = nd.y 
        nd2(2) = nd.z 
 
        s = GetReleases(0, el.vrelease) 
        If s <> "" Then 
            textID = CreateText(s, Locate(nd2, nd1)) 
            CreateGFXPoint(Locate(nd2, nd1)) 
            textSET.Add(textID) 
        End If 
 
        s = GetReleases(1, el.vrelease) 
        If s <> "" Then 
            textID = CreateText(s, Locate(nd1, nd2)) 
            CreateGFXPoint(Locate(nd1, nd2)) 
            textSET.Add(textID) 
        End If 
 
    Next i 
 
    feGroup.SetAdd(FT_TEXT, textSET.ID) 
    feGroup.Put(groupID) 
    rc = App.feViewRegenerate(viewID) 
 
End Sub 
'new TEXT object 
Function CreateText( s As String, pos As Variant) As Long 
    Dim txt As femap.text 
    Set txt = App.feText 
    Dim next_id As Long 
 
    'txt.FontNumber = 1 
    'txt.drawBorder = False 
    txt.FontNumber = 7 
    txt.drawBorder = True 
 
    txt.text = s 
 
    txt.vTextPosition = pos 
    txt.color = FCL_YELLOW 
    txt.BorderColor = FCL_YELLOW 
 
    txt.Layer = 3551 
    txt.AllViews = True 
    txt.ModelPosition = 1 
 
    next_id =  txt.NextEmptyID 
    txt.Put(next_id) 
    CreateText = txt.ID 
End Function 
 
Sub DeleteUserGraphics() 
    'Debug.Clear 
    Dim gp As femap.GFXPoint 
    Set gp = App.feGFXPoint 
    While(gp.Next() = zReturnCode.FE_OK) 
        'Debug.Print gp.ID 
        If(gp.Layer = 3551) Then 
            gp.Delete(gp.ID) 
        End If 
    Wend 
    rc = App.feGFXSelect( 1, True, True ) 
End Sub 
 
Sub CreateGFXPoint(location As Variant) 
    Dim gp As femap.GFXPoint 
    Set gp = App.feGFXPoint 
    Dim next_id As Integer 
    next_id = gp.NextEmptyID 
    gp.PutAll(next_id, location(0), location(1), location(2), 3551, FCL_YELLOW, GPS_SQUARE) 
    gp.Layer = 3551 
    rc = App.feGFXSelect( 1, True, True ) 
    next_id = gp.NextEmptyID 
    gp.PutAll(next_id, location(0), location(1), location(2), 3551, FCL_BLACK, GPS_BLANK) 
    gp.Layer = 3551 
    rc = App.feGFXSelect( 1, True, True ) 
 
End Sub 
 
'TEXT object location 
Function Locate (ByRef nd1() As Double, ByRef nd2() As Double ) As Variant 
    Dim pos(3) As Double 
    Dim dx, dy, dz As Double 
    Dim shrink As Double 
    shrink = 0.9 
    dx = nd1(0) - nd2(0) 
    dy = nd1(1) - nd2(1) 
    dz = nd1(2) - nd2(2) 
 
    pos(0) = nd1(0) - dx * shrink 
    pos(1) = nd1(1) - dy * shrink 
    pos(2) = nd1(2) - dz * shrink 
    Locate = pos 
End Function 
'Releases ToString()  override virtual 
Function GetReleases( el_end As Long, rl As Variant) As String 
    Dim s As String 
    Dim counter, start As Long 
    s = "" 
    If(el_end = 0 ) Then 
        start =0 
    ElseIf(el_end = 1 ) Then 
        start = 6 
    End If 
 
    For i=0 To 5 
        counter =  i + start 
        If(rl(counter)<>0)Then 
            s = s & Format(counter - start + 1) 
        End If 
    Next i 
    GetReleases = s 
End Function 
'Delete text objs 
Sub ClearText() 
    Dim txt As femap.text 
    Set txt = App.feText 
    While(txt.Next()  = FE_OK) 
        If txt.Layer = 3551 Then 
            txt.Delete(txt.ID) 
        End If 
    Wend 
End Sub 
Sub CreateNewLayer() 
    Dim dof_layer As femap.Layer 
    Set dof_layer  = App.feLayer 
 
     While ( dof_layer.Get(3551) = zReturnCode.FE_FAIL) 
        dof_layer.ID = 3551 
        dof_layer.title = "<<<<<< RELEASES >>>>>>" 
        dof_layer.Put(3551) 
     Wend 
 
End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 03.02.2009 в 00:17.
sv4 вне форума  
 
Непрочитано 03.02.2009, 00:06
#7
sv4


 
Регистрация: 01.09.2005
Сообщений: 102
<phrase 1=


копирование узловой нагрузки
Код:
[Выделить все]
Dim App As femap.model
Sub Main
	Set App = GetObject(,"femap.model")
	Dim dest_node_SET As femap.Set
	Dim  dest_node_id As Long

	Dim load_set As femap.LoadSet
	Dim load_set_id As Long
	Dim source_node_id As Long

	Set dest_node_SET = App.feSet

	Set load_set = App.feLoadSet
	load_set_id = load_set.Active

	Dim ndSET As femap.Set
	Set ndSET = App.feSet
	rc =  ndSET.SelectID (7, "Node to Select", source_node_id)
	If (rc = -1) Then
		rc = dest_node_SET.Select (FT_NODE, 0, "Enter Node(s) to Select")
	End If
	dest_node_SET.Remove(source_node_id)

	Dim load_mesh As femap.LoadMesh
	Set load_mesh = App.feLoadMesh

	Dim load_mesh_id As Long

	load_set.Get(load_set_id)
	load_mesh.Last()

	load_mesh.Reset()

	'App.feAppMessage (FCL_BLACK, "load set " &  Format (load_set.ID))
	'App.feAppMessage (FCL_BLACK, "load mesh count " &  Format (load_mesh_count))

	While load_mesh.Next() = FE_OK
		If (load_mesh.meshID = source_node_id And load_mesh.type < 41)  Then
			load_mesh_id = load_mesh.ID
				'App.feAppMessage (FCL_BLACK, "load mesh id " & Format (load_mesh.ID))
				For i = 1 To dest_node_SET.count
					load_mesh_count = 1 + load_mesh_count
					dest_node_id = dest_node_SET.Next()
					load_mesh.meshID = dest_node_id
					load_mesh.ID = load_mesh_count
					'App.feAppMessage (FCL_BLACK, "dest node " & Format(dest_node_id ) & "  load_mesh_count " & Format(load_mesh_count))
					load_mesh.color = FCL_RED
					load_mesh.Put(load_mesh.NextEmptyID)
				Next i
				dest_node_SET.Reset()
				load_mesh.Get(load_mesh_id)
		End If
	Wend

	Dim viewID As Long
	viewID = App.Info_ActiveID(22)
	rc = App.feViewRegenerate(viewID)

End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 03.02.2009 в 00:17.
sv4 вне форума  
 
Непрочитано 03.02.2009, 00:17
#8
Кулик Алексей aka kpblc
Moderator

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


Тэги CODE придуманы для кого?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.02.2009, 14:42
#9
Cfytrr

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


На домашней страничке в документе говорится о возможности автоматического разбиения Solid c учетом внутренних линий, с созданием общей сетки:
[IMG]http://s50.***********/i130/0902/ba/f6ca8721f9c4t.jpg[/IMG]
Как это осуществляется?
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 04.02.2009, 20:17
#10
Voyager2007

авиация
 
Регистрация: 02.02.2009
Москва
Сообщений: 114


The solid mesher is also able to handle internal faces and
branching faces and curves, creating a congruous, fully
connected mesh internally.

Если ты про эту фразу? картинка по-моему не та. На мой взгляд речь идет о том, что раньше Фемап сложные солиды бил очень капризно, и порой не спасали имеющиеся средства. Теперь наверное улучшили стабильность. Это мое мнение, просто я стараюсь делать геометрию проще в самой программе или на стадии Юниграфикса.
Voyager2007 вне форума  
 
Непрочитано 04.02.2009, 21:26
#11
sv4


 
Регистрация: 01.09.2005
Сообщений: 102
<phrase 1=


насчет солидов и арматуры.
Наверное линия которая в солиде, должна стати оним целым с телом.
Вроде как линия на плоскости, и тогда можно сгенерировать сетку, что бы узлы солидов лежали на этой линии (те обеспечить контакт арматуры с бетоном)
sv4 вне форума  
 
Автор темы   Непрочитано 04.02.2009, 21:28
#12
Cfytrr

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


чтоб понять о чем именно идет речь, нужен носитель великого и могучего англицкого языка. Толко вот как корректно слить "арматуру" с бетоном без создания грани солида по ее оси? А картинка то как раз об этом
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 05.02.2009, 08:08
#13
Voyager2007

авиация
 
Регистрация: 02.02.2009
Москва
Сообщений: 114


Мысли про бетон:
1. Ты наверное Rigid элементами соединяешь балочную арматуру с Solid? Если так, то этот способ кажется вполне удобным.
2. Слить балку и солид без соответствия узлов наверное будет не правильно, т.к. метод конечных элементов по сути является узловым и матрица жесткости компонуется относительно степеней свободы в узлах.
Если и сделают облегчающую процедуру такого рода, то все равно надо будет самому следить за корректным моделированием жесткости железобетонной конструкции.
Voyager2007 вне форума  
 
Автор темы   Непрочитано 05.02.2009, 10:38
#14
Cfytrr

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


Цитата:
Сообщение от Voyager2007 Посмотреть сообщение
1. Ты наверное Rigid элементами соединяешь балочную арматуру с Solid? Если так, то этот способ кажется вполне удобным.
Нет, это практически невозможно, так как непонятно как указывать узлы "бетона" для соединения с Rigid в зоне узла "арматуры", и вообще чем меньше Rigid в схеме тем лучше.

Цитата:
Слить балку и солид без соответствия узлов наверное будет не правильно
Соответствие узлов это то самое о чем и идет речь, если его нет то арматура с бетоном вобще будут работать раздельно. Для получения совместности работы я поступаю следующим образом:
1. Создание модели из солидов так чтоб одна из совместных граней шла по оси арматурного стержня.
2. Разбиение солидов на элементы "бетона", на гранях одной длины автоматически генерятся совпадающие узлы.
3. По граням солидов с уже назначенным разбиением генерим "арматуру", получаем совпадающие узлы арматуры и бетона.
4. Сшиваем узлы, задаем нагрузку, закрепление (для каждой арматурины ставим дополнительную связь от поворота вокруг своей оси) задаю диаграмму (13..Stress vs. Strain) для нелинейной работы бетона. Считаем.

[IMG]http://s46.***********/i113/0902/41/c99ea10cc7bdt.jpg[/IMG]
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 05.02.2009, 12:02
#15
Voyager2007

авиация
 
Регистрация: 02.02.2009
Москва
Сообщений: 114


Твоя схема понятна, теперь знаю как профессионалы железобетон моделируют.
Покопавшись по фемапу и хелпу, функцию, которая могла бы тебе помочь, не нашел. Хотя рисунок, описывающий такую возможность и есть, но в What's new? этого нет.

Пока наверное придется тебе пользоваться обычными способами.
Voyager2007 вне форума  
 
Автор темы   Непрочитано 05.02.2009, 13:29
#16
Cfytrr

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


Цитата:
Сообщение от Voyager2007 Посмотреть сообщение
как профессионалы железобетон моделируют.
До профессионализма еще как до Пекина,
Считает через раз, в чем загвоздка не понимаю, вот если б кто надоумил да подсказал...
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Автор темы   Непрочитано 05.02.2009, 17:00
#17
Cfytrr

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


Кажется, что то нашел. Вот тута выложена русская рерсия What's new? и в ней в частности упоминается:
"Теперь пользователь может создать ассоциативную связь между существующей КЭ сеткой и геометрическими объектами:
• Узлы с точками, кривыми и поверхностями
• Элементы с кривыми, поверхностями и телами".
Вот теперь бы заставить Modify, Associativity привязывать Бетон к арматуре.
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 05.02.2009, 20:49
#18
sv4


 
Регистрация: 01.09.2005
Сообщений: 102
<phrase 1=


у меня сегодня не вышло разбить солид так что бы внутренние узлы сетки были на линии моделирующей арматуру, хоть ты вручную их туда пихай. в пдфке были упомянуты вольюмы... может надо на их базе пытацца?
sv4 вне форума  
 
Автор темы   Непрочитано 05.02.2009, 21:56
#19
Cfytrr

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


sv4,
как делали, по #14 или по #17? Или своим путем?
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 07.02.2009, 11:20
#20
Voyager2007

авиация
 
Регистрация: 02.02.2009
Москва
Сообщений: 114


В команде Mesh-geometry-solids (hex mesh solids) под кнопкой опции есть пункт Mesh All regions including voids. Если и стоит искать, то это здесь.
Как сделать эти регионы или воиды?

В Volumaх такого не сделаешь, так как на их основе можно сделать только правильную сетку.
Voyager2007 вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Siemens PLM Femap - 1001 вопрос.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Plaxis - 1001 вопрос. rust-resisting Расчетные программы 1956 27.08.2015 16:07