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

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

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

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


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




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

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

Последний раз редактировалось Cfytrr, 27.09.2013 в 17:54.
Просмотров: 1151147
 
Старый 10.08.2009, 10:07
#161
CKBO3HOE


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


Моей целью является получение достоверных напряжений на поверхностях контакта, ставилась изначально задача именно определения напряженного состояния узла в сборе. Заказчику, скажем так, не пойдет результат расчета, где поверхность контакта пестрит пятнами. Насколько я понимаю из вышеописанного, мне следует:
1. По возможности отойти от тетраэдральной сетки.
2. Размельчить сетку на поверхностях контакта.
3. Может быть, что-то ещё?
CKBO3HOE вне форума  
 
Старый 10.08.2009, 19:55
#162
Voyager2007

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


1. Первый пункт для любого заказчика обязателен, если хотите, чтобы к вам еще раз потом обратились.
2. Одной моделью похоже не обойтись, придется делать несколько итераций с разной густотой сетки. Я думаю, что для начала можно сделать 8-10 Неха элементов по длине поверхности контакта. Желательно, чтобы в окружном направлении количество элементов также было достаточным. Вобщем, как и в любой хорошей задаче, нужно все делать вручную.
3. Внутри бугеля неплохо бы сделать радиус скругления или фаску, который наверняка есть в чертеже. Желательно, чтобы растягивающие напряжения сели не в вершину, а на некоторую площадку (скругление/фаску).
Удачи!
Voyager2007 вне форума  
 
Старый 10.08.2009, 22:57
#163
Jacky


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


Здрасвтвуйте,
У меня есть проблема с FEMAP API. Я попытал добавить 3 положения разбиения ( meshing location ) n1,n2,n3 на линии, которая создана соединением двух точек p1 и p1 с method "AddMeshLocXYZ", но не получается. Я положил мой код ниже. Скажите, пажалуйста как исправить мой код ? спасибо
с уважением, Jacky.
Код:
[Выделить все]
Sub Main()
    Dim App As femap.model
    Set App = feFemap()
    Dim rc As Long

        Dim p1(0 To 2) As Double
        Dim p2(0 To 2) As Double
        Dim n1(0 To 2) As Double
        Dim n2(0 To 2) As Double
        Dim n3(0 To 2) As Double
        Dim curv As Object
        Set curv = App.feCurve


        p1(0) = 0
        p1(1) = 0
        p1(2) = 0

        p2(0) = 100
        p2(1) = 0
        p2(2) = 0


        n1(0) = 20
        n1(1) = 0
        n1(2) = 0

        n2(0) = 50
        n2(1) = 0
        n2(2) = 0

        n3(0) = 70
        n3(1) = 0
        n3(2) = 0


        rc = App.feLinePoints(False, p1, p2, True)
        rc = curv.Get(1)


        rc = curv.AddMeshLocXYZ(n1, 5, 0, 0, 1, 1)
        rc = curv.AddMeshLocXYZ(n2, 1, 0, 0, 1, 1)
        rc = curv.AddMeshLocXYZ(n3, 1, 0, 0, 1, 1)

End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 10.08.2009 в 23:03.
Jacky вне форума  
 
Старый 11.08.2009, 22:53
#164
СергейД

расчеты МКЭ и CFD. ктн
 
Регистрация: 11.05.2005
Подмосковье
Сообщений: 2,172


2 СКВОЗНОЕ
а хотите, попробую в ansys? пишите в личку.
СергейД вне форума  
 
Старый 12.08.2009, 00:21
#165
sv4


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


The curve should be loaded prior to using this method. This will always result in a custom mesh size being defined for the curve. You must always Put the curve to the database after finishing for the mesh locations to be saved. To redefine a mesh location, simply call this method again with the same value for s.

rc = curv.AddMeshLocXYZ(n1, 5, 0, 0, 1, 1)
curv.Put(1)
rc = curv.AddMeshLocXYZ(n2, 1, 0, 0, 1, 1)
curv.Put(1)
rc = curv.AddMeshLocXYZ(n3, 1, 0, 0, 1, 1)
curv.Put(1)
sv4 вне форума  
 
Старый 12.08.2009, 01:51
#166
Jacky


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


Dear sv4 !
Thank you so much foe your help. I've done it again with considering your advise, and it worked.
SV4 I'm wondering if you could take time to answer another question :In some commands there are some unusuable componets, for example, in AddMeshLocXYZ(xyz,numElem,spacing,biasMethod,bias,biasLoc) if we define bias=1, then component biasLoc is unusuable ( I see that we can assign it with one of (0,1,2,3), and it work normally. In this command we deal with a number, so it is so easy to give a number. In some command we need to deal with a vertor, I'm lazy to delare a vector then assign the value for it =)),. In another programm when sth is unusuable, we can omit it via using a blank between 2 commas. So with femap-api when I use a blank between 2 commas a error is showed. I'm wondering if there were something else that can be replaced for unusuable components.
Again very nice to meet you here SV4, and I'm so grateful with your advise.
Have a great night.
Jacky
Jacky вне форума  
 
