Wstawianie silnika liniowego w skali makro w animacji

Witam

Próbuję uruchomić następne makro, ale nic się nie dzieje.

Czy ktoś mógłby mi to wytłumaczyć?

Z góry dziękuję.

http://help.solidworks.com/2015/english/api/sldworksapi/create_linear_motor_feature_example_vb.htm


create_linear_motor_feature.txt

Po pierwsze

Czy wykonałeś już swój montaż?

Czy jest otwarty?

 

montaż wykonany i otwarty, ale nic się nie dzieje, tylko otwieranie się studium ruchu

Czy zdefiniowałeś opcje zgodnie ze wskazaniem w linku?

 "Definiowanie opcji

    swMotorFeat. InterpolatedMotor swSimulationMotorDrive_Velocity, 1

    swMotorFeat. DirectionReference = swSelMgr.GetSelectedObject6 (1, -1)

    boolstatus = swMotorFeat. LoadSplineData ( «Test_bouncingBall.csv")

1 polubienie

nie zrobione rzeczywiście.... Jak to zrobić?

cóż, myślę, że musisz określić swój silnik, prędkość, kierunek itp........

Sądziłem, że te linie pozwolą na utworzenie silnika z plikiem .csv jako łączem do importu punktów danych przemieszczenia, bez konieczności uprzedniego tworzenia silnika w badaniu ruchu.

Czy to oznacza, że w makrze brakuje wierszy lub że silnik musi być już utworzony?

 Spójrz na to, co jest tutaj zaznaczone, to twój link

  Aktywacja badania Motion 3

    swMotionStudy3. Aktywacja

    

   

    'Wybierz twarz w części 1

    boolstatus = swModelDocExt. SelectByID2 ( "", "TWARZ", -0.07792618280496, ,06212618843159, ,02214691016243, Fałsz, 0, Nic, 0)

        

    'Tworzenie definicji charakterystyki silnika liniowego obiektu danych

    Ustaw swMotorFeat = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Jeśli swMotorFeat to nic to nic

       Debug.Print "BŁĄD: Tworzenie obiektu danych charakterystyki silnika nie powiodło się."

        wyjdź Sub

    Kończy się, jeśli

Obejrzyj ten film w języku angielskim 

https://youtu.be/rd6DqjREv-w

Witam

Nie, myślę, że silnik jest tworzony przez makro.

Czy plik CSV jest dobrze zapakowany?

Czy istnieje odniesienie do biblioteki typów SolidWorks MotionStudy? (Przeczytaj notatkę dotyczącą warunków wstępnych w linku)
 
W przeciwnym razie, odwołuj się według: SolidWorks> Narzędzia> Makro> Edycja, a następnie w Visual Basic: Narzędzia> Odniesienia i sprawdź bibliotekę wspomnianą powyżej.

Tak, dla pliku .csv i tak dla referencji.

Umieszczam plik CSV w tym samym folderze co zestaw i makro, ale nie określam ścieżki, więc nie wiem, czy makro pobierze dane?

Makro zawiesza się w tym wierszu:

    ' Ustaw odniesienia obciążenia funkcji silnika, powierzchnie nośne

    swMotorFeat.LoadReferances = vContact


z błędem wykonania "438"

Właściwość lub metoda nieobsługiwana przez ten obiekt

 

Może nie może znaleźć odwołania do twarzy kontaktu?

jak wspomniano powyżej w moim poście częściowa kopia

 ( 'Wybierz ścianę w Part1

    boolstatus = swModelDocExt. SelectByID2 ( "", "TWARZ", -0.07792618280496, ,06212618843159, ,02214691016243, Fałsz, 0, Nic, 0)

        

    'Tworzenie definicji charakterystyki silnika liniowego obiektu danych

    Ustaw swMotorFeat = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Jeśli swMotorFeat to nic to nic

       Debug.Print "BŁĄD: Tworzenie obiektu danych charakterystyki silnika nie powiodło się."

        wyjdź Sub

    Zakończ się, jeśli)

Myślę, że musisz wybrać obiekt w widoku 3D przed uruchomieniem makra :

    Ustaw ContactObj(0) = swSelMgr.GetSelectedObject6(1, -1)

1 polubienie

Myślę, że to też stamtąd pochodzi, ale nie widzę nic nienormalnego w doborze twarzy.

Myślę bardziej o linii CreateDefinition dla silnika liniowego

@PL.: Nawet jeśli zaznaczysz obiekt przed uruchomieniem makra, nie będzie on chciał tego zrobić.

 

Oto makro, które działa:

Sub main()

Dim swApp jako SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Sun swSelMgr jako SldWorks.SelectionMgr
Sun swMotionMgr jako SwMotionStudy.MotionStudyManager
Dim swMotionStudy1 jako SwMotionStudy.MotionStudy
Dim swMotorFeat As SldWorks.SimulationMotorFeatureData
Dim swGravityFeat Jako obiekt
Dim boolstatus As Boolean
Dim swFeat As SldWorks.Feature

Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc

Ustaw swModelDocExt = swModel.Extension
Ustaw swSelMgr = swModel.SelectionManager

'---------
'Paleta przednia
boolstatus = Part.Extension.SelectByID2("", "TWARZ", 0.116975825107659, 9.86277918692053E-02, -2.07497793580842E-02, Fałsz, 0, Nic, 0)
Pochodzenie palety
boolstatus = Part.Extension.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nic, 0)
Pochodzenie
boolstatus = Part.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, Fałsz, 0, Nic, 0)
'-------------------

