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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Femap и VBA

Femap и VBA

Закрытая тема
Поиск в этой теме
Непрочитано 30.07.2008, 07:27 #1
Femap и VBA
Makson
 
Регистрация: 24.04.2008
Сообщений: 1,131

Может я немного не по адресу. Но всетаки может кто-нибудь занимался програмированием на VBA под Femap. Есть код построение линии в пространстве модели фемара. Линия чертится, но фемар ругается "Basic Error (Line 19, Offset 0): (10510) Нет ссылки но объект." , а после этого выполнение макроса останавливается.
Код :
Sub Main
Dim App As femap.model
Set App = GetObject(,"femap.model")


Dim Line As Object
Dim p1(3 )As Double
Dim p2(3 )As Double
Dim pp1 As Variant
Dim pp2 As Variant
Dim rc As Long

p1(0)=34
p1(1)=3
p1(2)=44
p2(0)=23
p2(1)=22
p2(2)=13
pp1=p1
pp2=p2
Set Line =App.feCurve

Set Line=App.feLinePoints(False,p1,p2,False)
rc=Line.Put(1)
MsgBox "Well"
End Sub
Может кто нибудь может подсказать в чем дело. Заранее спасибо.
Просмотров: 12063
 
Непрочитано 30.07.2008, 12:10
#2
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


Для использования метода Put() применительно к объекту Line предварительно должны быть определены все свойства этого объекта (слой, идентификаторы конечных точек, сиcтема координат, цвет и т.д.).

Как альтернативу можно использовать "функциональный" метод создания объектов (как это было в старых версиях Femap):
Код:
[Выделить все]
retVal=App.feLinePoints(False,pp1,pp2,True)
'retVal - возвращаемое значение функции
Т.е. код может быть примерно таким:
Код:
[Выделить все]
Sub Main
Dim App As femap.model
Set App = GetObject(,"femap.model")
Dim p1(3 )As Double
Dim p2(3 )As Double
Dim retVal As Long

p1(0)=34
p1(1)=3
p1(2)=44
p2(0)=23
p2(1)=22
p2(2)=13

retVal=App.feLinePoints(False,p1,p2,True)

MsgBox "Well"
End Sub
Если все-таки через Put, то примерно так:
Код:
[Выделить все]
Sub Main
Dim App As femap.model
Set App = GetObject(,"femap.model")
Dim MyLine As Object
Dim StartPoint As Object
Dim EndPoint As Object
Dim p1(3 )As Double
Dim p2(3 )As Double
Dim pp1 As Variant
Dim pp2 As Variant
Dim rc As Long
Dim retVal As Long

p1(0)=34
p1(1)=3
p1(2)=44
p2(0)=23
p2(1)=22
p2(2)=13

Set StartPoint=App.fePoint
Set StartPoint.color = 100
Set StartPoint.x=p1(0)
Set StartPoint.y=p1(1)
Set StartPoint.z=p1(2)
Set StartPoint.Layer = 1
Set StartPoint.type = 0
Set StartPoint.defCSys = 0
Set StartPoint.attrPID = 0
Set StartPoint.Engine = 0
Set StartPoint.type = 0
retVal=StartPoint.Put (23)

Set EndPoint=App.fePoint
Set EndPoint.color = 100
Set EndPoint.x=p2(0)
Set EndPoint.y=p2(1)
Set EndPoint.z=p2(2)
Set EndPoint.Layer = 1
Set EndPoint.type = 0
Set EndPoint.defCSys = 0
Set EndPoint.attrPID = 0
Set EndPoint.Engine = 0
Set EndPoint.type = 0
retVal=StartPoint.Put (24)

Set MyLine = App.feCurve
Set MyLine.Layer = 1
Set MyLine.color = 100
Set MyLine.type = 0
Set MyLine.StdPoint(0)=23
Set MyLine.StdPoint(1)=24
Set MyLine.Engine=0
retVal=MyLine.Put (2)

MsgBox(Str(retVal))
End Sub
Но в этом случае, линия и точки в базе данных появляются (доступны. например, через list), но почему-то не отображаются на мониторе, даже после регенерирования. Почему - не знаю. В Femap последних версий практически не работал. Встрял, чтобы разговор поддержать...

PS. А вообще консультации по FEMAP нужно искать не на этой площадке. Здесь он не прижился - слишком дорогой продукт для строителей/машиностроителей.

Последний раз редактировалось novinkov, 30.07.2008 в 14:19.
novinkov вне форума  
 
Автор темы   Непрочитано 31.07.2008, 07:28
#3
Makson


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


Огромное спасибо. Первый вариант мне прекрасно подходит. Правда жалко что второй вариант не отображает построения. А вы не знаете где вообще тогда можно получить консультатции по FEMAP? У меня не получилось найти ни одного более менее активного форума по данной теме. А ещё может вы знаете... какой элемент надо создать в автокаде чтоб при импорте его через dxf в модель femap он был в качестве surface?

Заранее спасибо.
Makson вне форума  
 
Непрочитано 02.08.2008, 09:09
#4
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


