-
Postów
1474 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
93
Treść opublikowana przez kruszynski
-
Dzień dobry. Dziękuję za zgłoszenie. Postaram się wprowadzić to przy kolejnej aktualizacji
-
Czyszczenie formatowania tekstu w tabelach
kruszynski odpowiedział(a) na Marek-M temat w Wsparcie programistyczne LISP i VisualLISP
W załączniku takie na szybko uklecone w C#. Wczytać można poleceniem netload Nowe polecenie nazywa się: TableRemoveFormatting TableFormatting.zip -
vlr-command-reactor nie działa na ZWCad
kruszynski odpowiedział(a) na Exar temat w Wsparcie programistyczne LISP i VisualLISP
Trudo powidzieć co powoduje problem w starej wersji. Sprawdziłem też na aktualnej 2021 i tutaj działa bez problemu. -
Też się z tym kiedyś spotkałem, ale nie umiem wywołać na życzenie. Przypuszczałem że to związane z moimi programistycznymi działaniami. A tu okazuje się że temat jest szerszy. Czy potrafi Pan doprowadzić to takiego zachowania świadomie? Co musiałbym zrobić żeby u mnie też tak się stało?
-
[VBA] zaznacz bloki z modelu
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Jaki vernum? i ile obiektów powinno zaznaczyć tak mniej-więcej? -
[VBA] zaznacz bloki z modelu
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Chwila bo czegoś nie rozumiem. Może mamy coś inaczej. U mnie okienko właściwości jest otwarte cały czas. Po uruchomieniu takiej funkcji we właściwościach pojawiają mi sie zaznaczone bloki z możliwością zmian. -
[VBA] zaznacz bloki z modelu
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Wybitnie brzydki i nieintuicyjny fragment kodu. Tak przyjmuję wszelką krytykę z pokorą. Ale zaznacza wszystkie bloki w tym przypadku o nazwie "A-1". Public Sub Test() Dim ssh As ZcadSelectionSet Dim Ftyp(1) As Integer Dim Fdat(1) As Variant Dim BlockName As String BlockName = "A-1" Dim F1, F2 As Variant Ftyp(0) = 0: Fdat(0) = "Insert" Ftyp(1) = 2: Fdat(1) = BlockName Set sstest = ThisDrawing.SelectionSets.Add("sstest") F1 = Ftyp F2 = Fdat sstest.Select zcSelectionSetAll, , , Ftyp, Fdat Dim GroupName As String GroupName = "sstest" Dim group As ZcadGroup Set group = ThisDrawing.Groups.Add(GroupName) For Each Item In sstest group.AppendItems (Item) Next sstest.Delete ThisDrawing.SendCommand ("_SELECT" + vbCr + "G" + vbCr + GroupName + vbCr + vbCr) group.Delete End Sub Pozostaje odfiltrować bloki po atrybucie. Iteracyjnie, w pętli trzeba sprawdzić wartość każdego atrybutu w każdym zaznazconym bloku. Który atrybut jest pierwszy? ten który został wcześniej wstawiony do rysunku? a może ten najwyżej? Raczej posługiwałbym się tu nazwą atrybutu (TagString) niż tym który jest pierwszy. ale... to już temat na inna historię. -
[AutoLisp] Zmiana widoczności warstwy.
kruszynski odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Szybkie pytanko szybka odpowiedź: (command "_layer" "_off" "zbrojenie_linie" "") -
Zmiana tekstu na wymiarze liniowym (dla początkującego)
kruszynski odpowiedział(a) na piotrb temat w Wsparcie programistyczne LISP i VisualLISP
Jeśli dobrze rozumiem pytanie to będzie to (vlax-dump-object dim t ) gdzie (setq dim (vlax-ename->vla-object (car(entsel "Wybierz ")))) -
Zmiana tekstu na wymiarze liniowym (dla początkującego)
kruszynski odpowiedział(a) na piotrb temat w Wsparcie programistyczne LISP i VisualLISP
Tą linię (setq dim (vlax-ename->vla-object (car(entsel "Wybierz wymiar")))) Możesz rozbić na (setq selected(entsel "Wybierz wymiar")) (setq dim (vlax-ename->vla-object (car selected ) ) ) I sprawdź co zwraca (setq selected (entsel "Wybierz wymiar")) -
Zmiana tekstu na wymiarze liniowym (dla początkującego)
kruszynski odpowiedział(a) na piotrb temat w Wsparcie programistyczne LISP i VisualLISP
W pasku poleceń wklej kolej linie i napisz w której jest problem. -
Zmiana tekstu na wymiarze liniowym (dla początkującego)
kruszynski odpowiedział(a) na piotrb temat w Wsparcie programistyczne LISP i VisualLISP
Nie wiem. Nie mam i nie znam Arcadi. Ale tak na czuja to skoro pozwala na wskazanie wymiaru to wygląda na to że LISPy obsługuje. Może nie ma albo nie ładuje z automatu środowiska Visual LISP, spróbuj na początku skryptu dodać linię (vl-load-com) A jak nie łyknie to spróbujemy jeszcze czegoś innego. -
Zmiana tekstu na wymiarze liniowym (dla początkującego)
kruszynski odpowiedział(a) na piotrb temat w Wsparcie programistyczne LISP i VisualLISP
Tak na szybko to mogłoby to być takie coś: (setq R (getdist "podaj rozstaw")) (setq dim (vlax-ename->vla-object (car(entsel "Wybierz wymiar")))) (setq A (vlax-get-property dim 'Measurement) ) (setq X (/ A R)) (vlax-put-property dim 'TextOverride (strcat "#8 co " (rtos X) " cm")) Nie ma jeszcze zaokrąglenia. Nie wiem czy zadziała w Arcadi. w ZWCAD działa. -
Szyk manualny
kruszynski odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
W załączniku aktualizacja pozwalająca wskazywać wiele elementów Szyk.lsp -
Szyk manualny
kruszynski odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
Taki skrypt mógłby wyglądać np tak: (defun C:SzykManualny ( / element odleglosc bazowy kierunek Koniec licznik kopiuj *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nC:SzykManualny:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq Koniec "" licznik 1 ) (defun kopiuj ( / v1 *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nkopiuj:*error*: " ) (princ msg ) (princ "\n") ) ) ) ( setq v1 ( Vector:Normalize ( Vector: kierunek bazowy ) ) ) ( setq v ( Vector:XScalar v1 (* odleglosc licznik ) ) ) ( setq clone (vlax-invoke-method element 'Copy) ) ( setq px (Vector+ bazowy v )) (vlax-invoke-method clone 'Move (vlax-3d-point bazowy) (vlax-3d-point px) ) (setq licznik (1+ licznik)) ) (setq element (SelSet:Entsel "Wskaż element" nil)) (if (null element) (*error* nil) ) (setq odleglosc (ZWCAD:GetDist "Podaj odległość" poprzedniaOdleglosc)) (if (null odleglosc) (*error* nil) ) (setq bazowy (ZWCAD:Getpoint "Wskaż punkt bazowy" nil nil ) ) (if (null bazowy) (*error* nil) ) (setq kierunek (ZWCAD:Getpoint "Wskaż kierunek" bazowy nil ) ) (if (null kierunek) (*error* nil) ) (while (equal Koniec "") ( kopiuj ) (setq Koniec ( ZWCAD:GetString "Czy wstawić kolejny" "" ) ) ) (setq poprzedniaOdleglosc odleglosc) (princ) ) (defun Vector: ( A B / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector::*error*: " ) (princ msg ) (princ "\n") ) ) ) (list (- (car A) (car B ) ) (- (cadr A) (cadr B ) ) (- (caddr A) (caddr B ) ) ) ) (defun Vector:Length (vec / s *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector:Length:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq s (+ (* (car vec) (car vec) ) (* (cadr vec) (cadr vec) ) (* (caddr vec) (caddr vec) ))) (if (< s 0.0000000000001 ) 0.0 (sqrt s )) ) (defun Vector:Normalize (v / len *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector:Normalize:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq len (Vector:Length v) ) (if (< len 0.00000001) (list 0.0 0.0 0.0 ) (progn (list (/ (car v ) len) (/ (cadr v ) len) (/ (caddr v ) len) ) ) ) ) (defun Vector:XScalar (v s / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector:XScalar :*error*: " ) (princ msg ) (princ "\n") ) ) ) (mapcar '(lambda (x) (* x s) ) v ) ) (defun Vector+ (A B / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n Vector+ : *error*: " ) (princ msg ) (princ "\n") ) ) ) (if (null A) (setq A (list 0.0 0.0 0.0 ) )) (if (null B) (setq B (list 0.0 0.0 0.0 ) )) (list (+ (car A ) (car B) ) (+ (cadr A ) (cadr B) ) (+ (caddr A ) (caddr B ) ) ) ) (defun SelSet:Entsel (tresc filter / OldNoMutt MSel OutVal *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nSelSet:Entsel:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq tresc (strcat "\n" tresc ": ") ) (prompt tresc ) (setq OldNoMutt (getvar 'NOMUTT)) (setvar 'NOMUTT 1) (setq MSel (if (null filter) (vl-catch-all-apply 'ssget (list ":S:E" )) (vl-catch-all-apply 'ssget (list ":S:E" filter )) ) ) (setvar 'NOMUTT OldNoMutt ) (if (vl-catch-all-error-p MSel) (progn (prompt (vl-catch-all-error-message MSel)) ) (progn (if MSel (progn (setq OutVal (vlax-ename->vla-object (ssname MSel 0)) ) )) ) ) OutVal ) (defun ZWCAD:GetDist (tresc domyslny / Wynik trescformat liczba *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nZWCAD:GetDist:*error*: " ) (princ msg ) (princ "\n") ) ) ) (if domyslny (if (numberp domyslny) (setq tresc (strcat tresc "<" (rtos domyslny 2 4) ">") ))) (setq tresc (strcat "\n" tresc ": ")) (setq liczba(vl-catch-all-apply 'getdist (list tresc ))) (if (vl-catch-all-error-p liczba) (progn (prompt (vl-catch-all-error-message liczba)) (setq Wynik nil ) ) (progn (if (null liczba) (setq Wynik domyslny ) (setq Wynik liczba) ) ) ) Wynik ) (defun ZWCAD:Getpoint (tresc P0 domyslny / SelPt Wynik *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nZWCAD:Getpoint:*error*: " ) (princ msg ) (princ "\n") ) ) ) ;(ZWCAD:Getpoint tresc P0 domyslny ) (setq tresc (strcat "\n" tresc ": ")) (if (not(null P0)) (setq SelPt(vl-catch-all-apply 'getpoint (list P0 tresc ))) (setq SelPt(vl-catch-all-apply 'getpoint (list tresc ))) ) (if (vl-catch-all-error-p SelPt) (progn (prompt (vl-catch-all-error-message SelPt)) (setq Wynik nil ) ) (progn (if (null SelPt) (setq Wynik domyslny ) (setq Wynik SelPt) ) ) ) Wynik ) (defun ZWCAD:GetString (tresc domyslny / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nZWCAD:GetString:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq tresc (strcat "\n" tresc ": ")) (String:Get tresc domyslny) ) (defun String:Get (komunikat defVal / Wynik tekst *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nString:Get:*error*: " ) (princ msg ) (princ "\n") ) ) ) ; (setq komunikat "podaj tekst" ) ; (setq defVal "SLU" ) (if defVal (if (not(= defVal "")) (setq komunikat (strcat komunikat "<" defVal ">:" ) )) ) (setq tekst(vl-catch-all-apply 'getstring (list komunikat ))) (if (vl-catch-all-error-p tekst) (progn (prompt (vl-catch-all-error-message tekst)) (setq Wynik nil ) ) (progn (if (null tekst) (setq Wynik defVal ) (if (= tekst "") (setq Wynik defVal ) (if (= tekst ".") (setq Wynik "") (setq Wynik tekst) ) ) ) ) ) Wynik ) Szyk.lsp -
Szyk manualny
kruszynski odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
Wygląda trochę jak jedna z funkcji naszego ZWGEO: https://youtu.be/E0pC28T7E-M Wiecej tutaj https://www.zwcad.pl/ui-szansa/zwgeo.html -
Szyk manualny
kruszynski odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
A tak z ciekawości: W jakich sytuacjach taka funkcja może się przydać? -
Viewport na modelu
kruszynski odpowiedział(a) na Noodles temat w Wsparcie programistyczne LISP i VisualLISP
Myślałem że uda mi się znaleźć jakiś problem na poziomie kodu, ale wygląda OK. Mogę to przetestować jedynie na ZWCAD i tutaj działa. Nie wiem dlaczego w innej aplikacji jest problem. -
[VBA] Pręt zbrojeniowy
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
A na drugi, to ten kod z tablicami dla mnie był bardziej czytelny niż z kolekcjami. Refaktoryzacja w celu usunięcia kodu spagetti przez wydzielenie funkcji to dobry plan. Ale zmiana typy danych z tablicy na kolekcję, to po żeby za chwilę zmieniać kolekcję na tablicę to ma skutek dokładnie odwrotny. Myślę, że lepszym planem byłoby oddzielenie operacji typu interakcja z użytkownikiem, przeliczenie punktów rysowanie. np tak Public Function ZapytajOPunkt(komunikat As String) ZapytajOPunkt = ThisDrawing.Utility.GetPoint(, komunikat) End Function Public Function przeliczPunkty(NAROZNIK As Variant) ReDim p(7) As Double p(0) = NAROZNIK(0): p(1) = NAROZNIK(1) p(2) = NAROZNIK(0) + 50: p(3) = NAROZNIK(1) + 30 p(4) = NAROZNIK(0) + 100: p(5) = NAROZNIK(1) + 30 p(6) = NAROZNIK(0) + 100: p(7) = NAROZNIK(1) przeliczPunkty = p End Function Public Function rysuj(p) Dim poly As ZcadLWPolyline Set poly = ThisDrawing.ModelSpace.AddLightWeightPolyline(p) poly.ConstantWidth = 1 End Function Private Sub Test() ' frm_test.Hide Dim NAROZNIK As Variant NAROZNIK = ZapytajOPunkt("Podaj punkt początkowy:") Dim p() As Double p = przeliczPunkty(NAROZNIK) rysuj (p) End Sub Dzięki temu pracujesz szybciej, bo jesteś niezależny od okna możesz w innej funkcji testującej wywołać np tylko rysuj(p) na danych sztucznie spreparowanych dzięki czemu masz pewność że ten obszar DZIAŁA. masz wszystkie operacje związane z reprezentacją grafiki w jednym miejscu. więc jeśli chcesz w innym miejscu aplikacji narysować podobną polilinię, to nie musisz pamiętać że masz jeszcze zmienić jej szerokość. Jeśli chcesz zmienić polilinię, np na szerszą, albo podmienić na inny typ elementu np blok, robisz to tylko w jednym miejscu, w funkcji rysuj, a nie musisz szukać w innych miejscach aplikacji gdzie to jeszcze i po pozmieniać. -
[VBA] Pręt zbrojeniowy
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
tak na pierwszy rzut oka to raczej ZcadLWPolyline a nie ZcadPolyline -
Viewport na modelu
kruszynski odpowiedział(a) na Noodles temat w Wsparcie programistyczne LISP i VisualLISP
Trudno powiedzieć co może być przyczyną problemu. Załączony fragment jest częścią większej całości - korzysta z funkcji które nie są funkcjami z obszaru AutoLISP czy VisualLISP. -
ZWMetric:Locals:Get : *error*: incorrect type - nil
kruszynski odpowiedział(a) na czarnula_100 temat w ZWMetric
Dzień dobry. W jakich sytuacjach to się objawia? Sprawdzałem przed chwilą na najnowszej wersji i na pustym pliku i taki problem się nie powtórzył. Być może coś siedzi w pliku na którym Pani pracuje. Proszę przesłać przykładowy plik na pomoc@zwcad.pl Pozdrawiam -
Wstawianie bloków wg zadanych współrzędnych
kruszynski odpowiedział(a) na xposdi temat w Wsparcie programistyczne LISP i VisualLISP
Jasne, mogę pomóc. Jaka pomoc byłaby potrzebna? Sporo przykładów i wyjaśnienie najprostszych pojęć jest tutaj. https://www.zwcad.pl/1-narzedzia-do-lisp.html https://www.zwcad.pl/1-narzedzia-do-lisp/39-kursy/kurs-lisp/przyklady-lisp/111-2-odczyt-pliku-tekstowego.html https://www.zwcad.pl/help/lisp-help.html -
[VBA] Szkic w UserForm
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Czy to koniecznie musi być w VBA? Wygląda na to, że to nie jest możliwe w VBA. Jedyne co mi przychodzi do głowy to wstawić do UserForm kontrolkę typu Image i wyświetlić Obrazek prostokąta w kontrolce Image, ale to taka dość karkołomna metoda. Może lepiej zrobić to w .Net VB, tam przypuszczam że będzie to łatwiejsze. -
LISP AutoCAD - etykiety wysokości
kruszynski odpowiedział(a) na paq95 temat w Wsparcie programistyczne LISP i VisualLISP
Może tak: (defun c:lh (/ p x y ptcoord textloc) (while (setq p (getpoint "\nPick Point: ")) (command "_POINT" p) (setq z (rtos (caddr p))) (setq ptcoord (strcat z)) (setq textloc (getpoint "\nPick Label Location: ")) (command "_TEXT" (list (car textloc) (cadr textloc) (caddr p) ) 0.3 0 ptcoord "" ) ) )