Układ

Witam

Posiadam model rysunkowy, na którym jest widok kołnierza z przodu. Aby wyświetlić widok z przodu, muszę wybrać widok z dołu półki.
Chcę, za pomocą makra, zmienić konfigurację tego widoku (zmienia się nazwa wyróżniająca).

Rejestrator makr daje mi kod, który działa, ale kiedy uruchamiam makro po raz pierwszy, tworzy konfigurację, która kończy się na "-SM-FLAT-PATTERN" i jestem zmuszony uruchomić go po raz drugi, aby konfiguracja się zmieniła (wyświetla konfigurację utworzoną przy pierwszym uruchomieniu).

Nie chcę tworzyć nowych konfiguracji i uruchamiać makra raz.

Poniżej znajduje się uzyskany kod:

Dim swApp As Object

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Widok rysunku1", "DRAWINGVIEW", 0.267271785970659, 0.323684671386922, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\FJS typ kołnierza11B ASA300. SLDPRT", "DN040")
Part.ClearSelection2 Prawda
Koniec subwoofera

Dziękuję za pomoc.

 

Witam

Co to jest DN w zdaniu "to DN się zmienia"?

Czy musisz to robić na wielu płaszczyznach? Czy widok nadal ma tę samą nazwę, podobnie jak konfiguracja?

Edycja: w rzeczywistości nazwa wyróżniająca odpowiada różnym konfiguracjom

.PL

DN odpowiada średnicy kołnierza.

Tak, staram się zautomatyzować tę funkcję, ponieważ musi to być wykonywane na wielu poziomach przez moich kolegów i przeze mnie. Widok nadal ma tę samą nazwę, ale konfiguracja ulega zmianie. Załączam zdjęcie konfiguracji.
Chcę zmienić konfigurację zgodnie z wartością DN.

 

Znalazłem kod, który działa, ale, którą konfigurację chcę wyświetlić, ale chciałbym, aby było to wykonywane automatycznie zgodnie z wartością DN (otrzymuję tę wartość w pliku Excel):

  •  Sub ChangeRefConfig()  
  • Przyciemnij moją aplikację jako SldWorks.SldWorks  
  • Ustaw myApp = Application.SldWorks  
  • Przyciemnij myDraw jako DrawingDoc  
  • Ustaw myDraw = myApp.ActiveDoc  
  • Przyciemnij mójView jako widok  
  • Ustaw myView = myDraw.ActiveDrawingView  
  • Przyciemnij myModel jako ModelDoc2  
  • Ustaw myModel = myView.ReferencedDocument  
  • Dim msg As Ciąg  
  • msg = "Proszę wybrać konfigurację do zmiany na dla widoku " & myView.Name & vbCrLf  
  • Dla i = 0 TB UBound(myModel.GetConfigurationNames)  
  •     msg = msg & i + 1 & vbTab & myModel.GetConfigurationNames(i) & vbCrLf  
  • Następny  
  • X = InputBox(msg, "Wybierz konfigurację", 1)  
  • Dim config jako ciąg  
  •  config = myModel.GetConfigurationNames(X - 1)  
  • myView.ReferencedConfiguration = konfiguracja  
  • myDraw.ForceRebuild  
  • MsgBox "Gotowe"  
  • Koniec subwoofera

configurations.png

Witam

w rzeczywistości  tworzy konfigurację  blachy w wersji rozłożonej, stąd nazwa "-SM-FLAT-PATTERN" i odpowiadając PL, DN to średnica nominalna kołnierza. Może uzda i blacha i dlatego tworzy dla Ciebie wersję z płaskim wzorem.

DN = średnica nominalna rury stosowanej w rurociągach, a zatem na kołnierzu DN100, DN 200, ....

 

@manu67,

 

Nie rozumiem, dlaczego tworzy konfigurację arkusza blachy, ponieważ część jest tworzona jako bryła objętościowa...

Szukam funkcji "ShowConfiguration2" ponieważ ta funkcja działa w 3D, ale nie na rysunku.

Poniżej znajduje się kod dla 3D:

Dim swApp As Object

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
Przyciemnij myModelView jako obiekt
Ustaw myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("DN300@Bride FJS type11B ASA300. SLDPRT", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ShowConfiguration2("DN050")
Koniec subwoofera

 

Czy ktoś może mi pomóc dostosować go do rysunku?

Spójrz w kod swojego pytania, 4 wiersz od dołu, który masz:                                                                                                                                                                       "boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\FJS Bride " Myślę, że ta część kodu powinna zostać zmodyfikowana lub usunięta, aby nie tworzyła już wersji flatpattern

 

Próbowałem już edytować ten wiersz, ale pojawia się błąd.

Moje badania nad pomocą API SolidWorks również nie posunęły mnie do przodu.

Wypróbuj ten:

 

Dim swApp As Object

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Widok rysunku1", "DRAWINGVIEW", 0.267271785970659, 0.323684671386922, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.ChangeRefConfigurationOfDefaultView("O:\FJS typ kołnierza11B ASA300. SLDPRT", "DN040")
Part.ClearSelection2 Prawda
Koniec subwoofera

Ten kod powinien działać:

Ustaw swView = swDraw.IGetFirstView

Robić
    Ustaw swView = swView.GetNextView
    Jeśli swView to nic, to exit do
    swView.ReferencedConfiguration =  NazwaKonfiguracji

Pętla

 

Cze wszystkim

Dziękuję manu67 i .PL za odpowiedzi.

Próbowałem obu kodów, ale żaden nie zadziałał.

W przypadku kodu manu67 błąd występuje w wierszu boolstatus = Part.ChangeRefConfigurationOfDefaultView("O:\FJS flange type11B ASA300. SLDPRT", "DN040". Wyświetlany jest następujący błąd: "Błąd wykonania '438': Właściwość lub metoda nie jest obsługiwana przez ten obiekt"

W przypadku kodu .PL błąd znajduje się w wierszu Set swView = swDraw.IGetFirstView: "Runtime error '424':  object required. Próbowałem zadeklarować zmienną ConfigName, ale błąd jest taki sam:

Dim ConfigName As String
ConfigName = "DN040"

swDraw avant, essaye ceci :

Set swDraw = swApp.ActiveDoc

Ustaw swView = swDraw.IGetFirstView

Dim ConfigName As String
ConfigName = "DN040"

Robić
    Ustaw swView = swView.GetNextView

    If swView.GetName2 = "Widok rysunku1" then
    swView.ReferencedConfiguration =  NazwaKonfiguracji

    Zakończ się, jeśli

Pętla

Problem nadal istnieje.

Poniżej znajduje się uzyskany kod:

Sub main()

Dim ConfigName As Variant

Przyciemnij swView As IView
Dim swDraw As IDrawingDoc
Ustaw swDraw = swApp.ActiveDoc
Ustaw swView = swDraw.IGetFirstView

Robić
    Ustaw swView = swView.GetNextView
    Jeśli swView to nic, to exit do
    swView.ReferencedConfiguration = NazwaKonfiguracji

Pętla

Koniec subwoofera

głupie pytanie przepraszam ;-(

Czy stworzyłeś rodzinę części do swoich różnych uzd?

i przechowywać w określonych plikach osobistych i biblio poza biblioteką oprogramowania

Dlaczego biblioteka osobista?

, aby móc zachować biblioteki po zmianie wersji oprogramowania

@+ ;-)

gt22,

Tak, różne konfiguracje są zarządzane w rodzinie części i są zapisywane w określonym folderze poza SolidWorks.

 

Ale to nie odpowiada na moje pytanie...

Znalazłem rozwiązanie mojego problemu. Poniżej umieszczam kod:

Sub ChangeRefConfig()
Przyciemnij moją aplikację jako SldWorks.SldWorks
Ustaw myApp = Application.SldWorks
Przyciemnij myDraw jako DrawingDoc
Ustaw myDraw = myApp.ActiveDoc
Przyciemnij mójView jako widok
Ustaw myView = myDraw.ActiveDrawingView
Przyciemnij myModel jako ModelDoc2
Ustaw myModel = myView.ReferencedDocument
Dim msg As Ciąg
myView.ReferencedConfiguration = "DN125"
myDraw.ForceRebuild
MsgBox "Gotowe"
Koniec subwoofera

W cudzysłowie wpisuję nazwę żądanej konfiguracji, a makro zmienia konfigurację na rysunku

Miłego dnia