1. Возможно, второй вариант не отображает построение, потому что в примере приведены не все свойства создаваемого объекта.
2. Мне неизвестны действующие форумы по Femap, где можно получить квалифицированную консультацию по данному ПО - слишком узкий круг пользователей этого продукта. Пользователи старых версий Femap (в связке с MSC-продуктами) - серьезные дядьки из серьезных контор, решают вопросы через службы поддержки и сопровождения. В стадии разработки находится ресурс www.femap.ru. Разработчики ресурса - та же питерская команда, что и на www.fea.ru (форум - на www.cae.ru). Поэтому, возможно, скоро появится соответствующий раздел на www.cae.ru. Но не думаю, что он будет активно работающим.
3. Поверхности из AutoCAD'а передаются в Femap только в виде каркасно-стержневой модели. Как опция - ячейки автокадовских сеток могут передаваться в виде КЭ-пластин. По крайней мере, так было лет 5-10 назад.

Последний раз редактировалось novinkov, 03.08.2008 в 05:40. Причина: И опять орфография
novinkov вне форума  
 
Непрочитано 02.08.2008, 09:20
#5
СергейД

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


участвовал во многих проектах, где
параллельно использовались femap+NASTRAN И ANSYS

УБЕДИЛСЯ И уверен, подобные вещи делать в ansys
МНОГО ПРОЩЕ И эффективнее
+ литературы-форумов несравнимо больше
+ подскажем если что
СергейД вне форума  
 
Автор темы   Непрочитано 05.08.2008, 12:36
#6
Makson


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


ячейки автокадовских сеток в femap9.3 упорно не хотят передаваться.

to СергейД: Может быть вы и правы. Сам в Ansys никогда не работал. Поэтому и не знаю всех преимуществ Ansys над Femap. Мое руководство настойчиво требует считать все в Nastran. Вот и разбираюсь потихонечку.
Makson вне форума  
 
Непрочитано 05.08.2008, 13:16
#7
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


Цитата:
ячейки автокадовских сеток в femap9.3 упорно не хотят передаваться
В окне "DXF Read Options" должны быть включены выключатели "Read 3D Faces as Elements" или "Read Polygon Meshes as Elements". Перед импортом геометрии в Femap исходный DXF-файл должен быть закрыт. Проблем с передачей геометрии нет (проверено на Femap 9.1 demo). Файлы прилагаются (поменять расширения файлов: rar на mod, а zip на dxf)
Вложения
Тип файла: rar 1.rar (71.7 Кб, 200 просмотров)
Тип файла: zip 1.zip (51.5 Кб, 195 просмотров)
novinkov вне форума  
 
Автор темы   Непрочитано 05.08.2008, 14:09
#8
Makson


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


В данном случае они переносятся как Elements а мне необходимо Surface получить.....
Makson вне форума  
 
Непрочитано 05.08.2008, 14:19
#9
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


См. пост 4:
Цитата:
Поверхности из AutoCAD'а передаются в Femap только в виде каркасно-стержневой модели
, т.е. границы ячеек передаются как линии, а узлы ячеек - как точки. Преобразование автокадовских "surface" в Femap'овские "surface" стандартными средствами Femap'а не поддерживается. Но если очень хочется, то импортируйте точки и линии, а затем в макросе "натягивайте" на них Femap'овскую поверхность (surface).
novinkov вне форума  
 
Автор темы   Непрочитано 05.08.2008, 14:36
#10
Makson


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


Да так собственно и сделал)))
Сделал все Plate ввиде 3dface затем

Код:
[Выделить все]
(defun ddface (name_layer nnn)
  (setq count 0)
(repeat nnn    
(setq face (vlax-ename->vla-object (ssname (ssget "_X" (list(cons 8 name_layer))) count)))
   (setq coor (vlax-get-property face 'Coordinates))
    (setq massiv (vlax-safearray->list (vlax-variant-value coor)))
    (setq m_coor1 (list (nth 0 massiv) (nth 1 massiv) (nth 2 massiv)))
    (setq p1 (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 2)) m_coor1))
    
    (setq m_coor2 (list (nth 3 massiv) (nth 4 massiv) (nth 5 massiv)))
    (setq p2 (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 2)) m_coor2))
    
    (setq m_coor3 (list (nth 6 massiv) (nth 7 massiv) (nth 8 massiv)))
    (setq p3 (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 2)) m_coor3))
    
    (setq m_coor4 (list (nth 9 massiv) (nth 10 massiv) (nth 11 massiv)))
    (setq p4 (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 2)) m_coor4))
    (setq femap (vlax-get-object "femap.model"))
   (if
     (= (nth 9 massiv) (nth 6 massiv))
     (progn
       (setq *count_line* (+ *count_line* 3))
      (vlax-invoke-method femap 'feSurfaceCorners :vlax-false p1 p2 p3 p4))
     (progn
       (setq *count_line* (+ *count_line* 4))
     (vlax-invoke-method femap 'feSurfaceCorners :vlax-true p1 p2 p3 p4))
     )
Makson вне форума  
 
Непрочитано 05.08.2008, 14:49
#11
novinkov


 
Регистрация: 10.03.2005
Кемерово
Сообщений: 277


На lisp'е, так на lisp'е... Я на нем только мало-мальски читать могу, а писать и говорить - только со словарем .
novinkov вне форума  
 
Автор темы   Непрочитано 05.08.2008, 14:54
#12
Makson


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


В любом случае БОЛЬШОЕ СПАСИБО за помощь.
Теперь перенос геометрии занимает несколько секунд. А раньше около четырех часов уходило.
Makson вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Femap и VBA

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароль к VBA karp_b Программирование 24 29.08.2013 12:43
В чем зло VBA? Vildar Разное 224 18.03.2009 21:26
ActiveX Automation из VBA karp_b Программирование 5 14.09.2007 18:05
VBA vs LISP Kosenko Sasha LISP 23 06.03.2007 02:56