Makro zum Auswählen der Position eines Rahmens in einer Zeichnung

Hallo ihr alle

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 ;-)

Danke im Voraus,

Herzliche Grüße.

 

1 „Gefällt mir“

Hallo

Tatsächlich ist das erste Argument Ihrer MakeSketchBlockFromFile-Methode die Position!

In Ihrem Beispiel haben Sie "nichts" eingefügt, sodass ich denke, dass es standardmäßig an den Ankerpunkt Ihrer Zeichnung passt.

Sie haben also zwei Lösungen: Ändern Sie den Ankerpunkt Ihrer Zeichnungsvorlagen oder ändern Sie dieses Nichts, um Ihren Punkt wie folgt auszuwählen:

Punkt einfügen
Einfügepunkt, bei dem es sich um einen 2D-Punkt mit z = 0,0 handeln muss, für die Blockdefinition
 

Die entsprechende Seite: 

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.interop.sldworks~SolidWorks.interop.sldworks.ISketchManager~MakeSketchBLockFromFile.html

3 „Gefällt mir“

Zunächst einmal vielen Dank für Ihre Hilfe.

Ich möchte meine Modelle nicht anfassen

Ich weiß jedoch nicht, wie ich diese neue Zeile in meinen Code transkribieren soll.

 Wohin wird es zurückkehren? Wo soll ich es ablegen?

Gibt es Koordinaten in X und Y?

Vielen Dank im Voraus

1 „Gefällt mir“

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:

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IMathPoint.html

Weitere Details, um den Punkt zu erstellen:

 'Erstellen Sie den neuen MathPoint aus den Skizzenpunktdaten.

    "MathP bezieht sich auf die Punktposition in den Skizzenkoordinaten

    Set MathP = MathUtil.CreatePoint(PointCoords)

    'Zeigen Sie die Punktkoordinaten in Bezug auf den Ursprung der Skizze an

    SketchPoints = MathP.ArrayData

    MsgBox SketchPoints(0) & ", " & SketchPoints(1) & ", " & SketchPoints(2)

http://help.solidworks.com/2012/English/api/sldworksapi/Transform_Sketch_to_Model_Example_VB.htm

 

2 „Gefällt mir“

Ich gebe zu, dass ich mich verlaufen habe...

Hier ist, was ich getan habe, aber ohne Ergebnisse:

 

swApp = _ setzen
Anwendung.SldWorks

Set Part = swApp.ActiveDoc
Part.EditTemplate
Part.EditSketch

Set MathP = MathUtil.CreatePoint(PointCoords)
SketchPoints = MathP.ArrayData

    MsgBox SketchPoints(0) & "5.0" & SketchPoints(1) & "5.0" & SketchPoints(2)


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

In Ihrer Zeile:

Part.SketchManager.MakeSketchBlockFromFile(Nichts, "D:\_MAIA\1_MODELES\4_BLOCS-BUFFERS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0)

 

Sie verwenden immer noch Nothing

Wie ich Ihnen schon sagte, müssen wir dies durch einen Einfügepunkt ersetzen!

Und in Ihrer Zeile:

SketchPoints = MathP.ArrayData

Sie haben die Koordinaten nicht eingetragen.

 

Kennen Sie sich mit VBA-Programmierung aus?

1 „Gefällt mir“

Hier gibt es vielleicht ein aussagekräftigeres Beispiel, das Ihnen helfen kann:

'NEUE BLÖCKE: Blockdefinition erstellen

    Set swSketchBlockDef = swSketchMgr.MakeSketchBlockFromSelected(Nichts)

    "

    ' Definieren einer Einfügemarke

    nPt(0) = 60# / 1000#

    nPt(1) = -60# / 1000#

    nPt(2) = 0#

    vPt = nPt

    Set swMathPoint = swMathUtil.CreatePoint(vPt)

    "

    ' Einfügen einer Instanz der Blockdefinition

    Set swBlockInst = swSketchMgr.InsertSketchBlockInstance(swSketchBlockDef, swMathPoint, 1, 0)

http://help.solidworks.com/2013/English/api/sldworksapi/Create_Block_Definition_and_Insert_Block_Instance_Example_VB.htm

1 „Gefällt mir“

Zum Schluss habe ich noch die Ankerpunkte der Blöcke geändert.

Merici  PL

1 „Gefällt mir“