Старый 12.08.2009, 23:40
#167
sv4


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


Dear Jacky!
Да няма за шо. Скопировал из справки абзац.
Ранее в функцию AddMeshLocXYZ не вникал, пользовал до сего момента один раз. Выходила какаято путаница. Плюнул, сгенерировал точки (point) в местах на линии где хотел получить узлы, а потом разбил линии (curve) по этим точкам, на несколько других линий.
Аналогичным способом пользовался когда хотел, в местах пересечения линий получить узлы. Програмно находил места пересечения линий, и разбивал линии feCurveBreak.
Код:
[Выделить все]
'разбивает линию по точке на 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)
						ln.Prev()
					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
прогрмма определяет лежит ли точка на линии, если да, то разбивает линию, на 2 линии.
проверяет все линии и точки в модели, если не нужно все, то надо добавить возможность выбора линий и точек.

Последний раз редактировалось sv4, 12.08.2009 в 23:53.
sv4 вне форума  
 
Старый 13.08.2009, 18:51
#168
Jacky


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


Dear Sv4 !
Спасибо за macro !

Ни могли бы помочь мне с этим вопросом : я не знаю как правильно использовать method “Put”. Например, по умолчению после создания линии между точками p1 и p2 фемап дать этой линии ID =1. Но дело в том, что я хочу давать этой линии другой ID ( например ID=10 ), в нескольких случаях я хочу контролировать ID для кождого объекта. Я писал curv.put(10) после rc= App.feLinePoints (False ,p1,p2,True ). Когда я смотрел результат, здесь есть 2 линии с ID =1,10 . Но линия с ID =1 имеет длину равна 0. Я думаю, Method feLinePoints – для application (femap) object, а method Put, который использовал для Curve object ?
Вам благодарю
С уважением,
Jacky
[FONT=&quot]
ID Type Color Layer Bias MeshElem ------------ Points -----------> #Surface Length Radius Angle[/FONT]

[FONT=&quot]_____________________________________________________________________________________________________________________[/FONT]
[FONT=&quot] 1 Line 120 1 0. 0 1 2 0 100. [/FONT]
[FONT=&quot] 10 Line 120 1 0. 0 0 0. [/FONT]
[FONT=&quot] Mesh Location: 0. Elem: 1 Bias: 1.[/FONT]
[FONT=&quot] Mesh Location: 1. Elem: 1 Bias: 1.[/FONT]



Код:
[Выделить все]
Sub Main
      Dim App As femap.model
      Set App = feFemap()
      Dim rc As Long
      Dim curv As Object
      Set curv=App.feCurve

      Dim p1(0 To 2) As Double
      Dim p2(0 To 2 ) As Double
      Dim n1(0 To 2) As Double
      Dim n2(0 To 2) As Double
      Dim n3(0 To 2) As Double
      
      p1(0)=0
      p1(1)=0
      p1(2)=0
   
      p2(0)=100
      p2(1)=0
      p2(2)=0
               
      n1(0)=20
      n1(1)=0
      n1(2)=0
   
      n2(0)=50
      n2(1)=0
      n2(2)=0
   
      n3(0)=70
      n3(1)=0
      n3(2)=0
   
      rc= App.feLinePoints (False ,p1,p2,True )
      rc=curv.Put(10)
      rc=curv.Get(10)
      
      rc=curv.AddMeshLocXYZ(n1,5,0,0, 1,1)
      rc=curv.Put(10)
      rc=curv.AddMeshLocXYZ(n2, 1, 0, 0, 1,1)
      rc=curv.Put(10)
      rc=curv.AddMeshLocXYZ(n3, 1,0, 0, 1,1)
      rc=curv.Put(10)

End Sub

Последний раз редактировалось Jacky, 13.08.2009 в 19:03.
Jacky вне форума  
 
Старый 13.08.2009, 20:27
#169
sv4


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



да я вобще не думаю о порядковых номерах объектов.
добавляю следующий и все
Код:
[Выделить все]
Sub Main()
    Dim App As femap.model
   	Set App = feFemap()
    Dim curv As femap.Curve
    Set curv = App.feCurve

    Dim pt As femap.Point
    Set pt = App.fePoint
	Dim id1, id2 As Integer

    For i =0 To 100 Step 1

	pt.x = Rnd()
	pt.y = Rnd()
	pt.z = Rnd()
	id1 = pt.NextEmptyID
	pt.Put(id1)
	pt.x =Rnd()
	pt.y =Rnd()
	pt.z =Rnd()
	id2 = pt.NextEmptyID
	pt.Put(id2)

	curv.type = FCU_LINE
	curv.StdPoint(0)=id1
	curv.StdPoint(1)=id2
	curv.Put(curv.NextEmptyID)
           	curv.AddMeshLoc(.3,1,0,0,1.0,1)
	curv.Put(curv.ID)
	Next i

	'curv.AddMeshLoc(.3,1,0,0,1.0,1)
	'curv.Put(1)
	'curv.NextEmptyID()
End Sub
если надо както редактировать существующие объекты то их надо выбрать получить програмно их id и делать с ними все что хочется.

а вот пример использования SET
выбираются линии, у выбранных линий меняется цвет на красный
номера выбранных линий печатаются в мессдже бох
Код:
[Выделить все]
Dim App As femap.model
Sub Main
	Set App = feFemap()

	Dim curveSET As femap.Set
	Set curveSET = App.feSet
	Dim curv As femap.Curve
	Set curv = App.feCurve

	rc = curveSET.Select(FT_CURVE, True, "Выбири линию")
	curveSET.Debug

	While curveSET.Next()
		curv.Get(curveSET.CurrentID)
		curv.color = FCL_CRIMSON
		curv.Put(curv.ID)
	Wend
End Sub
номера вновь созданных объектов можно сохранять в массиве
но лучше в SET этакий аналог коллекции.
только это не тепизированный список вроде List<t> как в нормальных языках программирования
а коллекция номеров объектов.

Вобще конечно програмная модель в фемап очень своеобразная, мягко говоря.
Но по большому счету сделать можно очень и очень многое.
Еще я взаимодействую с фемап через СOM в exel, а так же с платформой .Net

Последний раз редактировалось sv4, 14.08.2009 в 18:47.
sv4 вне форума  
 
Старый 13.08.2009, 23:34
#170
Jacky


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


Dear SV4 !
Спасибо SV4. Вчера я Вам написал сообщение на ICQ ( И нажимал кнопку ICQ в этой site и написал сообщение), Вы получили ? Вы ни могли бы послать мне ваш ICQ номер на email jackykor@mail.ru
еще Вам огромное спасибо.
С уважением,
Jacky.
Jacky вне форума  
 
Старый 16.08.2009, 19:27
#171
CKBO3HOE


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


Доброго времени суток. Подскажите. пожалуйста, где возможно посмотреть примеры конкретных моделей, выполненных качественно или хотя бы адекватно. Дело в том, что систему приходится осваивать в одиночку, спрашивать не у кого, соответственно вопросов возникает на порядок больше чем ответов, и хотелось бы взглянуть как оно всё выглядеть должно у людей компетентных.
CKBO3HOE вне форума  
 
Автор темы   Старый 19.08.2009, 09:10
#172
Cfytrr

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


Может кто сталкивался, как скопом проассоциатировать балочные элементы с совпадающей с ними геометрией (после команды отзеркалить например)
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Старый 21.08.2009, 00:43
#173
sv4


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


Цитата:
Сообщение от Cfytrr Посмотреть сообщение
Может кто сталкивался, как скопом проассоциатировать балочные элементы с совпадающей с ними геометрией (после команды отзеркалить например)
Интересная проблемма,
Мне кажется, что в 10 версии что было такое, new features.

Mesh Associativity

Modify, Associativity, Automatic

There is a new command under the Modify, Associativity menu. It contains the Automatic command which is designed to automatically associate a solid mesh with solids or shell mesh with surfaces (sheet solids).

This command will attempt to associate the nodes of selected elements with selected solids (Tet or Hex Elements) or surfaces/sheet solids (Shell Elements). In addition to the nodes and elements being associated to the main entity (solids or surfaces/sheet solids), they will then also be associated to the surfaces of solids, curves on those surfaces, and points on those curves allowing you to use geometry based commands in FEMAP (i.e., Loads and Constraints on geometry, any selection method using a geometric entity, etc.).

если не прокатит, можно попробовать макросом, брать элементы тупым перебором, смареть коориданы узлов, потом искать линию, смареть коориданы точек, если совпадает, ассоциировать
sv4 вне форума  
 
Автор темы   Старый 21.08.2009, 10:13
#174
Cfytrr

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


sv4,
Modify, Associativity, Automatic-автоматом работает только для солидов и поверхностей для линейных элементов предлагается только вариант поштучной ассоциации (выбор элементов на одну линию)
и в макросах не силен....
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Старый 21.08.2009, 14:20
#175
CKBO3HOE


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


