Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD Strona Główna Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD
Forum CAD.

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj

Poprzedni temat «» Następny temat
[VBA] - problem z funkcją GETVARIABLE
Autor Wiadomość
Michał J

Dołączył: 03 Cze 2008
Posty: 20
Wysłany: Sro Sty 20, 10 10:41   [VBA] - problem z funkcją GETVARIABLE

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)

Kod:

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
 
     
Michał J

Dołączył: 03 Cze 2008
Posty: 20
Wysłany: Sro Sty 20, 10 11:07   

a zapomniałem napisać
pracuje na ZWCAD 2009i (2007.07.30)
 
     
kruszynski

Pomógł: 17 razy
Dołączył: 02 Sty 2009
Posty: 312
Wysłany: Sro Sty 20, 10 13:58   

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
Kod:
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?
 
     
Michał J

Dołączył: 03 Cze 2008
Posty: 20
Wysłany: Czw Sty 21, 10 11:06   

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:

Kod:

^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
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
 
     
Michał J

Dołączył: 03 Cze 2008
Posty: 20
Wysłany: Czw Sty 21, 10 11:09   

aa jeszcze załącznik :)

załącznik.JPG
Screen błędu
Plik ściągnięto 401 raz(y) 13,26 KB

 
     
Michał J

Dołączył: 03 Cze 2008
Posty: 20
Wysłany: Wto Sty 26, 10 20:06   

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
 
     
dmatusz3
Site Admin

Pomógł: 22 razy
Dołączył: 20 Sty 2008
Posty: 652
Wysłany: Sro Sty 27, 10 18:25   

Dziękuję za informację.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,27 sekundy. Zapytań do SQL: 15