SolidWorks >> Tips&Tricks >> Wybór wszystkich części w złożeniu o tej samej nazwie
Autor Wypowiedź
2014-09-18, 11:05
Pomógł 0 raz(y).
Wałkowałem już kiedyś ten temat tutaj.
Otóż chodzi o to żeby "jednym kliknięciem" zaznaczyć ( wybrać) wszyskie części o tej samej nazwie.
Pomoc otrzymałem.
Jednak nie do końca jestem usatysfakcjonowany.
Rozwiązanie było takie że nalezy wejść w narzędzie zaawansowanego wyboru i tam "poustawiac" tak zapytanie żeby SW wybrał nam wszystkie elementy o tej samej nazwie.
Minusem tego rozwiazania jest to że za każdym razem trzeba wklepywac nazwę ( a jak się nie chce wklepywac to też kopiuj/wklej można zrobić). Tak czy siak, długo to trwa.
W SE było robiło się to tak:
Klikasz daną część, prawy przycisk i w menu podręcznym wybierałeś narzędzie ( wybierz wszystki takie same - czy jakoś tak)
No i po kłopocie.
Moje pytanie jest takie. Czy można stworzyć jakieś makro w SW które będzie działało własnie w ten sposób?

Właśnie znalazłem w necie filmik

https://www.youtube.com/watch?v=rDfgn809SYk

1 minuta 46 sekunda - jest pokazane jak to działa.

Bardzo przydatne narzędzie szczególnie gdy często się tworzy rózne stany wyświetlania.
 
CAD to dopiero początek :D
2017-06-09, 22:16
Pomógł 0 raz(y).
Osobiście radzę sobie w ten sposób, że tworzę folder do którego wrzucam, albo identyczne elementy, albo tworze jakieś grupy elementów.
To samo z wiązaniami później dużo łatwiej co zmienić czy wy-edytować
 
CSWP, CSWE, CSWI *** solid-blog.pl ***
2017-06-09, 23:03
Pomógł 405 raz(y).
Post z 2014r.

Obecnie jest opcja w zaawansowanym wyborze Wybierz identyczne komponenty.

Poza tym zawsze można zapisać kryteria wyboru.
 
.
2017-06-10, 08:31
Pomógł 52 raz(y).
A mnie się marzy taka funkcja, która jest np w NX, łącząca te same komponenty w jedną pozycję w drzewku złożenia z podaniem ilości szt. :(

Oczywiście makrem można zrobić. Takie coś o czym pisał Marcin jest np. w dodatku iziNorm, ale to wybiera tylko części normowe.


PS,
Siadłem , pomyślałem i napisałem takie coś :)
'****************************************************************************************************************************
'* Grupowanie komponentów o tej samej nazwie i tej samej konfigurabji co wskazany w złożeniu , Włodzimierz Śmieszek 2017 *
'****************************************************************************************************************************


Sub Main()

On Error GoTo blad

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
'
If swModel Is Nothing Then
MsgBox "Brak otwartych dokumentów", vbExclamation, "Grupowanie komponentów"
End
End If

Dim swKomp As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim i, k As Long
Dim SpecyfikacjaPliku As String
Dim NazwaKomponentu As String
Dim Konfiguracja As String
Dim swFace As SldWorks.Face
Dim swEdge As SldWorks.Edge
Dim swEntity As SldWorks.Entity
Dim swComponent As SldWorks.Component2
Dim Tree As Boolean
Dim ValBul As Boolean
Dim Lista As Variant

Set swSelMgr = swModel.SelectionManager

If (swModel.GetType = swDocASSEMBLY) Then
If swSelMgr.GetSelectedObjectCount > 0 Then ' Gdy wybrano element
If swSelMgr.GetSelectedObjectType(1) = swSelectType_e.swSelFACES Then
Set swFace = swModel.SelectionManager.GetSelectedObject6(1, -1)
Set swEntity = swFace
ElseIf swSelMgr.GetSelectedObjectType(1) = swSelectType_e.swSelEDGES Then
Set swEdge = swModel.SelectionManager.GetSelectedObject6(1, -1)
Set swEntity = swEdge
ElseIf swSelMgr.GetSelectedObjectType(1) = swSelectType_e.swSelCOMPONENTS Then
Set swComponent = swModel.SelectionManager.GetSelectedObject6(1, -1)
Tree = True
End If
If swEntity Is Nothing And Not Tree Then
MsgBox "Pokaż powierzchnię lub krawędź części.", vbExclamation, "Grupowanie komponentów - zły wybór"
End
Else
If Not Tree Then Set swComponent = swEntity.GetComponent
Konfiguracja = swComponent.ReferencedConfiguration
SpecyfikacjaPliku = swComponent.GetPathName
End If
swModel.ClearSelection2 True
Else
MsgBox "Nie wybrano żadnego komponentu . . . ", vbExclamation, "Grupowanie komponentów": End
End If ' If selekcja
Else
MsgBox "Bieżący dokument nie jest złożeniem . . . ", vbExclamation, "Grupowanie komponentów": End
End If 'If (swModel.GetType = swDocASSEMBLY)

' Komponent wybrany
Set swKomp = GetObject(SpecyfikacjaPliku)
NazwaKomponentu = swKomp.GetTitle()

Lista = swModel.GetComponents(True)

For i = 0 To UBound(Lista)
If Lista(i).GetPathName = SpecyfikacjaPliku Then
If Konfiguracja = Lista(i).ReferencedConfiguration Then
ValBul = Lista(i).Select(True)
k = k + 1
End If
End If
Next i

MsgBox "Złożenie : " & swModel.GetTitle & Chr(10) & Chr(10) & "Wysekcjonowano " & k & " Komponentów : " & NazwaKomponentu & Chr(10) & "Konfiguracja : " & Konfiguracja

Exit Sub

blad:
MsgBox Erl & " Błąd - " & Error, vbCritical, "..."
End Sub
 
.
2017-06-14, 20:23
Pomógł 52 raz(y).
To makro można oczywiście rozbudowywać, np. automatycznie tworzyć folder z wybranymi komponentami, dorobić okno z wyborem konfiguracji itd.
 
.
2017-08-02, 13:57
Pomógł 52 raz(y).
W SW 2017 jest to już zrobione:

PPM na złożeniu w drzewku - Wyświetlanie drzewa - Wystąpienia komponentu, grupy.

Tyle, że to grupuje wszystko a nie tylko to co chcemy.
 

PSWUG

Strefa Resellera

Publikuj

Społeczność

Ankieta

Linki

RSS

BOT