Michał J Opublikowano 20 Stycznia 2010 Zgłoś Udostępnij Opublikowano 20 Stycznia 2010 Witam Problem polega na tym że funkcja działa prawidłowo tylko wtedy gdy rysunek otworze przez uruchomionego ZwCada, natomiast gdy otwieram przez plik z z rysunkiem i otwiera się Zwcad to ta funkcja niedziała i muszę ręcznie przeładować makro żeby to zatrybiło. Pytanie czy to tak już poprostu jest , czy da się to jakoś obejść bo np. brakuje mi czegoś w kodzie (poniżej) Sub Skala_Rysunku() Dim SKALA As Double Dim OBECNA As Integer Dim NOWA As String OBECNA = Thisdocument.GetVariable("useri1") ' w tym miejscu wywala kod jeżeli rysunek był uruchamiany z pliku Thisdocument.Utility.prompt vbCrLf & "Aktualna skala: " & "<" & "1:" & OBECNA & ">" START: Thisdocument.Utility.InitializeUserInput 1, "" SKALA = Thisdocument.Utility.GetInteger(vbCrLf & "PODAJ SKALĘ: ") If Not SKALA > 0 Then Thisdocument.Utility.prompt vbCr & "!!!! Skala musi być >0 !!!!" GoTo START Else NOWA = "useri1" Thisdocument.SetVariable NOWA, SKALA OBECNA = Thisdocument.GetVariable("useri1") Thisdocument.Utility.prompt vbCrLf & "Zmieniono skalę na: " & "<" & "1:" & OBECNA & ">" End If End Sub pozdrawiam M.J Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Michał J Opublikowano 20 Stycznia 2010 Autor Zgłoś Udostępnij Opublikowano 20 Stycznia 2010 a zapomniałem napisać pracuje na ZWCAD 2009i (2007.07.30) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 20 Stycznia 2010 Zgłoś Udostępnij Opublikowano 20 Stycznia 2010 Witam Sprawdziłem Pana kod, i wygląda że jest poprawny. Pierwsze co sie nasuwa, co może powodowac problem, to użycie zmiennej USERI1 gdzieś wcześniej w kodzie i zapisanie tam wartości o innym typie danych niż zadeklarowana zmienna OBECNA. Proszę spróbować nie deklarować typu tej zmiennej, co będzie w zmiennej systemowej to zwróci i dalej można to interpretować. Innym rozwiązaniem może być przypisanie objąć obsługą błędu On Error Resume Next OBECNA = Thisdocument.GetVariable("useri1") On Error GoTO 0 A dalej sprawdzić zmienną Err, może tam będzie jakieś wyjaśnienie. Ta procedura jest częścią jakiejś większej nakładki? jak jest wczytywany plik i wywoływana funkcja? ręcznie? czy przez LISP? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Michał J Opublikowano 21 Stycznia 2010 Autor Zgłoś Udostępnij Opublikowano 21 Stycznia 2010 Witam Procedura jest częścią większej nakładki która będzie wykorzystywać dane zapamiętane w rysunku w zmiennych useri1-5 i userr1-5. Przydatne to będzie w sytuacji gdy z rysunku będą korzystać inne osoby i będą mogły przejąć ustawienia z rysunku (np. skala, jednostka rysowania, jednostka wymiarowania). Procedura jest wywoływana za pomocą kodu "Disel" wpisanego do przycisku na pasku narzędziowym: ^C^C-vbarun A_USTAWIENIA.Skala_Rysunku Zmienna useri1 nie jest nigdzie wcześniej używana i żadna procedura nie zapisuje do niej danych, są to początkowe ustawienia przed dalszym używaniem nakładki, domyślnie w pliku ustawiona jest na 0 i odpalając rysunek przez plik makro powinno zwrócić wartość 0, a jeżeli były wcześniej wprowadzone dane to też powinno je zwrócić. Zwraca zapamiętaną wartość dopiero jak plik otworze odpalając Zwcada i potem Plik\Otwórz... Zmienna useri1-5 jest typu integer czyli liczby całkowite i innych danych niemożna do niej wprowadzić. Jak odpale rysunek przez Zwcada (makro działa) i odpale następny rysunek ale przez klik na pliku to też działa, więc wydaje mi się że to ma związek ze zmiennymi systemowymi. Może jest jakaś zmienna systemowa (o której ja niewiem) która rozpoznaje w jaki sposób została otwarta sesja ZwCada ?? i ta zmienna miesza. Stosując zaproponowany kod On Error Resume Next OBECNA = Thisdocument.GetVariable("useri1") On Error GoTO 0 to przeskakuje dalej ale wykrzacza się wtedy na następnej linii kodu i daje komunikat -> patrz. załącznik Funkcji Err nie mam jeszcze opanowanej :( - proszę o jakieś rozwiązanie z jej wykorzystaniem które rozwiąże mój problem. Jeżeli nie będzie można z tym nic zrobić to będę musiał dać uwagę do nakładki że pliki należy odpalać przez Plik\Otwórz a chciałbym uniknąć tej niedogodności. pozdrawiam Michał J Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Michał J Opublikowano 21 Stycznia 2010 Autor Zgłoś Udostępnij Opublikowano 21 Stycznia 2010 aa jeszcze załącznik :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Michał J Opublikowano 26 Stycznia 2010 Autor Zgłoś Udostępnij Opublikowano 26 Stycznia 2010 Witam Problem rozwiązany - w sposób dla mnie wystarczający :) Nie dodaje makra VBA do listy startowej, wczytuje za to plik Lispowy z którego ładowane jest makro VBA przy obojętnie jakim sposobie włączania rysunku. pozdr. Michał J Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 27 Stycznia 2010 Zgłoś Udostępnij Opublikowano 27 Stycznia 2010 Dziękuję za informację. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi