Macro lineaire motorinvoeging in animatie

Hallo

Ik probeer de volgende macro aan het werk te krijgen, maar er gebeurt niets.

Kan iemand mij dat uitleggen?

Bij voorbaat dank.

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


create_linear_motor_feature.txt

Allereerst

Heb je je montage al gedaan?

Is het open?

 

Assemblage gemaakt en geopend, maar er gebeurt niets, alleen de bewegingsstudie die opent

Heeft u de opties gedefinieerd zoals aangegeven op uw link

 "Definieer opties

    swMotorFeat. InterpolatedMotor swSimulationMotorDrive_Velocity, 1

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

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

1 like

Niet gedaan inderdaad.... Hoe doe je dat?

nou ik denk dat je je motor, de snelheid, de richting enz. moet definiëren........

Ik dacht dat je met deze regels de motor zou kunnen maken met het .csv-bestand als een link om de verplaatsingsgegevenspunten te importeren, zonder dat je eerst de motor in de bewegingsstudie hoeft te maken.

Betekent dit dat er regels ontbreken in de macro of dat de engine al gemaakt moet zijn?

 Kijk naar wat hier wordt opgemerkt, het is uw link

  Activeer Motion 3-onderzoek

    swMotionStudy3. Activeren

    

   

    'Selecteer gezicht op deel 1

    boolstatus = swModelDocExt. SelectByID2 ( "", "FACE", -0.07792618280496, ,06212618843159, ,02214691016243, Onwaar, 0, Niets, 0)

        

    'Creëer een lineaire motorkarakteristiekdefinitie van het data-object

    Stel swMotorFeat in = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Als swMotorFeat niets is, dan

       Debug.Print "FOUT: Het maken van gegevensobjecten voor motorkenmerken is mislukt."

        uitgang Sub

    Eindigt als

Bekijk deze video in het Engels 

https://youtu.be/rd6DqjREv-w

Hallo

Nee, ik denk dat de motor wordt gecreëerd door de macro.

Is het CSV-bestand goed bijgevoegd?

Heeft u de verwijzing naar de SolidWorks MotionStudy-typebibliotheek? (Lees de opmerking over de randvoorwaarden in de link)
 
Anders, referentie door: SolidWorks> Tools> Macro> Edit, dan in Visual Basic: Tools> Referenties en controleer de hierboven genoemde bibliotheek.

Ja, voor het .csv dossier en ja voor referenties.

Ik heb het CSV-bestand in dezelfde map geplaatst als de assembly en de macro, maar ik geef het pad niet op, dus ik weet niet of de macro de gegevens zal ophalen?

De macro blijft hangen op deze regel:

    ' Stel de belastingsreferenties van de motorfunctie in, de dragende vlakken

    swMotorFeat.LoadReferances = vContact


met runtime-fout '438'

Eigenschap of methode die niet wordt ondersteund door dit object

 

Misschien kan hij de referentie van het contactgezicht niet vinden?

Zoals hierboven vermeld in mijn post gedeeltelijke kopie

 ( 'Selecteer gezicht op deel 1

    boolstatus = swModelDocExt. SelectByID2 ( "", "GEZICHT", -0.07792618280496, ,06212618843159, ,02214691016243, Onwaar, 0, Niets, 0)

        

    'Creëer een lineaire motorkarakteristiekdefinitie van het data-object

    Stel swMotorFeat in = swMotionStudy3. CreateDefinition (swFmAEMLinearMotor)

    Als swMotorFeat niets is, dan

       Debug.Print "FOUT: Het maken van gegevensobjecten voor motorkenmerken is mislukt."

        uitgang Sub

    Einde als)

Ik denk dat je een object in de 3D-weergave moet selecteren voordat je de macro start:

    Stel ContactObj(0) in = swSelMgr.GetSelectedObject6(1, -1)

1 like

Ik denk dat het daar ook vandaan komt, maar ik zie niets abnormaals in de selectie van gezichten.

Ik denk meer aan de CreateDefinition-regel voor de lineaire engine

@PL.: Zelfs als u een object selecteert voordat u de macro start, wil het dat niet.

 