' Pobierz aplikację MotionManager
Ustaw swMotionMgr = swModelDocExt.GetMotionStudyManager()
Jeśli (swMotionMgr jest niczym) to
Koniec
Zakończ jeżeli:

' Pobierz badanie ruchu 1
Ustaw swMotionStudy1 = swMotionMgr.GetMotionStudy("Badanie ruchu 3")

' Włączanie karty Badanie ruchu 1
swMotionStudy1.Aktywuj

' Tworzenie funkcji silnika liniowego jako obiektu danych
Set swMotorFeat = swMotionStudy1.CreateDefinition(swFmAEMLinearMotor)

' Przypisanie silnika przemieszczenia interpolowanego
swMotorFeat.InterpolatedMotor swSimulationMotorDrive_Displacement, 0


' Zadanie kierownicze
boolstatus = swModelDocExt.SelectByID2("", "TWARZ", 0.195285205513159, 4.90124177502054E-02, -3.98286386705422E-02, Fałsz, 0, Nic, 0)
swMotorFeat.DirectionReference = swSelMgr.GetSelectedObject6(1, -1)


' Wyznaczanie punktu zapłonu silnika
boolstatus = swModelDocExt.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, Fałsz, 0, Nic, 0)
swMotorFeat.Location = swSelMgr.GetSelectedObject6(1, -1)


' Przypisywanie obiektu referencyjnego
boolstatus = swModelDocExt.SelectByID2("Część 1-1@toto-2", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
Dim RelObj As SldWorks.Component2
Ustaw RelObj = swSelMgr.GetSelectedObjectsComponent3(1, -1)
swMotorFeat.RelativeComponent = RelObj


"Wczytywanie pliku z danymi o przemieszczeniu
boolstatus = swMotorFeat.LoadSplineData("C:\CoordMX1.txt")


' Wydrukuj typ silnika
Debug.Print swMotorFeat.MotorType

' Utwórz funkcję silnika liniowego
Set swFeat = swMotionStudy1.CreateFeature(swMotorFeat)

Jeśli swFeat jest niczym, to

Debug.Print " BŁĄD: Tworzenie funkcji silnika nie powiodło się."
Inaczej
Debug.Print "Nazwa dodanej funkcji : " & swFeat.Name
Zakończ jeżeli:

 

Koniec subwoofera


Dzięki za pomoc w sprawieniu, by to zadziałało

W rzeczywistości w skali makro widzimy to:

  ' Wybierz powierzchnię w części 2

    boolstatus = swModelDocExt.SelectByID2("", "TWARZ", -0.07924982844941, 0.06212618843165, 0.03225592518596, Fałsz, 0, Nic, 0)

    swMotorFeat.RelativeComponent = RelObj

    swMotorFeat.Location = swSelMgr.GetSelectedObject6(1, -1)

    ' Wybierz tę samą ścianę w Części 1, jak poprzednio wybraną

    boolstatus = swModelDocExt.SelectByID2("", "TWARZ", -0.07792618280496, 0.06212618843159, 0.02214691016243, Fałsz, 0, Nic, 0)

Czy ta część działa dobrze?