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
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
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")
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)
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?