Autor | Wypowiedź |
.
2012-08-10, 14:00
Pomógł 52 raz(y).
|
Witam, Mam problem następujący. Potrzebuję zapisywać rysunki pod nazwą skłądającą się z numery rysunku i nazwy części (takie są wymagania w zakładzia), ale nie chcę tak nazywać modelu bo nazwa byłaby zbyt długa i np drzewko złożenia po rozsunięciu zajęjoby znaczącą część ekranu graficznego. Numer rysunku i nazwa części są zdefiniowane w dostosowanych włąściwościach modelu i przenoszą się bez problemu do rysunku. Napisałem sobie makro, które łączy te dwa parametry i zapisuje plik pod taką nazwą ale tylko część lub złożenie. Drugie makro zaś pozwala szybko otworzyć powiązany z modelem rysunek pomimo innej nazwy pliku. Z rysunkiem zaś nie mogę sobie poradzić bo gdy chcę "wyłuskać" te dane to zamiast np numery rysunku dostaję wartość dostosowanej właściwości czyli coś takiego $PRPSHEET:"nrrys" . We wszystkich notatkach na rysunku jest ok. Jak to można rozwiązać ? Pozdrawiam |
|
|
.
2012-09-03, 12:48
Pomógł 52 raz(y).
|
Widzę, że nikt nie odpowiedział, ale ja nie próżnowałem. :D Kombinowałem na różne sposoby i wreszciw wymyśliłem, że lepiej pobrać dane z pliku modelu przypisanego do rysunku . Wtedy wartości właściwości są takie jak trzeba. Tak też zrobiłem tylko mam taki problem . Nie potrafię "wyłuskać" informacji o nazwie modelu przypisanego do rysunku jako główny tylko muszę wskazać widok rysunku a makro znajduje model do niego przypisany i dalej już idzie gładko. Czy ktoś wie jak w makro znaleźć nazwę pliku przypisanego jako główny widok rysunku (najczęściej jest to pierwszy wprowadzony do rysunku widok). Pozdrawiam |
|
|
CSWP, CSWE, CSWI *** solid-blog.pl ***
2012-09-03, 12:59
Pomógł 406 raz(y).
|
Ale masz cały czas na myśli zdefniowaną właściwość z modelu (przeniesioną do rysunku) czy może $PRP:"SW-File Name" jako nazwę pliku modelu? Nie ma rozróżnienia na właściwość połączoną z widokiem głównym, albo odnosi się ona do wskazanego rzutu albo dla całego arkusza. |
|
|
Wykonam każde makro w SolidWorks
2012-09-03, 13:50
Pomógł 12 raz(y).
|
Witam, Jeżeli nazwa rysunku jest taka sama jak model to wystarczy, że pobierzesz ścieżkę aktywnego dokumentu swModel.GetPathName (wiadomo, że swModel = iSwApp.ActiveDoc, gdzie swModel jest obiektem typu ModelDoc2 i tniesz od lewej do ostatniego ""/"" i rozszerzenie od prawej - zawsze 7 znaków. Masz już string nazwy modelu przypisanego do rysunku. Sprawdzasz jakiego typu jest dany model swModel.GetType i dopisujesz odpowiednie rozszerzenie, w zależności czy jest to część (if swModel.GetType= 1 then) czy złożenie (if swModel.GetType=2 then). pozdrawiam Michał Karpiuk |
.
2012-09-03, 16:32
Pomógł 52 raz(y).
|
Owszem, gdy nazwa modelu jest taka sama jak nazwa rysunku to OK. Ale z powodów opisanych w 1. poście u mnie tak nie jest. Do Pawła. Mam cały czas na myśli zdefniowaną właściwość z modelu (przeniesioną do rysunku) . ad 2- co jeśli na jednym rysunku mamy widoki różnych modeli ? |
|
|
Wykonam każde makro w SolidWorks
2012-09-05, 10:14
Pomógł 12 raz(y).
|
Dim swDraw As DrawingDoc Dim swView As View Dim sModelName As String swDraw = iSwApp.ActiveDoc swView = swDraw.GetFirstView swView = swView.GetNextView sModelName = swView.GetReferencedModelName |
.
2012-09-05, 22:35
Pomógł 52 raz(y).
|
Dzięki za pomoc, właśnie tego szukałem. Po usunięciu drobnyego błędu i pewnej modyfikacji zadziałało. Oto mój kod: Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swView As View Dim PlikGlownegoWidok As String Dim swDraw As DrawingDoc Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swModel Set swView = swDraw.GetFirstView Set swView = swView.GetNextView PlikGlownegoWidoku = swView.GetReferencedModelName . |
|
|
Wykonam każde makro w SolidWorks
2012-09-06, 14:17
Pomógł 12 raz(y).
|
Pozostaje jeszcze problem, o którym wspominałeś!! Co jeśli na jednym rysunku mamy widoki różnych modeli? |
.
2012-09-06, 16:17
Pomógł 52 raz(y).
|
To nie jest chyba problem, bo główny widok jest zawsze jeden (można go zmienić w oknie właściwości arkusza). Natomiast pojawił mi się nowy pomysł aby można pokazać widok i on będzie dalej brany pod uwagę (np. w celu otwarcia powiązanego z nim modelu) lub nie pokazywać nic i wtedy jest brany główny widok. Napisałem nawet programik ale znowu utknąłem na rozróżnieniu czy jest wybrany widok czy nie. W poniższym kodzie wskazałem miejsce "zagwózdki". Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swDraw As DrawingDoc Dim swView As View Dim SpecyfikacjaPliku As String Dim SpecyfikacjaPlikuWidoku As String Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager Set swDraw = swModel If ... tu jest zagwózdka ... Then ' Gdy nic nie wybrano Set swView = swDraw.GetFirstView Set swView = swView.GetNextView SpecyfikacjaPliku = swView.GetReferencedModelName Else ' Gdy pokazano widok Set swView = swSelMgr.GetSelectedObject5(1) SpecyfikacjaPlikuWidoku = swView.GetReferencedModelName SpecyfikacjaPliku = SpecyfikacjaPlikuWidoku End If MsgBox "Rysunek = " & swModel.GetPathName & Chr(13) & _ "Główny widok = " & SpecyfikacjaPliku & Chr(13) & _ "Wskazany widok =" & SpecyfikacjaPlikuWidoku Programik wykrywa główny widok ( gdy zamaskuję opcję wyboru) lub wybrany widok ale gdy nic nie wybiorę i nie zamaskuję to pojawia się błąd MISMACH |
|
|
Wykonam każde makro w SolidWorks
2012-09-06, 19:02
Pomógł 12 raz(y).
|
Dim swApp As SldWorks Dim swModel As ModelDoc2 Dim swSelMgr As SelectionMgr Dim swDraw As DrawingDoc Dim swView As SolidWorks.Interop.sldworks.View Dim SpecyfikacjaPliku As String Dim SpecyfikacjaPlikuWidoku As String swApp = Application.SldWorks swModel = swApp.ActiveDoc 'wprowadź zabezpieczenie,żeby makro działało tylko na rysunkach If swModel.GetType = 3 Then swSelMgr = swModel.SelectionManager swDraw = swModel 'GetSelectedObjectCount zwróci ci liczbę zaznaczonych obiektów If swSelMgr.GetSelectedObjectCount = 0 Then ' Gdy nic nie wybrano swView = swDraw.GetFirstView swView = swView.GetNextView SpecyfikacjaPliku = swView.GetReferencedModelName ElseIf swSelMgr.GetSelectedObjectCount = 1 Then ' Gdy pokazano jeden widok ' Wprowadź zabezpieczenie - jeżeli zaznaczony jest jeden widok to dopiero wtedy działaj If swSelMgr.GetSelectedObjectType(1) = swSelectType_e.swSelDRAWINGVIEWS Then swView = swSelMgr.GetSelectedObject5(1) SpecyfikacjaPlikuWidoku = swView.GetReferencedModelName SpecyfikacjaPliku = SpecyfikacjaPlikuWidoku End If Else 'wprowadź pętlę End If MsgBox("Rysunek = " & swModel.GetPathName & Chr(13) & _ "Główny widok = " & SpecyfikacjaPliku & Chr(13) & _ "Wskazany widok =" & SpecyfikacjaPlikuWidoku) End If |
.
2012-09-07, 07:35
Pomógł 52 raz(y).
|
Wielkie dzięki, zaraz się zabiorę do pracy nad całym programem. A tak przy okazji, skąd najlepiej pobrać jakieś materiały dotyczące programowania VB i funkcji API ? Ja nie zajmuję się zawodowo programowaniem, ale mnie to wciągnęło i chcę trochę poeksperymentować a bardziej chciałbym się chwalić swoimi wynikami niż męczyć innych ciągłymi pytaniami :) |
|
|
Wykonam każde makro w SolidWorks
2012-09-07, 08:14
Pomógł 12 raz(y).
|
Wystarczy Ci SolidWorks Help API. Ja zajmuję się tym tematem programowania SolidWorks od wersji 2005/2006, a komercyjnie od dwóch lat. Temat jest szeroki - a problemów mnóstwo. Powodzenia w nauce. |
.
2012-09-07, 16:57
Pomógł 52 raz(y).
|
Dzięki, idzie mi coraz lepiej :D |
|
|
.
2012-09-10, 16:02
Pomógł 52 raz(y).
|
Witam, Niestety znowu utknąłem. Tym razem na wydawałoby się banalnym problemie. Nie mogę odczytać daty utworzenia pliku rysunku. Śledeziłem różne przykłady z netu i nic nie chce zadziałać. Pomocy. |
|
|
Wykonam każde makro w SolidWorks
2012-09-10, 19:19
Pomógł 12 raz(y).
|
Dim objFileInfo As New FileInfo("Tutaj wpisz ścieżkę do pliku") 'plik utworzony Dim dtCreationDate As DateTime = objFileInfo.CreationTime 'plik zmodyfikowany Dim dtLastWriteTime As DateTime = objFileInfo.LastWriteTime 'Ostatnio używany Dim dtLastAccessTime As DateTime = objFileInfo.LastAccessTime |
.
2012-09-11, 09:05
Pomógł 52 raz(y).
|
Niestety nic z tego. Interpreter nie przyjmuje już pierwszej linijki (syntax error) edit: Zastosowałem takie rozwiązanie (trochę naokoło ale działa) Dim DataUtworzeniaRysunku As String Dim Numer2 As SldWorks.CustomPropertyManager Set swModel = swApp.ActiveDoc Dim Wpis As Long Dim Zmienna As String Set Numer2 = swModel.Extension.CustomPropertyManager("") Wpis = Numer2.Delete("DataUtworzeniaRysunku") Zmienna = "$PRP:" + Chr(34) + "SW-Data utworzenia(Created Date)" + Chr(34) Wpis = Numer2.Add2("DataUtworzeniaRysunku", swCustomInfoText, Zmienna) Numer2.Get2 "DataUtworzeniaRysunku", "", DataUtworzeniaRysunku Wpis = Numer2.Delete("DataUtworzeniaRysunku") MsgBox DataUtworzeniaRysunku |
|
|
2013-07-01, 21:36
Pomógł 0 raz(y).
|
Witam Czy może mi ktoś pomóc. Chciałbym żeby z nazwy pliku która składa się z nr rysunku i jego nazwy pobrać dane do tabelki rysunku, np nazwa pliku to: 2003040_xxxxxxxxx a w tabelce zeby pokazać dwie wartości oddzielnie tj nr rys. 2003040 i oddzielnie nazwę w innym miejscu tabelki nazwa rys. xxxxxxxxxxx. |
|
|
.
2013-07-02, 07:38
Pomógł 52 raz(y).
|
Witam, Nie chcę się powtarzać więc odsyłem tu : http://www.pswug.info/forum/20/Makra/897/Uzupelnianie_wlasciwosci_czesci/ Trzeba go tylko zmodyfikować pod swoje nazwy dostosowanych właściwości. |
|
|