Ich habe ein kleines Problem mit der Erstellung eines Makros, mit dem ich hoffte, eine globale Variable zu verwenden, die beim Erstellen der Teiledatei definiert wurde. Meine Enttäuschung war groß. Ich füge eine Beschreibung des Problems bei, das im angehängten Dokument gefunden wurde. pb macro.pdf (138.3 Kb) Ich habe versucht, wie bei parametrisierten Kurven zu verzerren, indem ich zuerst eine Skizze erstellte, deren Bemaßung die globale Variable als Wert hatte, und dann das Makro bat, diese Dimension zu nehmen. Ich ging leer aus.
Ich habe die Datei, in der das Problem beschrieben wird, neu erstellt, damit es expliziter ist. Vielen Dank und einen schönen Sonntag pb macro.pdf (234.3 KB)
Warum ein Makro verwenden? Ich mache dies über ein Formular. Ich gebe alle meine Abmessungen ein und das Teil generiert und modifiziert sie entsprechend. Ich gebe Ihnen ein Beispiel für ein Stück, wenn ich vor dem Computer sitze.
Hier ist ein Tablett, das über die benutzerdefinierten Eigenschaften eingerichtet werden kann, die ich erstellt habe, in der Hoffnung, dass es Ihnen helfen kann.
Guten Abend ac_cobra _427, Vielen Dank für Ihre Antwort. Ich kenne Ihren Vorschlag, den ich ausgiebig benutze, weil er sehr relevant ist. Wenn ich in meinem Fall ein Makro möchte, dann deshalb, weil es mir viele Klicks ersparen würde. Ich mache das Laserschneiden von Sperrholz. Also habe ich eine Vorlage (*.dot), die eine Sperrholztextur und eine globale Variable hat, die die Dicke darstellt. Ich zeichne meine Teile, um sie im dxf-Format an den Schneidetisch zu schicken. Ich könnte mich damit begnügen, nur die Skizzen zu machen, aber um eine globale Sicht auf das Produkt zu haben und die Montage (Montage, kinetische Simulation usw.) sicherzustellen, modelliere ich sie in 3D. Diese Modellierung basiert nur auf Extrusionen in der Mittelebene, mit der Dicke als Wert, daher das Interesse, dass sie als globale Variable und somit für die Gleichungen zugänglich ist. Wenn ich diese Extrusionen mit einem Klick machen könnte, wäre es für mich bequemer, weil es sich schnell wiederholt. Also hätte ich gerne ein Makro mit seinem Symbol, das ich in das Funktionsbanner einfüge, und hop klick klick es ist vorbei.
Ich habe es wahrscheinlich falsch verstanden, aber wenn Sie eine globale Variable haben und ihr Wert 4 mit dem Extrusionswert übereinstimmt, warum eine globale Variable?
Wenn das Ziel darin besteht, diesen Dickenwert später ändern zu können, ist es schneller, die Bemaßung direkt zu ändern mit: " Klicken Sie auf die Extrusion im Schacht + klicken Sie auf das Maß + 4 + Enter ", Um eine Variable zu ändern, müssen Sie: " Öffnen Sie die Gleichungen + klicken Sie auf die Variable + 4 + Eingabetaste, um die Variable zu validieren + Eingabetaste oder klicken Sie, um das Gleichungsfenster zu bestätigen und zu schließen".
Eine Variable kostet 1 Klick mehr als über das Angebot.
Das Problem für das Makro ist die Tatsache, dass Sie die Extrusion nicht mit der Dickenvariablen außerhalb einer Blechfunktion verknüpfen können. Versuchen Sie möglicherweise, den Wert der Dickenbemaßung abzurufen und einen Text vom Typ " =Thickness " einzugeben.
Probieren Sie dieses Makro aus, es sollte funktionieren.
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSketch As SldWorks.SketchManager
Dim swFeature As SldWorks.Feature
Dim swDimension As SldWorks.Dimension
Dim userInput As String
Dim newLength As Double
Dim newWidth As Double
Dim newHeight As Double
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox "Aucune pièce ouverte.", vbExclamation, "Erreur"
Exit Sub
End If
' Demande les nouvelles dimensions
userInput = InputBox("Entrez la longueur (en mm) :", "Modification de la pièce")
If IsNumeric(userInput) Then newLength = CDbl(userInput) / 1000 Else Exit Sub
userInput = InputBox("Entrez la largeur (en mm) :", "Modification de la pièce")
If IsNumeric(userInput) Then newWidth = CDbl(userInput) / 1000 Else Exit Sub
userInput = InputBox("Entrez la hauteur (en mm) :", "Modification de la pièce")
If IsNumeric(userInput) Then newHeight = CDbl(userInput) / 1000 Else Exit Sub
' Sélection de l'esquisse "Esquisse1"
Set swFeature = swModel.FeatureByName("Esquisse1")
If swFeature Is Nothing Then
MsgBox "L'esquisse 'Esquisse1' n'a pas été trouvée.", vbExclamation, "Erreur"
Exit Sub
End If
swFeature.Select2 False, 0
swModel.EditSketch
' Mise à jour des dimensions
Set swDimension = swModel.Parameter("D1@Esquisse1")
If Not swDimension Is Nothing Then swDimension.SystemValue = newLength
Set swDimension = swModel.Parameter("D2@Esquisse1")
If Not swDimension Is Nothing Then swDimension.SystemValue = newWidth
Set swDimension = swModel.Parameter("D1@Boss.-Extru.1")
If Not swDimension Is Nothing Then swDimension.SystemValue = newHeight
' Validation de l'esquisse et mise à jour
swModel.EditRebuild3
swModel.SetSaveFlag
swModel.EditSketch
MsgBox "Dimensions mises à jour avec succès.", vbInformation, "Succès"
End Sub
Mit dem angehängten Makro wird die Extrusion einer vorhandenen Skizze mit zwei Mausklicks nach Mittelebene und Dicke durch eine globale Variable verwaltet:
der erste Klick, um die Skizze auszuwählen;
Die zweite zum Ausführen des Makros (falls eine Schaltfläche vorhanden ist).
Die globale Variable wird im Makro durch eine Konstante mit dem Namen " Thick " definiert. Es muss natürlich im Dokument (oder besser, in der Vorlage) vorhanden sein. PRTDOT). Die Bewertung der Extrusionsdicke bezieht sich auf die Gesamtvariable.
Hinweis: Der Versuch, die Notation " Dicke " zu verwenden, führt zu Fehlern im Formel-Manager. Vielleicht ist es ein Wort, das für Blech reserviert ist.
Ja, es hängt mit dem Blech zusammen, aber im "normalen " Betrieb, wenn Sie in einer Extrusionsfunktion die Verknüpfung mit Dicke auswählen, wird diese globale Variable immer noch berücksichtigt. Auf der anderen Seite kann es nicht geändert werden, es kann nur durch Einrichten einer Blechfunktion geändert werden. Daher denke ich, dass diese Funktion nicht über ein Makro außerhalb eines Blechs zugänglich ist.
Vielen Dank an Sie alle. Ich werde mir das von ac_cobra_427 vorgeschlagene Makro ansehen. Ich arbeite viel mit globalen Variablen, die von einer externen Datei gesteuert werden. Dies ermöglicht mir eine Montage mit N Teilen, die alle in einem Sperrholz mit üblicher Dicke lasergeschnitten sind, um alle Überlappungen in einem Arbeitsgang zu ändern. Schönen Tag