Z różnych stron trafiło do mnie ostatnio pytanie dotyczące sposobu odczytu iProperties modelu z poziomu rysunku za pomocą iLogic. Okazuje się, że z odrobiną pomocy kodu VBA to zadanie wcale nie jest takie trudne. Zapraszam na prezentację
Przykładowy kod reguły znajdziecie w sekcji: iLogic - przykłady z bloga
Czy jest możliwa zmiana sugerowanej nazwy zapisu pliku idw z nazey modelu na np. numer części modelu
Posted by: Michał | 03 listopad 2012 at 11:17
Bazując na kodzie z prezentacji można to zrobić tak jak poniżej. (zakładam, że na rysunku jest tylko jeden arkusz)
Arkusz=ThisDrawing.Document.Sheets.Item(1)
PNazwa=Arkusz.DrawingViews.Item(1).ReferencedFile.FullFileName
Pozycja=InStrRev(PNazwa,"\", -1)
NazwaModelu=Right(PNazwa,Len(PNazwa)-Pozycja)
NumerCzesci=iProperties.Value(NazwaModelu, "Project", "Part Number")
Plik=ThisDoc.Path & "\" & NumerCzesci & ".idw"
ThisDoc.Document.SaveAs(Plik, True)
Posted by: Przemyslaw Sokolowski | 05 listopad 2012 at 14:14
Dziękuje za zainteresowanie. Czy trzeba edytować regułę by działała dla inv 2012. Po uruchomieniu ruguły i przy jeje zapisie nie ma komunikatu o błędzie ale też brak rezultatu, czy może trzeba jeszcze zdefiniować inne parametry.
Posted by: Michał | 06 listopad 2012 at 09:29
Skoro reguła nie zgłasza błędu to wszystko powinno być dobrze.
Proszę dodać na końcu reguły:
MessageBox.Show(Plik, "Title")
Teraz reguła wyświetli w oknie dialogowym ścieżkę i nazwę pliku. Proszę sprawdzić jak to wygląda. Może plik jest zapisywany w jakimś innym folderze, albo coś jest nie tak z nazwą pliku (numer części)
Posted by: Przemyslaw Sokolowski | 06 listopad 2012 at 10:00
Dziękuję działa.
Posted by: Michał | 06 listopad 2012 at 10:10
Wszystko ładnie działa dopóki nie umieścimy pliku .iam na Arkuszu.
Można wtedy wykluczyć sprawdzanie materiału jeśli plik nie ma rozszerzenia ipt ale co z konstrukcją spawaną?
I jeszcze kwestia techniczna: jak aktywować ostatnio otwarty (przed przelotem reguły) arkusz? ActiveSheet.Sheet.Number nie działa..
Posted by: Józef Bułat | 13 listopad 2012 at 22:03
A próbowałeś:
Arkusze.Item(1).Activate
gdzie w nawiasie podajesz numer arkusza, który chcesz uaktywnić?
Posted by: Przemyslaw Sokolowski | 19 listopad 2012 at 14:47
Moi drodzy reguła zapisująca rysunek pod nazwą numeru części modelu zawiera błąd. Poprawnie działająca reguła powinna mieć postać:
Arkusz=ThisDrawing.Document.Sheets.Item(1)
PNazwa=Arkusz.DrawingViews.Item(1).ReferencedFile.FullFileName
Pozycja=InStrRev(PNazwa,"\", -1)
NazwaModelu=Right(PNazwa,Len(PNazwa)-Pozycja)
Sciezka=Left(PNazwa,Pozycja)
NumerCzesci=iProperties.Value(NazwaModelu, "Project", "Part Number")
Plik=Sciezka & NumerCzesci & ".idw"
ThisDoc.Document.SaveAs(Plik, True)
Posted by: Przemyslaw Sokolowski | 19 listopad 2012 at 14:49