e_CAD Opublikowano 5 Grudnia 2017 Zgłoś Udostępnij Opublikowano 5 Grudnia 2017 (edytowane) Znaleźliśmy błąd w ZWCAD 2017 i ZWCAD 2018 polegający na niepełnej obsłudze zbiorów wskazań w LISP z poziomu pliku VBA. OPIS BŁĘDU: Przy tworzeniu zbioru wskazań w LISP z poziomu programu VBA przy pomocy komendy SENDCOMMAND, nie są pamiętane wszystkie obiekty zbioru wskazań, a jedynie ostatni z nich. Problem ten nie istniał w poprzednich wersjach ZWCAD i w innych platformach CAD również go nie ma. PRZYKŁAD SYMULUJĄCY BŁĄD: Wczytać plik: zbiorywskazan.zvb Wczytać i uruchomić plik: start.lsp OPIS PRZYKŁADU: Jeżeli uruchomi się procedurę "Test" z poziomu edytora VBA (F5) to wszystko jest OK., linie przesuwają się i wyświetla się komunikat "3". Jeżeli natomiast uruchomi się (dla testu wcześniej plik VBA musi być załadowany) plik "start.lsp" to przesuwa się tylko 1 linia i wyświetla się komunikat "1". I to jest istota problemu, że przy uruchamianiu/wywoływaniu procedury z pliku zewnętrznego ZWCAD 2017/2018 jakby zeruje zbiory wskazań w LISP. Jeżeli uruchomi się natomiast ten sam identyczny przykład np.: w ZWCAD+ to problemu nie ma i w obu przypadkach linie są przesuwane i zwracany jest komunikat "3". PLIKI Z PRZYKŁADEM: start.lsp (vl-vbarun "Test") zbiorywskazan.zvb Function Rysuj_Linie_1() As ZcadSelectionSet Dim L As ZcadLine Dim P1(0 To 2) As Double Dim P2(0 To 2) As Double P1(0) = 0: P1(1) = 0: P1(2) = 0 P2(0) = 100: P2(1) = 10: P2(2) = 0 Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) End Function Function Rysuj_Linie_2() As ZcadSelectionSet Dim L As ZcadLine Dim P1(0 To 2) As Double Dim P2(0 To 2) As Double P1(0) = 0: P1(1) = 0: P1(2) = 0 P2(0) = 100: P2(1) = 20: P2(2) = 0 Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) End Function Function Rysuj_Linie_3() As ZcadSelectionSet Dim L As ZcadLine Dim P1(0 To 2) As Double Dim P2(0 To 2) As Double P1(0) = 0: P1(1) = 0: P1(2) = 0 P2(0) = 100: P2(1) = 30: P2(2) = 0 Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) End Function Sub Test() ThisDrawing.SendCommand "(setq z (ssadd))" + vbCr Call Rysuj_Linie_1 ThisDrawing.SendCommand "(ssadd (entlast) z)" + vbCr Call Rysuj_Linie_2 ThisDrawing.SendCommand "(ssadd (entlast) z)" + vbCr Call Rysuj_Linie_3 ThisDrawing.SendCommand "(ssadd (entlast) z)" + vbCr ThisDrawing.SendCommand "(command " + Chr(34) + "_move" + Chr(34) + " z " + Chr(34) + "" + Chr(34) + " " + Chr(34) + "0,0" + Chr(34) + " " + Chr(34) + "100,100" + Chr(34) + " " + Chr(34) + "" + Chr(34) + ") " ' + vbCr ThisDrawing.SendCommand "(alert(itoa(sslength z)))" + vbCr End Sub Edytowane 5 Grudnia 2017 przez e_CAD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 6 Grudnia 2017 Zgłoś Udostępnij Opublikowano 6 Grudnia 2017 Dziękuję za zgłoszenie. Po konsulacjach okazało się, że w SP1 powinno to już działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
e_CAD Opublikowano 7 Grudnia 2017 Autor Zgłoś Udostępnij Opublikowano 7 Grudnia 2017 Potwierdzam, że w wersji ZWCAD 2018 vernum = "2017.12.05(24685)_x64" problem został już wyeliminowany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 13 Grudnia 2017 Zgłoś Udostępnij Opublikowano 13 Grudnia 2017 Dzięki za info. Zamykam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi