Ich erstelle gerade Makroschaltflächen, um Blöcke in den Hintergrund einer Zeichnung einzufügen.
Bisher nichts Kompliziertes, ich habe einen Code, der sehr gut funktioniert:
swApp = _ setzen Anwendung.SldWorks
Set Part = swApp.ActiveDoc Part.EditTemplate Part.EditSketch myBlockDefinition als Objekt dimmen Set myBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(Nichts, "D:\_MAIA\1_MODELES\4_BLOCS-BUFFERS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0) Part.EditSheet Part.EditSketch Ende Sub
Mein Problem betrifft die Position des Blocks auf der Zeichnung, ich möchte in der Lage sein, eine Position in meinem Code (in X und Y) vorzudefinieren.
Wenn ich derzeit das Makro starte, passt der Block in die untere linke Ecke der Zeichnung.
Ich habe viele Dinge ausprobiert, aber ohne Erfolg.
Wenn jemand etwas über VBA weiß, bin ich interessiert ;-)
Bevor Sie also Ihren Block einfügen, müssen Sie Ihren Einfügepunkt erstellen und benennen, den Sie anstelle Ihres "Nichts" verwenden werden, siehe diesen Link, um den Punkt zu erstellen:
myBlockDefinition als Objekt dimmen Set myBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(Nichts, "D:\_MAIA\1_MODELES\4_BLOCS-BUFFERS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0) Part.EditSheet Part.EditSketch Part.ClearSelection2 Wahr Ende Sub
Wie haben Sie die Verankerung dieser Systeme verändert?
Weil ich nicht allzu viel über VBA weiß und im Moment daran herumgebastelt habe, dass mein Block kommt, aber er platziert sich nicht an der richtigen Stelle.
Hier ist ein VBA-Makro, um einen Block durch Auswahl seiner Koordinatenpunkte einzufügen:
Dim swApp As Object
Dim swModel As Object
Dim swDrawing As Object
Dim swSheet As Object
Dim swBlockDef As Object
Dim swBlockIns As Object
Sub InsertBlockAtPoint()
' Se connecter à l'application SolidWorks
Set swApp = Application.SldWorks
' Obtenir le document actif (supposé être un dessin)
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox "Veuillez ouvrir un document de dessin."
Exit Sub
End If
' Vérifier si le document actif est un dessin
If swModel.GetType <> swDocumentTypes_e.swDocDRAWING Then
MsgBox "Le document actif n'est pas un dessin."
Exit Sub
End If
Set swDrawing = swModel
' Obtenir la feuille active
Set swSheet = swDrawing.GetCurrentSheet
' Spécifier le chemin vers la définition du bloc
Dim blockPath As String
blockPath = "C:\Chemin\Vers\Votre\Bloc.sldblk" ' Changez ceci par le chemin de votre bloc
' Charger la définition du bloc
Set swBlockDef = swDrawing.LoadBlockDefinition(blockPath)
If swBlockDef Is Nothing Then
MsgBox "Échec du chargement de la définition du bloc."
Exit Sub
End If
' Définir les coordonnées du point d'insertion
Dim insertPoint(2) As Double
insertPoint(0) = 0.1 ' Coordonnée X en mètres
insertPoint(1) = 0.1 ' Coordonnée Y en mètres
insertPoint(2) = 0 ' Coordonnée Z (généralement 0 pour les dessins 2D)
' Insérer le bloc au point spécifié
Set swBlockIns = swSheet.InsertBlock(swBlockDef, insertPoint)
If swBlockIns Is Nothing Then
MsgBox "Échec de l'insertion du bloc."
Else
MsgBox "Bloc inséré avec succès."
End If
End Sub
Dann noch ein paar Bemerkungen für Ihre nächsten Anfragen:
Vermeiden Sie es, in Zukunft Resolute-Jobs für 2016 auszugraben... Vor allem, wenn einer der Mitwirkenden in letzter Zeit nicht veröffentlicht hat.