Dit is de macro die werkt:

Sub hoofd()

Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Dim swModelDocExt als SldWorks.ModelDocExtension
Zon swSelMgr As SldWorks.SelectionMgr
Zon swMotionMgr Als SwMotionStudy.MotionStudyManager
Dim swMotionStudy1 als SwMotionStudy.MotionStudy
Dim swMotorFeat As SldWorks.SimulationMotorFeatureData
Dim swGravityFeat als object
Dim boolstatus als Booleaanse
Dim swFeat als SldWorks.Feature

Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in

Stel swModelDocExt = swModel.Extension in
Stel swSelMgr = swModel.SelectionManager in

'---------
'Pallet aan de voorkant
boolstatus = Part.Extension.SelectByID2("", "GEZICHT", 0.116975825107659, 9.86277918692053E-02, -2.07497793580842E-02, Onwaar, 0, Niets, 0)
Herkomst van de pallet
boolstatus = Part.Extension.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Niets, 0)
Oorsprong
boolstatus = Part.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
'-------------------

' Verkrijg de MotionManager
Stel swMotionMgr in = swModelDocExt.GetMotionStudyManager()
Als (swMotionMgr niets is) dan
Einde
Einde als

' Krijg bewegingsstudie 1
Stel swMotionStudy1 in = swMotionMgr.GetMotionStudy("Bewegingsstudie 3")

' De bewegingsstudie inschakelen Tab 1
swMotionStudy1.Activeren

' Het creëren van de lineaire motorfunctie als dataobject
Stel swMotorFeat in = swMotionStudy1.CreateDefinition(swFmAEMLinearMotor)

' Geïnterpoleerde toewijzing van verplaatsingsmotoren
swMotorFeat.InterpolatedMotor swSimulationMotorDrive_Displacement, 0


' Management opdracht
boolstatus = swModelDocExt.SelectByID2("", "FACE", 0.195285205513159, 4.90124177502054E-02, -3.98286386705422E-02, Onwaar, 0, Niets, 0)
swMotorFeat.DirectionReference = swSelMgr.GetSelectedObject6(1, -1)


' Toewijzing van het toepassingspunt van de motor
boolstatus = swModelDocExt.SelectByID2("Point1@Origine@Part 1-2@toto-2", "EXTSKETCHPOINT", 0, 0, 0, Onwaar, 0, Niets, 0)
swMotorFeat.Location = swSelMgr.GetSelectedObject6(1, -1)


' Toewijzing van het referentieobject
boolstatus = swModelDocExt.SelectByID2("Deel 1-1@toto-2", "COMPONENT", 0, 0, 0, Onwaar, 0, Niets, 0)
Dim RelObj As SldWorks.Component2
Set RelObj = swSelMgr.GetSelectedObjectsComponent3(1, -1)
swMotorFeat.RelativeComponent = RelObj


'Het bestand met verplaatsingsgegevens wordt geladen'
boolstatus = swMotorFeat.LoadSplineData("C:\CoordMX1.txt")


' Druk het motortype af
Foutopsporing.Print swMotorFeat.MotorType

' Creëer de lineaire motorfunctie
Stel swFeat in = swMotionStudy1.CreateFeature(swMotorFeat)

Als swFeat niets is, dan

Debug.Print "FOUT: Het maken van de motorfunctie is mislukt."
Anders
Debug.Print "Naam van de toegevoegde functie : " & swFeat.Name
Einde als

 

Einde Sub


Bedankt voor de hulp om het te laten werken

In feite zien we in de macro dit:

  ' Selecteer gezicht op deel 2

    boolstatus = swModelDocExt.SelectByID2("", "GEZICHT", -0.07924982844941, 0.06212618843165, 0.03225592518596, Onwaar, 0, Niets, 0)

    swMotorFeat.RelativeComponent = RelObj

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

    ' Selecteer hetzelfde gezicht op deel 1 als eerder geselecteerd

    boolstatus = swModelDocExt.SelectByID2("", "GEZICHT", -0.07792618280496, 0.06212618843159, 0.02214691016243, Onwaar, 0, Niets, 0)

Werkt dit onderdeel goed?