kruszynski

Moderatorzy
  • Postów

    1 427
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    83

Aktywność reputacji

  1. Upvote
    kruszynski przyznał(a) reputację dla perlon w Wymiar z podziałem na "n" cześci   
    A co mi tam. Napisałem rybę. Mi się też przyda
    (defun c:ww1 ( / ent) (while (= nil ent) (progn (prompt "\nWskaz wymiar do zmiany: ") (setq ent (car (entsel))) ) ) (if (= (cdr (assoc 0 (entget ent))) "DIMENSION") (multipledimsection (entget ent)) ) ) (defun c:ww2 ( / ) (command "_dimlinear" pause pause pause) (multipledimsection (entget (entlast))) ) (defun multipledimsection ( entlist / n section newtext) (setq n (getint "\nPodaj liczbe odcinkow: ") section (/ (cdr (assoc 42 entlist)) n) newtext (strcat "<>\\X(" (itoa n) "x" (rtos section 2 2) ")") entlist (subst (cons 1 newtext) (assoc 42 entlist) entlist) ) (entmod entlist) (princ) ) (princ)  
  2. Like
    kruszynski przyznał(a) reputację dla Parikon w Dostosuj interfejs użytkownika.   
    Tutaj można pobrać pusty "częściowy plik ustawień" (ang. partial cuix) i wypełnić w oknie "Dostosuj interfejs użytkownika". Wcześniej zalecam zmienić nazwę.
  3. Like
    kruszynski przyznał(a) reputację dla perlon w LISP - rysowanie części/kontury.   
    Pisanie lispa bezpośrednio do okna komend to raczej słabe jest. Żadnych szans na poprawki. Zrób kolego tak:
    1. Otwórz jakiś edytor tekstowy (notatnik, notepad++, cokolwiek)
    2, Wpisz coś takiego
    (command "Line" (getpoint) (getpoint) (getpoint) (getpoint) "c") 3. Zapisz jako : d:\moj_lisp.lsp
    d:\   jest przykładową lokalizacją ty wybierz sobie jaką tam chcesz, moj_lisp.lsp jest nazwą pliku LSP który należy wczytać do zwcad'a. Też możesz wybrać cokolwiek byle miało rozszerzenie .LSP
    4. W linii komend w zwcad'zie wpisz 
    (load "d:\moj_lisp.lsp") 5. Wskaż cztery punkty zgodnie z podpowiedzią w linii komend
    6. Masz swój pierwszy program w LISP'ie rysujący czworokąt z obiektów typu linia o wskazanych wierzchołkach 
    7. Wpisz do powyższego pliku taką sekwencję
    (setq p1 (getpoint "Wskaz punkt:")) (setq p2 (polar p1 0 100)) (setq p3 (polar p2 (/ PI 2) 100)) (setq p4 (polar p3 PI 100)) (command "Line" p1 p2 p3 p4 "c") 8. Zapisz i załaduj ponownie do zwcad'a
    Masz lispa który rysuje kwadrat.
    W pliku moj_lisp.lsp możesz dopisywać kolejne komendy, polecenia, funkcje które złożą się na jakąś sekwencję dającą oczekiwany efekt. Możesz na forum wrzucić co masz już napisane, to dasz szansę, żeby ci pomóc.
     
  4. Upvote
    kruszynski przyznał(a) reputację dla perlon w [LISP] Tworzenie własnego menu   
    Należałoby najpierw uściślić czy chodzi ci o wstążkę czyli z angielska ribbon w stylu wstążkowym interfejsu, 

    Czy może jednak menu rozwijanie z interfejsu klasycznego to co pokazałeś na własnym zrzucie ekranu. Kwestia semantyki.
    Jeżeli to pierwsze to trzeba się bawić edytorem plików .cui (Tools->Customize->Customize interface)
    Jeżeli to drugie to poszukaj w googlu hasła autocad custom menu pull-down; i polecenia menuload
    Tutaj masz co nieco o tworzeniu własnego menu.
    https://www.afralisp.net/archive/lispa/menu1.htm
    http://www.thirdistudio.com.au/AutoCADmenu1.html
    no i oficjalna strona autodesku
    https://knowledge.autodesk.com/support/autocad-lt/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-LT/files/GUID-90B274D0-C750-4ADA-9D3E-2C07B157F6A3-htm.html
    Większość nakładek ma jakieś swoje menu. Można podejrzeć jak to jest zrobione np. w Profilku naszego kolegi forumowego Gruzin albo w nakładkach e-cad. Każde takie menu siedzi w pliku *.mnu
    Zdaje się, że nowe wersje zwcada nie mają już tego pliku ale w wersji 2015+ taki plik jest w kartotece 
    {user}\AppData\Roaming\ZWSOFT\ZWCAD\2015\en-US\Support
    Można go sobie pooglądać i zrobić coś a'la w podobie.
  5. Like
    kruszynski przyznał(a) reputację dla perlon w C# Hatch   
    Wygląda na to, że hund begraben jest w kodzie DXF 92. Po wstawieniu hatcha  z .NET API  kod wynosi 0. Sprawdziłem że dla kodu 1 jest liczona powierzchnia. Dla innych nie sprawdzałem.
    Wyciąg z dokumentacji kodów DXF
    Boundary Path Data
    The boundary of each hatch object is defined by a path (or loop) that consists
    of one or more segments. Path segment data varies depending on the entity
    type (or types) that make up the path. Each path segment is defined by its
    own set of group codes. For information about abbreviations and formatting
    used in this table, see Formatting Conventions in This Reference on page 2.
    Hatch boundary path data group codes
    Description Group code
    Boundary path type flag (bit coded): 92
    0 = Default; 1 = External; 2 = Polyline
    4 = Derived; 8 = Textbox; 16 = Outermost
    Lekarstwo w lisp'ie.
    (defun c:hatchfix ( / entity dxfdata old-dxf new-dxf dxfdata ) (setq entity (car (entsel)) dxfdata (entget entity) old-dxf (assoc 92 dxfdata) new-dxf '(92 . 1) dxfdata (subst new-dxf old-dxf dxfdata) ) (entmod dxfdata) ) W C# jeszcze nie znalazłem co i jak trzeba zafiksować żeby DXF 92 był 1. 
  6. Upvote
    kruszynski otrzymał(a) reputację od perlon w [C#] zdarzenie przy komendzie CANNOSCALE   
    Może Eventhandler  SystemVariableChanged ?
  7. Upvote
    kruszynski otrzymał(a) reputację od alf w odtworzenie obwiedni kreskowania_problem   
    Jak na razie przygotowałem taką wersję minimalną. 
    Działa tak, że klikamy w kolejne obszary w wyniku powstaje sumaryczny obrys.
    zlewnia.lsp

  8. Upvote
    kruszynski przyznał(a) reputację dla perlon w Przybornik PARIKON   
    Jakiś czas temu wpadła mi w ręce taka pozycja:
    https://helion.pl/ksiazki/refaktoryzacja-ulepszanie-struktury-istniejacego-kodu-martin-fowler-kent-beck-john-brant-william-opdy,refukv.htm#format/d
    Trochę już lat od wydania ale mi osobiście zmieniła spojrzenie na sporo rzeczy jeżeli chodzi o optymalizacje kodu.
    W przypadku kot wysokościowych są duże fragmenty powtórzonego kodu np. tego związanego z pobieraniem od użytkownika  punktów, obsługą warstw czy rysowaniem tekstu. Dla każdej z kot jest on identyczny. Może warto wydzielić go do osobnej metody tym bardziej, że jak przyjdzie pomysł na inne koty to ten kod będzie potrzebny po raz kolejny. Krótszy kod łatwiej się zarządza i ewentualne poprawki robi się w jednym miejscu a nie w wielu powtórzeniach.
     
  9. Upvote
    kruszynski otrzymał(a) reputację od Adam Klaczek w Wyświetlanie etykiety z odległością i kątem - rozszerzenie funkcji [Wprowadzono w ZWCAD 2018]   
    Po niewielkim dostosowaniu, teraz powinno być OK
     
    PowerDraw_2018.zelx
  10. Like
    kruszynski przyznał(a) reputację dla perlon w projekt_forum.dll   
    Można nieco przyspieszyć pracę z kodem i umożliwić debugowanie kodu. Szczegóły na filmiku. Z góry przepraszam za słaby warsztat w nagrywaniu bo to mój pierwszy raz 😉
     
  11. Like
    kruszynski przyznał(a) reputację dla Parikon w projekt_forum.dll   
    Polecam ten kurs do przerobienia. Przyda się w dalszej pracy nad projekt forum.
     
  12. Upvote
    kruszynski otrzymał(a) reputację od perlon w [DCL] Walidacja wartości edit-box'a   
    NIezupełnie wyszło tak jak chciałem, ale może wystarczy.
    Blokuje inny element okna. ale nie przy każdej zmianie, ale przy zatwierdzaniu wartości, np przechodząc do innej komórki,albo [enter] na koniec.
    plik DCL wygląda tak:
    EditCheck : dialog { label = ""; :edit_box{ key="path"; label="Ścieżka"; edit_width=6; fixed_width=true; action = "(DCL:Edit:IsValid)"; } : button { action = "(done_dialog 0)"; key = "accept"; label = "Zapisz"; } : button { action = "(done_dialog 0)"; key = "cancel"; label = "Anuluj"; is_cancel = true; } } plik LSP tak:
    (defun DCL:Edit:IsValid ( / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nDCL:Edit:IsValid :*error*: " ) (princ msg ) (princ "\n") ) ) ) (print (strcat "wartość wpisana do okna: " $key " to: " $value ) ) (if (= "" $value) (mode_tile "accept" 1) (mode_tile "accept" 0) ) ) (defun c:testEdit ( / dcl_id RunDialogResult coords LastPath *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nc:testEdit:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq DCL_Path "C:\\<< TWOJA ŚCIEŻKA >>\\edit_check.DCL") (setq dcl_id (load_dialog DCL_Path)) (setq RunDialogResult t ) (setq LastPath "" ) (while RunDialogResult (if(not(new_dialog "EditCheck" dcl_id))(exit)) (action_tile "cancel" "(done_dialog -1)") (setq RunDialogResult(start_dialog)) (cond ((= RunDialogResult 0) (progn (setq RunDialogResult nil ))) ; ESC pressed (t (print RunDialogResult)) ) ) (unload_dialog dcl_id) (princ) )  
  13. Upvote
    kruszynski otrzymał(a) reputację od Parikon w [C#] Detekcja środowiska   
    Znalazłem:
    namespace test { public class Class1 : ZwSoft.ZwCAD.Runtime.IExtensionApplication { public void Initialize() { MessageBox.Show("Initialize!"); } public void Terminate() { Console.WriteLine("Cleaning up..."); } [CommandMethod("test2492")] public static void test2492() { MessageBox.Show("Hello World!"); } } } Ale jestem z siebie dumny
  14. Like
    kruszynski przyznał(a) reputację dla Adam Klaczek w Szablony i skrypty startowe ZWPack   
    No to proszę: DWidok_Skrecenie.lsp
    Polecenie: DWS
  15. Like
    kruszynski przyznał(a) reputację dla 2P w wipeout obwiednia   
    Od wielu lat korzystam z wipeoutów w dość specyficzny i myślę oryginalny sposób. Dzięki wipeoutom rysując otwory w ścianach (okna, drzwi, przejścia itp.) nie rozcinam kresek rysunku ścian i ich haczowania, tylko przykrywam je odpowiednimi blokami drzwi i okien zawierającymi wipeout. Do poprawnego działania potrzebuję właśnie wipeouty nie tyle bez obwiedni, co z obwiednią w kolorze tła (i o określonej grubości). Czyli to o czym jest tutaj mowa. (Ale powyższe pomysły tego nie załatwiają).
    Mój sposób jest taki, że mam specjalną warstwę na wipeouty o kolorze .... TrueColor 255,255,255. Czyli białym. Bo pracuję na białym ekranie roboczym. W przypadku osób pracujących na ciemnych ekranach, warstwa ta powinna mieć kolor odpowiadający tłu. ALE! przed wydrukiem należy przestawić jej kolor zawsze na RGB 255.255,255, żeby osiągnąć pożądany efekt na wydruku. Ja mam do tego specjalnego LISPa,  który załatwia sprawę za mnie.
    Ogólnie mówiąc wipeouty mają potężne możliwości i umożliwiają zupełnie inne podejście do rysowania. Szkoda, że są tak mało znanym elementem i wykorzystywanym jedynie sporadycznie. Nie rozumiem czemu. A o wykorzystaniu wipeoutów z obwiednią w kolorze tła, to właściwie oprócz mojego rozwiązania nie słyszałem nigdy wcześniej. A to naprawdę daje duże nowe możliwości. U mnie w biurze technikę takiego wrysowywania okien, drzwi, barierek, detalu na elewacjach i mnóstwa innych rzeczy przyjęli już wszyscy i bez tego nie ma życia. Nie ma efektywnego rysowania bez wipeoutów.
    Dlatego zachęcam do wipeoutów. Jakby ktoś był bardziej zainteresowany moją techniką obiektowego rysowania rysunków budowlanych to chętnie opowiem.
  16. Upvote
    kruszynski przyznał(a) reputację dla 2P w Blok ze współrzędnymi X i Y   
    Akurat w tym przypadku to nie jest takie trudne do zrobienia. Wystarczy, że zapisując w pliku DWG dla niższej wersji atrybut z field zostanie zapisany jako zwykły atrybut z tekstem na stałe. Dzięki temu treść rysunku pozostanie taka sama, a nie będzie działać tylko automatyzacja.
  17. Like
    kruszynski przyznał(a) reputację dla dmatusz3 w Blok ze współrzędnymi X i Y   
    Powyższa funkcjonalność z fieldami w atrybutach bloku będzie dostępna od wersji ZWCAD 2019.
    Poniżej film jak tego dokonać.
     
  18. Like
    kruszynski przyznał(a) reputację dla Adam Klaczek w Blok ze współrzędnymi X i Y   
    Dzień dobry,
    Można to zrobić za pomocą _mleader i _field, ale wydaje się, że najprościej byłoby to zautomatyzować lispem, np. załączonym.
    Po wczytaniu, funkcję wywołuje się  przez XY.
    (lisp na podstawie kodu z www.cad-notes.com)
     
    xy.lsp
  19. Upvote
    kruszynski przyznał(a) reputację dla kojacek w [ssget]   
    Ja tam jestem zwolennikiem minimalizmu w kodzie:
    (ssget "_x" '((0 . "hatch")(-4 . "/=")(62 . 1)(-4 . "/=")(62 . 105))) 😉
  20. Upvote
    kruszynski przyznał(a) reputację dla Marek-M w Przechowywanie informacji w bazie danych   
    Bardziej miałem na myśli, że @Parikon w swojej aplikacji wykorzystuje właśnie bazę danych SQLite i sposób jej wykorzystania może być podobny do Twojego pomysłu (nie zagłębiałem się w szczegóły techniczne jego rozwiązania i mogę z tego powodu się mylić). Myślę, że dotychczasowa praca Parikona może być dla Ciebie pomocna. Życzę powodzenia w Tworzeniu własnej aplikacji  Aplikacji nigdy za wiele
  21. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Edycja tekstu wymiarowego   
  22. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Błąd: zły typ funkcji - nil, źle umiejscowiony prawy nawias   
    Taki komunikat świadczy o problemie jaki wystąpił w jakimś LISPie.  Być może jest załadowany w inny sposób niż lista startowa:
    Wczytane z automatu są pliki: W opcjach może być dodany katalog. Jeśli w nim jest plik ZWCADdoc.lsp zostanie wczytany przy otwieraniu plików Jeśli jest wczytane menu (plik mnu) , odpowiadający mu plik MNL zostanie wczytany %AppData%\Roaming\ZWSOFT\ZWCAD\2018\pl-PL\Support\ZWCAD2018doc.lsp c:\Program Files\ZWSOFT\ZWCAD 2018\Support\ZWCAD2018.lsp Aplikację możemy wczytać przez rejestr HKEY_CURRENT_USER\Software\ZWSOFT\ZWCAD\2018\pl-PL\Applications\MojaAplikacja choć to raczej arx niż LISP Jeśli w skrócie w użyjemy parametru  /ld albo /b wczytany będzie skrypt, (scr), ale on też może ładować LISPa. Mamy jeszcze plik acad.rx , ale to też raczej do ARX niż LISP a treść komunikatu wskazuje jednak na LISP ( plik ZRX też może ładować plik LISP) Część funkcjonalności ZWCADa zwłaszcza narzędzia ExpressTools są opracowane w LISP i ładowane na starcie. Być może problem jest jakoś związany z rysunkiem a raczej z parą rysunków skoro problem występuje przy otwarciu drugiego rysunku przez 2xclick.
    Proszę obserwować program, ważne by udało się ustalić zasadę - powtarzalność występowania problemu, leśli to się uda być może będzie łatwiej uniknąć problemu  w przyszłości.
  23. Like
    kruszynski przyznał(a) reputację dla Marek-M w Polecenie cofnij podczas wyłączania warstw   
    Heh, szkoda, że ZWCAD tak intensywnie nie pracuje nad funkcjonalnością swojego programu jak Wy. Wasz starający się support mocno podnosi wartość tego oprogramowania z Chin  Dzięki za Wasz trud, łatwiej mi będzie namówić kierownictwo do odświeżenia licencji ZWCAD jak już wyjdzie porządna wersja alfa np. ZWCAD 2021. 😉 
    Póki co ZWCAD 2015+ jest naszym podstawowym narzędziem pracy.
  24. Upvote
    kruszynski otrzymał(a) reputację od jacnightingale w ZWTraffic   
    Możliwe to jest, tylko potencjalnie narażone na komplikacje. Bo jak odróżnić blok opisowy od innych? Można w programie zapisać na stałe nazwę bloku opisowego. Ale jeśli ktoś chciałby użyć tego narzędzia w innym przypadku to nie zadziała. zaznaczenie jednego bloku wzorca chyba nie jest zbyt kłopotliwe a daje nam dużą elastyczność.
  25. Like
    kruszynski otrzymał(a) reputację od tolosek w Tworzenie znaków F-6   
    Możemy wprowadzić w zasadzie dowolną funkcjonalność do naszych nakładek, potrzebujemy na to tylko pomysłu i czasu.
    Czy może Pan opisać szczegółowo jak chciałby Pan korzystać z programu? Może przygotuje Pan jakąś "makietę" okna dialogowego choćby na kartce długopisem i prześle Pan zdjęcie?