Jak korzystać z interfejsu API SelectByRay solidworks

Witam

 

 Próbuję zrobić powtórzenie liniowe w VBA i po kilku próbach nie rozumiem funkcji. Funkcja jest zawsze wykonywana na osi Z i nie ma znaczenia, jakie wartości wprowadzę.

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

Czy możesz mi pomóc

Z góry dziękuję

 

Witam

Nie do końca rozumiem pytanie, bo funkcja SelectByRay służy do wybierania, a nie do powtarzania. Aby uzyskać więcej informacji, zobacz SelectByRay .

Aby powtórzyć komponent, patrz: FeatureLinearPattern4 - przykład

Aby powtórzyć segment na szkicu, zobacz: CreateLinearSketchStepAndRepeat - przykład

1 polubienie

Witam

Nie mogę wybrać osi x dla 1. kierunku i osi y dla drugiego.

ponieważ moje kawałki są różne, chciałbym naprawić ten wybór na tych 2 osiach

Dziękuję

 

 

Po pierwsze, osie muszą być osiami odniesienia, a nie kierunkami układu współrzędnych brył.

Następnie, jak wspomniano w pomocy FeatureLinearPattern4: "Znak" osi X musi mieć wartość 2, a oś Y "Znak" musi mieć wartość 4

W poniższym przykładzie powtórzono część Part1 w zespole Assem1, który ma 2 osie odniesienia Oś1 i Oś2. Do dostosowania do Twoich potrzeb.

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

 

Nadal tkwię w pracy

ModelDoc.ClearSelection2 True ' Wyczyść zaznaczenie
boolstatus = Part.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, Prawda, 256, Nic, 0)
boolstatus = Part.Extension.SelectByID2("Oś1", "OŚ", 0, 0, 0, Fałsz, 2, Nic, 0)
boolstatus = Part.Extension.SelectByID2("Axe2", "OŚ", 0, 0, 0, Prawda, 4, Nic, 0)

Dim swLinearPattern jako funkcja
Ustaw swLinearPattern = Part.FeatureManager.FeatureLinearPattern5(3, 0.3, 5, 0.25, Prawda, Fałsz, "Axe1", "Axe2", Fałsz, Fałsz, Fałsz, Fałsz, Fałsz, Prawda, Fałsz, Fałsz, Fałsz, Fałsz, Fałsz)

Nic mi nie wysyła.

dziękuję za pomoc

Witam

Spróbuj użyć następujących linii zamiast swojej:

Part.ClearSelection2 Prawda
boolstatus = Part.Extension.SelectByID2("Boss.-Extru.3", "SOLIDBODY", 0, 0, 0, Fałsz, 256, Nic, 0)
boolstatus = Part.Extension.SelectByID2("Oś1", "OŚ", 0, 0, 0, Prawda, 1, Nic, 0)
boolstatus = Part.Extension.SelectByID2("Axe2", "OŚ", 0, 0, 0, Prawda, 2, Nic, 0)
Dim swLinearPattern jako funkcja
Ustaw swLinearPattern = Part.FeatureManager.FeatureLinearPattern5(3, 0.3, 5, 0.25, Prawda, Fałsz, "Axe1", "Axe2", Fałsz, Fałsz, Fałsz, Fałsz, Fałsz, Prawda, Fałsz, Fałsz, Fałsz, Fałsz, Fałsz)

Pozdrowienia

1 polubienie

Dla kawałka jest to:

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

 

Bardzo dziękuję za pomoc

 

Działa idealnie

@pulco41

Nie sądzę, że to najlepsza odpowiedź 

@+

??????

Dostałem powiadomienie, że udzieliłeś mi najlepszej odpowiedzi. Dziękuję.

Ale na forum jest błąd, który w niektórych przypadkach zmienia najlepszą odpowiedź i przekazuje ją twórcy pytania. Popraw go, jeśli możesz.