Hoe SelectByRay api solidworks te gebruiken

Hallo

 

 Ik probeer een lineaire herhaling te maken in VBA en na verschillende pogingen begrijp ik de functie niet. De functie gebeurt altijd op de Z-as en het maakt niet uit welke waarden ik invoer.

boolstatus = Part.Extension.SelectByRay(1, 1, 1, 1, 1, 1, 1, 1, 1, Onwaar, 1, 0)

Kun je me helpen

Bij voorbaat dank

 

Hallo

Ik begrijp de vraag niet helemaal, want de SelectByRay functie is om te selecteren en niet om te herhalen. Zie SelectByRay voor meer informatie.

Om een component te herhalen zie: FeatureLinearPattern4 - voorbeeld

Als u een segment op een schets wilt herhalen, zie: CreateLinearSketchStepAndRepeat - voorbeeld

1 like

Hallo

Ik kan de x-as voor de 1e richting en de y-as voor de tweede niet selecteren.

Omdat mijn stukken allemaal verschillend zijn, zou ik deze selectie op deze 2 assen willen bevestigen

Bedankt

 

 

Ten eerste moeten de assen referentieassen zijn, niet de richtingen van het coördinatensysteem van de vaste werken.

Vervolgens, zoals aangegeven in de Help van FeatureLinearPattern4: De X-as "Mark" moet 2 zijn en de Y-as "Mark" moet 4 zijn

Het onderstaande voorbeeld herhaalt het onderdeel Part1 in de assemblage Assem1 dat 2 referentieassen heeft: Axis1 en Axis2. Aan te passen aan uw behoeften.

Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Dim swFeat As SldWorks.Feature
Dim swFeatMgr As SldWorks.FeatureManager
Dim swFeatData As SldWorks.LocalLinearPatternFeatureData

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
swModel.ClearSelection2 True
boolstatus = swModel.Extension.SelectByID2("Part1-1@Assem1", "COMPONENT", 0, 0, 0, True, 1, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2("Axis1", "AXIS", 0, 0, 0, True, 2, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2("Axis2", "AXIS", 0, 0, 0, True, 4, Nothing, 0)

Set swFeatMgr = swModel.FeatureManager
Set swFeatData = swFeatMgr.CreateDefinition(swFeatureNameID_e.swFmLocalLPattern)
swFeatData.D1ReverseDirection = False
swFeatData.D1Spacing = 0.05
swFeatData.D1TotalInstances = 3
swFeatData.D2PatternSeedOnly = False
swFeatData.D2ReverseDirection = False
swFeatData.D2Spacing = 0.05
swFeatData.D2TotalInstances = 2
swFeatData.SynchronizeFlexibleComponents = False
Set swFeat = swFeatMgr.CreateFeature(swFeatData)
End Sub

 

Ik zit nog steeds vast op mijn werk

ModelDoc.ClearSelection2 True ' Selectie wissen
boolstatus = Part.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, True, 256, Niets, 0)
boolstatus = Part.Extension.SelectByID2("Axe1", "AXIS", 0, 0, 0, False, 2, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Axe2", "AXIS", 0, 0, 0, True, 4, Nothing, 0)

Dim swLinearPattern als functie
Set swLinearPattern = Part.FeatureManager.FeatureLinearPattern5(3, 0.3, 5, 0.25, True, False, "Axe1", "Axe2", False, False, False, False, False, False, True, True, False, False, 0, 0, False, False)

Ze stuurt me niets.

Bedankt voor je hulp

Hallo

Probeer het met de volgende regels in plaats van die van jou:

Deel.ClearSelection2 Waar
boolstatus = Part.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, False, 256, Niets, 0)
boolstatus = Part.Extension.SelectByID2("Axe1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Axe2", "AXIS", 0, 0, 0, True, 2, Nothing, 0)
Dim swLinearPattern als functie
Set swLinearPattern = Part.FeatureManager.FeatureLinearPattern5(3, 0.3, 5, 0.25, True, False, "Axe1", "Axe2", False, False, False, False, False, False, True, True, False, False, 0, 0, False, False)

Vriendelijke groeten

1 like

Voor een stuk is het:

Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Dim swFeat As SldWorks.Feature
Dim swFeatMgr As SldWorks.FeatureManager
Dim swFeatData As SldWorks.LinearPatternFeatureData

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swFeatMgr = swModel.FeatureManager
swModel.ClearSelection2 True
boolstatus = swModel.Extension.SelectByID2("Axis1", "AXIS", 0, 0, 0, True, 1, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2("Axis2", "AXIS", 0, 0, 0, True, 2, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, True, 256, Nothing, 0)

Set swFeatData = swFeatMgr.CreateDefinition(swFeatureNameID_e.swFmLPattern)
swFeatData.D1EndCondition = 0
swFeatData.D1ReverseDirection = False
swFeatData.D1Spacing = 0.3
swFeatData.D1TotalInstances = 3
swFeatData.D2EndCondition = 0
swFeatData.D2PatternSeedOnly = False
swFeatData.D2ReverseDirection = False
swFeatData.D2Spacing = 0.25
swFeatData.D2TotalInstances = 5
swFeatData.GeometryPattern = False
swFeatData.VarySketch = False
Set swFeat = swFeatMgr.CreateFeature(swFeatData)
End Sub

 

Heel erg bedankt voor je hulp

 

Het werkt perfect

@pulco41

Ik denk niet dat dat het beste antwoord is

@+

??????

Ik kreeg een melding dat je me het beste antwoord had gegeven. Bedankt.

Maar er is een bug op het forum die in sommige gevallen het beste antwoord verandert en het aan de maker van de vraag geeft. Corrigeer dit indien mogelijk.