Подскажите, пожалуйста. Солид сложной формы режется на более простые для того, чтобы его можно было разбить на гексы. Обязательно, чтобы сетка на смежных солидах, которые являются одним телом по постановке задачи, сходилась по сопряженным поверхностям узел в узел?
CKBO3HOE вне форума  
 
Старый 21.08.2009, 23:44
#176
sv4


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


Цитата:
Сообщение от Cfytrr Посмотреть сообщение
sv4,
Modify, Associativity, Automatic-автоматом работает только для солидов и поверхностей для линейных элементов предлагается только вариант поштучной ассоциации (выбор элементов на одну линию)
и в макросах не силен....
Во первых ничего сложного нет, просто Бейсик
Во вторых программировать на таком уровне могут ВСЕ
ну и потом, это просто интересно
sv4 вне форума  
 
Старый 22.08.2009, 01:41
#177
iga


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


Подскажите, кто знает, как задать связи между узлами на 2 совпадающих цилиндрических поверхностях, используя constraint equations, чтобы в касательном и осевом направлении поверхности двигались, а по нормали были связаны.

Последний раз редактировалось iga, 22.08.2009 в 02:00.
iga вне форума  
 
Старый 22.08.2009, 10:47
#178
Voyager2007

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


Цитата:
Сообщение от CKBO3HOE Посмотреть сообщение
Подскажите, пожалуйста. Солид сложной формы режется на более простые для того, чтобы его можно было разбить на гексы. Обязательно, чтобы сетка на смежных солидах, которые являются одним телом по постановке задачи, сходилась по сопряженным поверхностям узел в узел?
Конечно, иначе сшить узлы сетки между собой не получится.
Так как сопряженные поверхности у вас должны содержать не более 4-х граней, получить одинаковую сетку довольно просто.
На крайний случай можно всегда воспользоваться командой
Mesh - Mesh Control - Approach on Surface и напрямую задать, что на одной поверхности сетка будет такая же как у другой.
Удачи!

to iga: Как-то давно делал нечто подобное. Может этот вариант не самый лучший, но он надежно работает.
Сетка на поверхностях должна быть одинаковой, так как я связывал узлы попарно. Насколько я понял, вы хотите соединить степень свободы перемещения в радиальном направлении. Для этого нужно сначала создать цилиндрическую систему с осью Z, совпадающей с осью цилиндрических поверхностей. Эту координатную систему нужно задать как Output Coordinate System для интересующих вас узлов (Modify - Update Other - Output Csys), так как именно в этой системе для узлов задаются constraint equations.
Далее для каждой пары соединяемых узлов нужно сделать:
В команде создания constraint equations, поставьте коэффициент 1, степень свободы TX (на самом деле теперь это будет TR), выберите один из узлов и нажмите Add, далее измените коэффициент на -1 и выберите другой узел в этой паре, снова Add и затем ОК.
Вот так попарно связывая у меня все работало. Удачи!

Последний раз редактировалось Voyager2007, 22.08.2009 в 11:49.
Voyager2007 вне форума  
 
Старый 23.08.2009, 00:52
#179
iga


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


Voyager2007, спасибо!
А есть такая возможность "заморозить" контакт, чтобы на определенном шаге контактные итерации прекратились, оставив жесткости упругих соединителей между контактными площадками постоянными, а приращение нагрузки продолжалось?
Также интересно, есть ли возможность поставить т. н. "цели" расчета? Например, расчет останавливается, когда максимальное напряжение в одном из узлов достигнет заданного значения.

Последний раз редактировалось iga, 24.08.2009 в 00:50.
iga вне форума  
 
Старый 24.08.2009, 22:49
#180
Voyager2007

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


Цитата:
Сообщение от iga Посмотреть сообщение
А есть такая возможность "заморозить" контакт, чтобы на определенном шаге контактные итерации прекратились, оставив жесткости упругих соединителей между контактными площадками постоянными, а приращение нагрузки продолжалось?
Также интересно, есть ли возможность поставить т. н. "цели" расчета? Например, расчет останавливается, когда максимальное напряжение в одном из узлов достигнет заданного значения.
По поводу первого вопроса: Моделируя контакт на GAP-элементах, можно вручную ставить жесткость каждого элемента в контакте. Жесткость их не меняется во время решения и должна быть не менее чем на 3 порядка выше жесткости соединяемых узлов в направлении контакта. Если все делать корректно, то с увеличением нагрузки контакт моделируется вполне прилично. Я, если честно, не понял, о каких упругих соединителях идет речь Выполнять рестарты с изменением свойств элементов также не пробовал.
Второй вопрос: Никогда такого не делал, просто подбирал нагрузку для получения нужного напряжения путем выполнения нескольких расчетов.
Так мне кажется проще.
Voyager2007 вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Siemens PLM Femap - 1001 вопрос.



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