Comment utiliser SelectByRay api solidworks

Bonjour,

 

je cherche à realiser une repetition lineaire en vba et apres plusieurs essai je ne comprends la fonction. La fonction se fait toujours sur l'axe Z et peu importe les valeurs que je rentre.

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

Pouvez vous m'aider

merci d'avance

 

Bonjour,

Je ne comprends pas bien la question car la fonction SelectByRay est pour sélectionner et non pour faire une répétition. Voir SelectByRay pour plus d'information.

Pour répéter un composant voir: FeatureLinearPattern4 - exemple

Pour répéter un segment sur un sketch voir: CreateLinearSketchStepAndRepeat - exemple

1 « J'aime »

Bonjour,

je n'arrive pas a selectionner l 'axe x pour la 1ere direction et l 'axe Y pour la seconde.

mes pieces etant toutes differentes j aimerai fixer cette selection sue ces 2 axes

merci

 

 

Tout d'abord, les axes doivent être des axes de référence, pas les directions du repère solidworks.

Ensuite comme noté dans l'aide de FeatureLinearPattern4: La "Mark" de l'Axe X doit être 2 et la "Mark" de l'axe Y doit être 4

L'exemple ci-dessous fait une répétition de la pièce Part1 dans l'assemblage Assem1 qui comporte 2 axes de référence Axis1 et Axis2. A adapter suivant ton besoin.

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

 

Je suis toujours bloqué sur ma fonction

ModelDoc.ClearSelection2 True ' effacer selection
boolstatus = Part.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, True, 256, Nothing, 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 As Feature
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)

elle me renvoi nothing.

merci de votre aide

Bonjour,

Essaye avec les lignes suivantes en lieu et place des tiennes :

Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, False, 256, Nothing, 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 As Feature
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)

Cordialement,

1 « J'aime »

Pour une pièce c'est:

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

 

merci beaucoup pour votre aide

 

Ca fonctionne parfaitement

@ pulco41

je pense pas que ce soit la meilleure réponse 

@+

??????

J'ai eu une notification que tu m'avait attribué la meilleur réponse. Merci.

Mais il y a un bug sur le forum qui, dans certain cas, change la meilleure réponse et la donne au créateur de la question. Merci de rectifier si tu peux.