J’essaie de créer une macro VBA pour insérer des blocs dans le fond de plan d’une mise en plan SolidWorks. Mon code actuel insère le bloc par défaut dans le coin inférieur gauche. Comment puis-je prédéfinir sa position en X et Y dans le code ?
Le problème vient du premier argument de la méthode MakeSketchBlockFromFile, qui attend un objet IMathPoint pour définir la position d’insertion, et non Nothing. Pour contrôler la position, il faut créer un point mathématique avec les coordonnées souhaitées.
- Initialisez l’environnement SolidWorks et accédez au document actif, ainsi qu’à l’utilitaire mathématique :
Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.ModelDoc2 Dim swMathUtil As SldWorks.MathUtility Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set swMathUtil = swApp.GetMathUtility - Passez en mode d’édition du fond de plan (
Part.EditTemplate) puis en mode d’édition d’esquisse (Part.EditSketch) pour pouvoir insérer le bloc :Part.EditTemplate Part.EditSketch - Définissez les coordonnées X et Y de votre point d’insertion. L’API SolidWorks utilise les mètres par défaut pour les coordonnées :
Dim nPt(2) As Double nPt(0) = 0.060 ' Exemple: 60 mm en X nPt(1) = -0.060 ' Exemple: -60 mm en Y nPt(2) = 0.0 ' La coordonnée Z doit être 0 pour une esquisse 2D Dim vPt As Variant vPt = nPt ' Convertir le tableau en Variant pour la méthode CreatePoint - Créez un objet IMathPoint à partir de ces coordonnées en utilisant
swMathUtil.CreatePoint(vPt):Dim swMathPoint As SldWorks.MathPoint Set swMathPoint = swMathUtil.CreatePoint(vPt) - Insérez le bloc en utilisant cet objet
swMathPointcomme premier argument deMakeSketchBlockFromFile:Dim myBlockDefinition As Object Set myBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(swMathPoint, "D:\_MAIA\1_MODELES\4_BLOCS-TAMPONS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0) - Quittez les modes d’édition du fond de plan (
Part.EditSheet) et d’esquisse (Part.EditSketch) :Part.EditSheet Part.EditSketch Part.ClearSelection2 True ' Facultatif, pour désélectionner
Alternative : Si la gestion de la position par macro n’est pas impérative, vous pouvez modifier le point d’ancrage par défaut directement dans la définition de votre fichier de bloc (.SLDBLK) ou dans votre modèle de mise en plan. Cette méthode est moins dynamique mais peut suffire pour des besoins statiques.