Fonction InsertMoveCopyBody2

Bonjour,

je cherche à deplacer ma piece representée par le nom echelle1 d'un point cree (point1) sur le repere d'origine

je selectionne bien les 3 entitées mais lorsque ma fonction s'execute il ne se passe rien

pouvez vous m'aider

merci beaucoup

Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Echelle1", "BODYFEATURE", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Point1", "DATUMPOINT", 0, 0, 0, True, 2, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, True, 3, Nothing, 0)


Dim myFeature As Object

Set myFeature = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, False, 1)

Bonjour, Essaye ca:

Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatData As SldWorks.MoveCopyBodyFeatureData
Dim vFeat As Variant
Dim boolstatus As Boolean

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
boolstatus = swModel.Extension.SelectByID2("Echelle1", "BODYFEATURE", 0, 0, 0, False, 1, Nothing, 0)
Set vFeat = swModel.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, False, 1)
Set swFeatData = vFeat.GetDefinition()

boolstatus = swModel.Extension.SelectByID2("Point1", "DATUMPOINT", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, True, 1, Nothing, 0)
swFeatData.AddMate Nothing, swMateType_e.swMateCOINCIDENT, swMateAlign_e.swMateAlignCLOSEST, 0, 0, Empty
vFeat.ModifyDefinition swFeatData, swModel, Nothing
End Sub

 

bonjour,

le corps est bien sélectionné a la ligne d'avant

la macro plante sur la ligne suivante

Set vFeat = swModel.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, False, 1)

 

 

Bonjour,

Pouvez vous m'aider pour ce probleme ?

merci

 

 

Bonjour,

Attache ton fichier pour que je puisse tester

1 « J'aime »

Bonjour,

ci joint ma macro 

 


macro4.swp

Cool. Mais j'ai déjà mon code, alors ca ne m'aide pas vraiment :D C'est ton fichier SLDPRT qu'il me faut.

Quoique les lignes que tu as rajoutées pourraient poser des problèmes car les variables sont déjà définis plus bas.

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

 

ci joint mon fichier


piece1.sldprt

Effectivement ca ne marche pas.
Mais ce n'est pas étonant car ca ne marche pas non plus en créant la fonction manuellement.
Il faudrait mettre des contraintes sur les entités (face/vertex) du solide.
L'autre solution est de déplacer le solide à partir des coordonnées du point:

Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim vFeat As Variant
Dim boolstatus As Boolean
Dim swFeat As SldWorks.Feature
Dim swRefPt As SldWorks.RefPoint
Dim swMathPt As SldWorks.MathPoint

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
boolstatus = swModel.Extension.SelectByID2("Point1", "DATUMPOINT", 0, 0, 0, False, 1, Nothing, 0)
Set swFeat = swModel.SelectionManager.GetSelectedObject6(1, -1)
Set swRefPt = swFeat.GetSpecificFeature2
Set swMathPt = swRefPt.GetRefPoint
boolstatus = swModel.Extension.SelectByID2("Boss.-Extru.1", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
Set vFeat = swModel.FeatureManager.InsertMoveCopyBody2(swMathPt.ArrayData(0), swMathPt.ArrayData(1), swMathPt.ArrayData(2), 0, 0, 0, 0, 0, 0, 0, False, 1)
End Sub