Bec2
6 Czerwiec 2016 11:53
1
Cze wszystkim
Obecnie tworzę przyciski makr do wstawiania bloków w tło rysunku.
Jak na razie nic skomplikowanego, mam kod, który działa bardzo dobrze:
Ustaw swApp = _ Aplikacja.SldWorks
Ustaw część = swApp.ActiveDoc Part.EditTemplate (Szablon części) Part.EditSketch Dim myBlockDefinition As Obiekt Set myBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(Nothing, "D:\_MAIA\1_MODELES\4_BLOCS-BUFFERS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0) Part.EditSheet (Arkusz edycji) Part.EditSketch Koniec subwoofera
Mój problem dotyczy położenia bloku na rysunku, chciałbym mieć możliwość predefiniowania pozycji w moim kodzie (w X i Y).
Obecnie, gdy uruchamiam makro, blok mieści się w lewym dolnym rogu rysunku.
Próbowałem wielu rzeczy, ale bez powodzenia.
Jeśli ktoś wie coś o VBA to jestem zainteresowany ;-)
Z góry dzięki,
Pozdrowienia.
1 polubienie
pl
7 Czerwiec 2016 08:48
2
Witam
W rzeczywistości pierwszym argumentem metody MakeSketchBlockFromFile jest pozycja!
W twoim przykładzie umieściłeś "nic", więc myślę, że domyślnie mieści się w punkcie kontrolnym twojego rysunku.
Masz więc dwa rozwiązania: zmień punkt kontrolny swoich szablonów rysunków lub zmodyfikuj to nic, aby wybrać punkt w następujący sposób:
Punkt wstawiania Punkt wstawienia , który musi być punktem 2D o wartości z = 0,0 dla definicji bloku Odpowiednia strona:
http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.interop.sldworks~SolidWorks.interop.sldworks.ISketchManager~MakeSketchBLockFromFile.html
3 polubienia
Bec2
7 Czerwiec 2016 09:17
3
Przede wszystkim dziękuję za pomoc.
Nie chcę dotykać moich modeli
Nie wiem jednak, jak przepisać tę nową linię do mojego kodu.
Do czego powróci? Gdzie powinienem go umieścić?
Czy w X i Y są współrzędne?
Z góry dziękuję
1 polubienie
pl
7 Czerwiec 2016 09:38
4
Więc zanim wstawisz swój blok, będziesz musiał utworzyć i nazwać swój punkt wstawiania, którego będziesz używać zamiast swojego "nic", zobacz ten link, aby utworzyć punkt:
http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IMathPoint.html
Więcej szczegółów do utworzenia punktu:
'Utwórz nowy MathPoint na podstawie danych punktu szkicu.
'MathP odnosi się do położenia punktu we współrzędnych szkicu
Ustaw MathP = MathUtil.CreatePoint(Współrzędne punktu)
'Wyświetlanie współrzędnych punktu w odniesieniu do początku układu współrzędnych szkicu
SketchPoints = Dane 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 polubienia
Bec2
7 Czerwiec 2016 09:47
5
Przyznaję się, że jestem zagubiony...
Oto, co zrobiłem, ale bez żadnych rezultatów:
Ustaw swApp = _ Aplikacja.SldWorks
Ustaw część = swApp.ActiveDoc Part.EditTemplate (Szablon części) Part.EditSketch
Ustaw MathP = MathUtil.CreatePoint(Współrzędne punktu) SketchPoints = MathP.ArrayData
MsgBox SketchPoints(0) & "5.0" & SketchPoints(1) & "5.0" & SketchPoints(2)
Dim myBlockDefinition As Obiekt Set myBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(Nothing, "D:\_MAIA\1_MODELES\4_BLOCS-BUFFERS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0) Part.EditSheet (Arkusz edycji) Part.EditSketch Part.ClearSelection2 Prawda Koniec subwoofera
pl
7 Czerwiec 2016 15:24
6
W Twojej linii:
Part.SketchManager.MakeSketchBlockFromFile(Nothing , "D:\_MAIA\1_MODELES\4_BLOCS-BUFFERS\Tol ISO2768 - EN22768 - mK.SLDBLK", False, 1, 0)
Nadal używasz Nothing
Jak już mówiłem, musimy zastąpić to punktem wstawiania!
A w Twojej linii:
SketchPoints = MathP.ArrayData
Nie podałeś współrzędnych.
Czy znasz się na programowaniu w języku vba?
1 polubienie
pl
7 Czerwiec 2016 15:26
7
Być może istnieje bardziej wymowny przykład, który może Ci w tym pomóc:
'NOWE BLOKI: Utwórz definicję bloku
Ustaw swSketchBlockDef = swSketchMgr.MakeSketchBlockFromSelected(Nothing)
'
' Definiowanie punktu wstawienia
nPt(0) = 60# / 1000#
nPt(1) = -60# / 1000#
nPt(2) = 0#
vPt = nPt
Ustaw swMathPoint = swMathUtil.CreatePoint(vPt)
'
' Wstawianie wystąpienia definicji bloku
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 polubienie
Bec2
8 Czerwiec 2016 13:49
8
Na koniec zmieniłem punkty kotwiczenia bloków.
Merici PL
1 polubienie