kruszynski

Moderatorzy
  • Postów

    1 427
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    83

Aktywność reputacji

  1. Upvote
    kruszynski otrzymał(a) reputację od alf w lisp, generowanie kierunków/grotów strzałek na zadanej polilinii   
    Proszę zainstalować tą poprawkę, powinno pomóc.
    https://cad.szansa.net.pl/ZWGis_2023/ZWGis_x64_v2023.exe
  2. Like
    kruszynski otrzymał(a) reputację od alf w Jak wczytać plik SHP?   
    Plan jest taki, żeby można było przyciskiem schowanym w kolumnie 4 otworzyć listę wszystkich użytych wartości z których będzie można wybrać kiedy nie pamiętamy danych etykiet. Chciałbym zrobić tak, żeby dało się * zastąpić znaki.
    Po prawej stronie od tabelki są przyciski [+] [-]. Są one po to, żeby można było dodać kolejne warunki, np powierzchnia > od 10 [+] ( w ostatniej kolumnie "i" ) powierzchnia < 15. Wyglądałoby to tak:

     
  3. Upvote
    kruszynski otrzymał(a) reputację od s1016 w Rozmieszczenie punktów na polilinii   
    Tak na szybko takie coś:
     
     
    ppp.zelx

  4. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Rozmieszczenie punktów na polilinii   
    Tak na szybko takie coś:
     
     
    ppp.zelx

  5. Upvote
    kruszynski przyznał(a) reputację dla Włodek w SKALA WYŚWIETLANYCH LINII POZIOMYCH   
    Jak nie pomoże, to proszę sprawdzić dwa elementy.
    Pierwszy to główny współczynnik skali w zarządzaniu liniami - powinien być ustawiony na 1.
    Jak jest to proszę sprawdzić, czy wyłączona jest opcja "Używaj jednostek przestrzeni papieru do skali" - musi być wyłączone.
  6. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Tworzenie bloku w lisp oraz instrukcja warunkowa   
    Dodałem łączenie elementów jako blok
    (setq last_mem (entlast) ) ; zapamiętujemy co było ostatnio narysowane, przyda się później ; ..... rysowanie (setq lastent (if (null last_mem) ; (setq lastent (entnext ) ) (entnext ) (entnext last_mem) ) ) (setq Selset (ssadd ) ) ; przygotowujemy zbiór elementów do dodania do bloku (while (not(null lastent ) ) (setq Selset (ssadd lastent Selset) ) ; dodajemy kolejny element do zbioru (setq lastent (entnext lastent)) ; szukamy następnego narysowanego elementu ) (setq nr 1 ) (while (tblsearch "BLOCK" (setq nazwa (strcat "okno" (itoa nr ) ) )) (setq nr (1+ nr) ) ) ; tworzymy blok (definicję) z narysowanych elementów (command "_.-block" nazwa "_non" PU Selset "") ; wstawiamy blok (command "_insert" nazwa PU "" "" "")  
  7. Upvote
    kruszynski przyznał(a) reputację dla perlon w Tworzenie bloku w lisp oraz instrukcja warunkowa   
    Takie rozwiązanie, które sam stosuję:
    (if (not (tblsearch "LAYER" "jakas_warstwa")) (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 "jakas_nazwa") '(70 . 0) '(62 . 7) '(6 . "Continuous") '(370 . -3) ) ) )  
  8. Upvote
    kruszynski otrzymał(a) reputację od s1016 w Napis na znaku D-18   
    Załączone pliki proszę zapisać tutaj:
    c:\Szansa\ZWTraffic\2022\PL\Templates\Vertical traffic signs\D - Informacyjne\
    D-18.dwg D-18_parkomat.dwg
  9. Like
    kruszynski otrzymał(a) reputację od przemkrzem w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  10. Upvote
    kruszynski otrzymał(a) reputację od pawmal w ZWCAD - addselected   
    W załączniku wersja dla ZWCAD 2015+
    AddSelected.zel
  11. Like
    kruszynski przyznał(a) reputację dla dmatusz3 w ZWCAD - addselected   
    Napisaliśmy taki mały skrypt, który wykonuje podobną funkcję.

    Wystarczy go przeciągnąć na okno rysunku i będzie dostępne nowe polecenie addselected.
    Skrypt do pobrania AddSelected.zel
     
  12. Upvote
    kruszynski otrzymał(a) reputację od alf w Wstawianie map WMS z serwerów gov.pl   
    Mam świeżynkę.
    można wpisać link do własnego serwera. jeśli nie uda się wstawić mapy i wyświetli komunikat mówiący że nieprawidłowa szerokość i wysokość, można wpisać mniejszą niż ta, którą serwer obiecuje, najczęściej pomaga. odptaszkowywanie już działa,
     
    ZWMS.zip
  13. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w lisp, generowanie kierunków/grotów strzałek na zadanej polilinii   
    Jedni dziobią, inni drapią a ja .... hm. Takie mam:
    Polecenie do uruchomienia
    zzz  
    (defun C:zzz ( / symb Polilinia *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nC:zzz:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq symb ( SelSet:Entsel "Wybierz strzałkę" (list (cons 0 "INSERT" ))) ) (setq polilinia ( SelSet:Entsel "Wybierz polilinię" (list (cons 0 "*POLYLINE" ))) ) (while (not (null polilinia ) ) (wstawWSrodkuOdcinkow polilinia symb) (setq polilinia ( SelSet:Entsel "Wybierz polilinię" (list (cons 0 "*POLYLINE" ))) ) ) (princ) ) (defun wstawWSrodkuOdcinkow ( polilinia symb / ile i *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nwstawWSrodkuOdcinkow:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq ile (vlax-curve-getEndParam polilinia ) ) (setq i 1 ) (repeat (fix ile) (if (not (odcinekJestzbytkrotki polilinia i symb )) (progn (wstawWOdcinku polilinia i symb) ) ) (setq i (1+ i) ) ) ) (defun odcinekJestzbytkrotki ( polilinia i symb / d1 d0 dlugoscodcinka wielkoscsymbolu *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nodcinekJestzbytkrotki:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq d1(vlax-curve-getDistAtParam polilinia i)) (setq d0(vlax-curve-getDistAtParam polilinia (- i 1 ) ) ) (setq dlugoscodcinka (- d1 d0 ) ) (setq wielkoscsymbolu ( BoundingBox:Width ( BoundingBox symb ) ) ) (< dlugoscodcinka (* 3 wielkoscsymbolu) ) ) (defun wstawWOdcinku ( polilinia i symb / midparam px nowysymbol P0 ang *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nwstawWOdcinku:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq midparam (- i 0.5) ) (setq px (vlax-curve-getPointAtParam polilinia midparam ) ) (setq nowysymbol (vlax-invoke-method symb 'Copy ) ) (setq P0 (vlax-get-property nowysymbol 'InsertionPoint ) ) (vlax-invoke-method nowysymbol 'Move P0 (vlax-3d-point px ) ) (setq ang (vlax-curve-getFirstDeriv polilinia midparam) ) (vlax-put-property nowysymbol 'Rotation (angle (list 0 0 0 ) ang ) ) nowysymbol ) (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 BoundingBox (object / width height IP AP P1 P2 MoveVector *error*) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n BoundingBox : *error*: " ) (princ msg ) (princ "\n") ) ) ) (if (Object:IsErased object ) (*error* "object is erased" )) (setq ans(vl-catch-all-apply 'vlax-invoke-method (list object 'GetBoundingBox 'P1 'P2 ))) (if (vl-catch-all-error-p ans ) (progn (print ( vl-catch-all-error-message ans ) ) ) (progn (setq P1 (List:Factory P1 ) ) (setq P2 (List:Factory P2 ) ) ) ) (list P1 P2 ) ) (defun BoundingBox:Width ( bbox / *error*) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n BoundingBox:Width : *error*: " ) (princ msg ) (princ "\n") ) ) ) (- (car (cadr bbox) ) (car (car bbox) )) ) (defun List:Factory (InVal / OutVal AsList ; (setq mem InVal ) (setq InVal mem ) *error*) ( defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nList:Factory :*error*: " ) (princ msg ) (princ "\n") ) ) ) (cond ( ( = (type InVal) nil) nil) ( (vl-catch-all-error-p InVal) (progn (princ "Error trapped:" ) (princ InVal ) nil)) ( ( = (type InVal) 'LIST) InVal) ( ( = (type InVal) 'SAFEARRAY) (progn (setq AsList (vl-catch-all-apply 'vlax-safearray->list (list InVal ))) (if (vl-catch-all-error-p AsList) ( progn ( princ (vl-catch-all-error-message AsList ) ) nil ) ( progn AsList ) ) ) ) ( ( = (type InVal) 'VARIANT) (progn (List:Factory (vlax-variant-value InVal) ) ; bo variant value powinien zwrócić safearray ) ) ( t (list InVal ) ) ) ) (defun Object:IsErased ( obj / blockHandle *error*) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n Object:IsErased: *error*: " ) (princ msg ) (princ "\n") ) ) ) (setq result nil) (if (null obj ) (setq result T) (progn (setq blockHandle (vlax-get-property obj 'handle )) (if (null blockHandle ) (setq result T) (progn (setq entity (handent blockHandle) ) (if (null entity ) (setq result T) (setq result (null (entget entity ) )) ) ) ) ) ) result )  
     

    Strzałki.lsp
  14. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w [VBA] Zwcad - zaznacz blok ale uważaj na grupy   
    Trzeba sprawdzić porównać wybrane elementy z każdym elementem w każdej grupie.
    Dim ent As ZcadEntity For I = 0 To ssetObj.Count Set ent = ssetObj.Item(I) Dim grs As ZcadGroups Dim gr As ZcadGroup Set grs = ThisDrawing.groups For Each gr In grs For J = 0 To gr.Count Dim entwgrupie As ZcadEntity Set entwgrupie = gr.Item(J) If entwgrupie Is ent Then MsgBox "element jest w grupie" Exit Sub End If Next J Next Next I  
  15. Upvote
    kruszynski otrzymał(a) reputację od s1016 w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  16. Like
    kruszynski otrzymał(a) reputację od katarzyna.bober w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  17. Upvote
    kruszynski otrzymał(a) reputację od alf w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  18. Upvote
    kruszynski otrzymał(a) reputację od Martin_S w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  19. Upvote
    kruszynski otrzymał(a) reputację od pawmal w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  20. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Automatyczny podział rysunku wykonanego w modelu na arkusze   
    Przygotowałem skrypt, który pomoże dzielić model na arkusze:
    Funkcja do uruchomienia:
    ww Działanie przedstawiłem na filmiku:

    Arkusze.zelx
  21. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Progam do odczytywania rzędnej wysokościowej punktu ?   
    W ZWCAD program działa , dorobiłem tylko odwołanie do funkcji.
    Całość wygląda tak:
    (defun URL:Get ( url / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nURL:Get:*error*: " ) (princ msg ) (princ "\n") ) ) ) (if (setq obj (vlax-create-object "winhttp.winhttprequest.5.1")) (progn (setq rtn (vl-catch-all-apply '(lambda nil (vlax-invoke-method obj 'open "GET" url :vlax-false) (vlax-invoke-method obj 'send) (vlax-get-property obj 'responsebody) ) ) ) (vlax-release-object obj) (if (vl-catch-all-error-p rtn) (prompt (vl-catch-all-error-message rtn)) (vl-list->string (mapcar '(lambda ( x ) (lsh (lsh x 24) -24)) (vlax-safearray->list (vlax-variant-value rtn)) ) ) ) ) ) ) (defun GUKiK:H ( coords / ; (setq coords (list 486617 637928 ) ) *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nPoint:GetHByGUKiK:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq url (strcat "https://services.gugik.gov.pl/nmt/?request=GetHByXY&x=" (rtos (car coords) ) "&y=" (rtos (cadr coords)) "" ) ) (setq H (URL:Get url) ) (atof h) ) A uruchomić można tak
    (GUKiK:H (list 486617 637928 ) ) albo nawet tak: wskazując punkt w przestrzeni
    (GUKiK:H (getpoint "\nWskaż punkt: " ) ) Wystarczy plik z załącznika wczytać do ZWCADa poleceniem appload.
     
    GUKiK.lsp
  22. Like
    kruszynski przyznał(a) reputację dla perlon w Progam do odczytywania rzędnej wysokościowej punktu ?   
    Takie coś na razie mnię wyszło. Komenda zwraca do linii poleceń komunikat z odczytaną rzędną wysokosciową na podstawie odpowiedzi z portalu. 
    Jak ma wstawiać metkę albo blok to trzeba jeszcze pokodzić. Jest również metoda ConvertPoint3dToCoordinate na razie pusta, gdyby zaszła potrzeba wprowadzenia konwersji układów współrzędnych.
    using System.Net.Http; using ZwSoft.ZwCAD.ApplicationServices; using ZwSoft.ZwCAD.EditorInput; using ZwSoft.ZwCAD.Geometry; using ZwSoft.ZwCAD.Runtime; namespace GetHeightByCoordinates { public static class Commands { [CommandMethod("CK_GetHbyXY")] public static void GetHeightByCoordinateXY() { var (X, Y) = ConvertPoint3dToCoordinate(GetPoint()); var height = GetHeight(X, Y); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage($"\n{height}"); } public static string GetHeight(double coordinateX, double coordinateY) { string url = $"https://services.gugik.gov.pl/nmt/?request=GetHByXY&x={coordinateX}&y={coordinateY}"; return new HttpClient().GetAsync(url).Result.Content.ReadAsStringAsync().Result; } private static Point3d GetPoint() { PromptPointOptions pPtOpts = new PromptPointOptions("\nWskaz punkt na mapie: "); PromptPointResult pPtRes = Application.DocumentManager.MdiActiveDocument.Editor.GetPoint(pPtOpts); return pPtRes.Value; } private static (double X, double Y) ConvertPoint3dToCoordinate(Point3d point) { // convert pick point to coordinates return ( point.X, point.Y ); } } } cały projekt do ściągnięcia z Github'a
    https://github.com/TomekTkaczyk/GetHeightByCoordinates
  23. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w brak funkcji SETBYLAYER   
    Taki skrypt mógłby wyglądać tak:
    (vl-load-com) (defun c:setByLayer ( / wybrane doc ) (setq wybrane (SelSet:Get "Wybierz elementy do zmiany" nil) ) (SetByLayer wybrane) (vla-regen ( GetThisDrawing ) acallviewports) (princ) ) (defun SetByLayer ( dozmiany / format ) (defun format ( element / ) (setq ans (vl-catch-all-apply 'vlax-put-property (list element 'Color acbylayer ) )) (if (vl-catch-all-error-p ans) (princ (vl-catch-all-error-message ans )) ) ) (cond ((listp dozmiany) (progn (foreach % dozmiany (SetByLayer %) ) )) ((= (vlax-get-property dozmiany 'EntityName ) "AcDbBlockReference") (progn (format dozmiany) (setq elementy (Block:GetItems (vlax-get-property dozmiany 'Name ))) (SetByLayer elementy) )) (t (progn (format dozmiany) )) ) nil ) (defun GetThisDrawing ( / ) (vla-get-activedocument (vlax-get-acad-object) ) ) (defun SelSet:ToList (selset / Wynik ileelementow i *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nSelSet:ToList:*error*: " ) (princ msg ) (princ "\n") ) ) ) (if selset (progn (setq ileelementow(sslength selset) ) (setq i 0 ) (repeat ileelementow (setq Wynik (append Wynik (list (vlax-ename->vla-object(ssname selset i) ) ))) (setq i (1+ i )) ) )) Wynik ) (defun SelSet:FilterByType ( elementy typy / sl i % *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nSelSet:FilterByType:*error*: " ) (princ msg ) (princ "\n") ) ) ) ; (setq elementy (ssget ) ) (setq sl (sslength elementy)) (setq i (1- sl )) (repeat sl (setq % (ssname elementy i)) (if (not (member (cdr(assoc 0 (entget %) )) typy)) (setq elementy(ssdel % elementy)) ) (setq i (1- i) ) ) ) (defun SelSet:Get (tresc typy / selElems elementy Filter % OldNoMutt *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n SelSet:Get:*error*: " ) (princ msg ) (princ "\n") ) ) ) ;---------------------------------------------------------- ; funkcja sprawdza, czy jakieś elementy zostały zaznaczone, jeśli nie, prosi użytkownika o wskazanie obiektów ; Argumenty: tresc - komunikat wyświetlany w pasku poleceń zachęta do wskazanie obiektów ; Wynik: lista wybranych obiektów jeśli coś zostało wybranie ; nil jeśli nic nie zostało wybrane. ; ---------------------------------------------------------- ; versja 2.0 ; dodane filtrowanie typów ; ---------------------------------------------------------- ; test: ;(sslength (ssget (list (cons 0 "3DSOLID") ))) ; ---------------------------------------------------------- (if typy (progn (if (listp (car typy) ) (setq Filter typy ) (progn (setq Filter (list (cons -4 "<or" ))) (foreach % typy (setq Filter (append Filter (list (cons 0 % ) ))) ) (setq Filter (append Filter (list (cons -4 "or>" ) ))) ) ) )) (setq selElems(ssgetfirst )) (if (car selElems) (progn (setq elementy (SelSet:ToList(SelSet:FilterByType selElems typy))) ) (progn (setq tresc (strcat "\n" tresc ": ") ) (princ tresc ) (setq OldNoMutt (getvar 'NOMUTT)) (setvar 'NOMUTT 1) (setq elementy (if (null Filter) (vl-catch-all-apply 'ssget ) (vl-catch-all-apply 'ssget (list Filter )) ) ) (setvar 'NOMUTT OldNoMutt ) (if (not(vl-catch-all-error-p elementy)) (progn (setq elementy (SelSet:ToList elementy )) ) (progn (setq elementy nil) ) ) ) ) elementy ) (defun Blocks:Get ( BlockName / blocks Def *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nBlocks:Get:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq blocks ( vlax-get-property ( GetThisDrawing ) 'Blocks ) ) (setq Def(vl-catch-all-apply 'vlax-invoke-method ( list blocks 'Item BlockName ) ) ) (if (vl-catch-all-error-p Def) (setq Def nil ) ) Def ) (defun Block:GetItems ( nazwa / definicja ileElementow i element elementy *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nBlock:GetItems:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq definicja (Blocks:Get nazwa ) ) (setq ileElementow ( vlax-get-property definicja 'Count )) (setq i 0) (repeat ileElementow (setq element (vla-item definicja i)) (setq elementy (append elementy (list element ))) (setq i (1+ i)) ) elementy ) (princ)  
    SetByLayer.lsp
  24. Like
    kruszynski przyznał(a) reputację dla pop3k w [VBA] zaznacz bloki z modelu   
    Słuchajcie, działa!
    zamiast 
    "_SELECT" należy wpisać
    "_.pSELECT" Dzięki za pomoc! Jesteście MISTRZAMI
  25. Like
    kruszynski przyznał(a) reputację dla pawmal w Problem podczas publikowania arkuszy do PDF - rozmazane czcionki [rozwiązany]   
    Proszę w pierwszej kolejności ustawić wydruk czcionek jako grafikę. Można także jako drukarkę ustawić Microsoft Print to PDF i wybrać przy publikowaniu opcję Drukarka zamiast PDF. Rozwiązaniem jest też pobranie i zainstalowanie nowszej wersji.