 |
Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD
Forum CAD.
|
|
[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ę. |
|
|
|
 |
|
|
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
|
| | Strona wygenerowana w 0,27 sekundy. Zapytań do SQL: 15 |
|
|