kruszynski

Moderatorzy
  • Zawartość

    1016
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    30

Aktywność reputacji

  1. Upvote
    kruszynski przyznał reputację dla 2PBlok 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.
  2. Like
    kruszynski przyznał reputację dla dmatusz3Blok 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ć.
     
  3. Like
    kruszynski przyznał reputację dla Adam KlaczekBlok 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
  4. Upvote
    kruszynski przyznał reputację dla kojacek[ssget]   
    Ja tam jestem zwolennikiem minimalizmu w kodzie:
    (ssget "_x" '((0 . "hatch")(-4 . "/=")(62 . 1)(-4 . "/=")(62 . 105))) 😉
  5. Upvote
    kruszynski przyznał reputację dla Marek-MPrzechowywanie 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
  6. Upvote
    kruszynski otrzymał reputację od dmatusz3 w Edycja tekstu wymiarowego   
  7. Upvote
    kruszynski otrzymał 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.
  8. Like
    kruszynski przyznał reputację dla Marek-MPolecenie 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.
  9. Upvote
    kruszynski otrzymał 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ść.
  10. Like
    kruszynski otrzymał 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?
  11. Upvote
    kruszynski przyznał reputację dla dmatusz3Rzutnie w arkuszu   
    Proszę spróbować polecenia szyk lub mvsetup.
     
  12. Upvote
    kruszynski przyznał reputację dla TaflaZWCAD zawiesza się   
    https://niebezpiecznik.pl/post/skandal-w-kaspersky-ten-antywirus-pomagal-rosyjskim-sluzbom-wykradac-dane-z-komputerow-na-calym-swiecie/
    Jednym blokuje - innym udostępnia.
     
  13. Like
    kruszynski otrzymał reputację od jacnightingale w Skrypt przenoszący określone warstwy na spód   
    W załączeniu skrypt.
    Polecenie do wywołania: tak jak nazwa pliku
    HatchToBack.lsp
  14. Upvote
    kruszynski otrzymał reputację od Pawcyk w Dokumentacja fotograficzna   
    W wywołaniu poleceniehyperlink "_I" powinno być w cudzysłowie
    po co tam jest _O ?
    powinno być tak:
    (command "_-hyperlink" "_i" last_ent "" path "" "" "" )  
  15. Upvote
    kruszynski przyznał reputację dla dmatusz3Szablony i skrypty startowe ZWPack   
    Nie jesteśmy pewni za bardzo czy chodzi o coś takiego, ale własne style kreskowania możemy dodać do palety narzędzi.
     
  16. Upvote
    kruszynski otrzymał reputację od jarekw90 w problem repeat + getkword   
    Proponuję tak:
     
    (defun ZWCAD:GetKWord (init Prompt DefVal / ans OutVal *error*) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n ZWCAD:GetKWord : *error*: " ) (princ msg ) (princ "\n") ) ) ) (initget 2 init) (setq ans(vl-catch-all-apply 'getkword (list Prompt))) (if (not(vl-catch-all-error-p ans)) (if ans (progn (if (equal ans "") (setq OutVal DefVal) (setq OutVal ans) ) ) (setq OutVal DefVal) ) ) OutVal ) (setq wybrane (ZWCAD:GetKWord "T N" "Kontynuowac? [T/N] <T>" "T" ) )  
  17. Upvote
    kruszynski otrzymał reputację od Pawcyk w Zapamiętywanie ostatniej wprowadzonej wartości   
    (close f) powinno zamykać po uchwycie do pliku a nie po ścieżce.
    Czyli
    (setq file (open (strcat (getvar 'dwgprefix) "OstWprRzedna.txt") "r") ) ... (close file) A o co chodzi z tym?
     
    (something)  
  18. Upvote
    kruszynski otrzymał reputację od dmatusz3 w ZWCAD 2018 SP1 - edytor bloków [rozwiązany]   
    Przygotowałem alternatywę dla wybierania zagnieżdżonych bloków przy  funkcji BEDIT.
    Po wczytaniu załączonego lispa dostępne będzie polecenie BBEDIT.  Po jego uruchomieniu zostaniemy poproszeni o wybranie czegoś w rysunku i uruchomiona będzie funkcja BEDIT dla naajbardziej zagnieżdżonego bloku.
    BBedit.lsp
  19. Downvote
    kruszynski przyznał reputację dla ChrisBrak przezroczystości polilinii   
    HEHE trzeba przyznać, że to im się udało! Porównałem sobie działanie ZWCADA z konkurencyjnymi CADami i przyznaję, że ZWCAD wypada w tym konkretnym przypadku najgorzej... Zaznaczę tylko, że konkurencyjne CADy są wersjami z 2015r.
  20. Upvote
    kruszynski przyznał reputację dla Martin_Spolilinia+szerokość - wyświetlanie wierzchołków   
    Też to potwierdzam w 2018

     
    Teraz próba obejścia...jesli to ma służyć poprawie estetyki wydruku takiej polilinii najlepiej mi to wychodzi z "wymuszonym" zaokraglonym fazowaniem = 0,5* grubosć polilinii generalnie <0,1>


    pl-test.dwg
     
  21. Upvote
    kruszynski przyznał reputację dla Parikonprojekt_forum.dll   
    Lista projektów będzie zapisywana w bazie danych. Wybrałem system bazodanowy Sqlite, którego biblioteki klas są w domenie publicznej. Visual Studio za pomocą usługi NuGet
    w "prosty" sposób dostarczy potrzebne biblioteki do naszego projektu.
     
  22. Upvote
    kruszynski przyznał reputację dla kaminkiDynamiczna modyfikacja obiektów C#   
    Mam okrąg w kilku egzemplarzach na rysunku. Gdy modyfikuję jeden dowolny to pozostałe również zmieniają się. Czy jest inny sposób niż przez bloki? Czy zadziałałoby to poprzez użycie "event handle"? 
    - utworzyć nod do przechowywania informacji o nazwie np. "my_circle"
    - narysowanie okręgu o promieniu r
    - dodanie jego ObjectId do my_circle
    - kopiowanie okręgu oraz dla każdej kopi dodanie Objectid do tego samego my_circle
    - każdy okrąg w xdate będzie zawierał  tekst "my_circle" -> potrzebne do identyfikacji wszystkich okręgów powiązanych z nod o takiej samej nazwie
    - każdy okrąg będzie posiadał załadowany event handle do metody analizuj() (handle wrażliwe na modyfikację obiektu)
    - a w metodzie analizuj():
        * gdy zostanie wywołane to znak, że obiekt został zmodyfikowany. Zapamiętanie zmienionego obiektu. Pobranie z xdata jego nazwy, przejście do nod -> my_circle i w pętli po wszystkich obiektach odczyt ObjectId -> pobranie każdego rzeczywistego obiektu, usunięcie go i podstawienie w to miejsce zmodyfikowanego okręgu. Jeżeli oczywiście można bezproblemowo użyć zapisu o ObjectId jako string do odszukania na rysunku obiektu okręgu.
    Czy jest to dobra droga do rozwiązania problemu? Jeszcze nie pisałem tego, a chciałbym dowiedzieć się czy jest możliwe takie rozwiązanie lub może istnieje lepsze podejście.
     
  23. Upvote
    kruszynski przyznał reputację dla perlonSzablony i skrypty startowe ZWPack   
    Moje rozwiązanie jest zbudowane na potrzeby innych lispów, tak aby mogły się odwoływać do warstw poprzez zmienne. Konkretne nazwy są zapisane w zewnętrznym pliku *.ini. Zaznaczam że kody pochodzą sprzed kilku(nastu) lat i dzisiaj pewnie napisałbym to trochę inaczej, ale lepsze jest wrogiem dobrego ;-).
    (defun SetLayers (/ temp systemEnv oHandle xName eObject IniList IniFile) (setq systemEnv (cd:ENV_SaveEnvVariable)) (setvar "CMDECHO" 0) (setvar "regenmode" 0) (setq *layerKontur* "kontur" *layerOsie* "osie" *layerUkryte* "ukryte" *layerOpisy* "opisy" *layerWymiary* "wymiary" *layerStolarka* "stolarka" *layerCienkie* "cienkie" *layerHatche* "hatche" *layerPrety* "prety" *layerObok* "obok" *layerRzutnie* "rzutnie" *layer3DModel* "3D_model" IniFile (findfile "dodatki.ini") ) (setq IniList (if (not IniFile) (list) (cd:INI_Read IniFile))) (or IniFile (setq IniFile (strcat *cd-ApplicationPath* "dodatki.ini"))) (setq IniList (add_gr_ini IniList "[Layers]")) (if (setq temp (get_ini IniList "[Layers]" "kontur")) (setq *layerKontur* temp) (setq IniList (set_ini IniList "[Layers]" "kontur" *layerKontur*)) ) (if (setq temp (get_ini IniList "[Layers]" "osie")) (setq *layerOsie* temp) (setq IniList (set_ini IniList "[Layers]" "osie" *layerOsie*)) ) (if (setq temp (get_ini IniList "[Layers]" "ukryte")) (setq *layerUkryte* temp) (setq IniList (set_ini IniList "[Layers]" "ukryte" *layerUkryte*)) ) (if (setq temp (get_ini IniList "[Layers]" "opisy")) (setq *layerOpisy* temp) (setq IniList (set_ini IniList "[Layers]" "opisy" *layerOpisy*)) ) (if (setq temp (get_ini IniList "[Layers]" "wymiary")) (setq *layerWymiary* temp) (setq IniList (set_ini IniList "[Layers]" "wymiary" *layerWymiary*)) ) (if (setq temp (get_ini IniList "[Layers]" "stolarka")) (setq *layerStolarka* temp) (setq IniList (set_ini IniList "[Layers]" "stolarka" *layerStolarka*)) ) (if (setq temp (get_ini IniList "[Layers]" "cienkie")) (setq *layerCienkie* temp) (setq IniList (set_ini IniList "[Layers]" "cienkie" *layerCienkie*)) ) (if (setq temp (get_ini IniList "[Layers]" "hatche")) (setq *layerHatche* temp) (setq IniList (set_ini IniList "[Layers]" "hatche" *layerHatche*)) ) (if (setq temp (get_ini IniList "[Layers]" "prety")) (setq *layerPrety* temp) (setq IniList (set_ini IniList "[Layers]" "prety" *layerPrety*)) ) (if (setq temp (get_ini IniList "[Layers]" "obok")) (setq *layerObok* temp) (setq IniList (set_ini IniList "[Layers]" "obok" *layerObok*)) ) (if (setq temp (get_ini IniList "[Layers]" "rzutnie")) (setq *layerRzutnie* temp) (setq IniList (set_ini IniList "[Layers]" "rzutnie" *layerRzutnie*)) ) (if (setq temp (get_ini IniList "[Layers]" "3D_model")) (setq *layer3DModel* temp) (setq IniList (set_ini IniList "[Layers]" "3D_model" *layer3DModel*)) ) (cd:INI_Write IniList IniFile) (setq xName (cond ((= *cd-AppType* "ZWCAD") "zwcad.lin") (t "acad.lin") ) ) (cd:ACX_LoadLineType "dashed" xName) (cd:ACX_LoadLineType "dashdot" xName) (cd:ACX_LoadLineType "hidden2" xName) (cd:ACX_LoadLineType "center2" xName) (foreach xName (list (list *layerKontur* "continuous" 2 T) (list *layerOsie* "center2" 1 T) (list *layerUkryte* "hidden2" 1 T) (list *layerOpisy* "continuous" 7 T) (list *layerWymiary* "continuous" 1 T) (list *layerStolarka* "continuous" 3 T) (list *layerCienkie* "continuous" 1 T) (list *layerHatche* "continuous" 254 T) (list *layerPrety* "continuous" 5 T) (list *layerObok* "continuous" 9 T) (list *layerRzutnie* "continuous" 60 T) (list *layer3DModel* "continuous" 94 T) ) (setq eObject (cd:ACX_AddLayer (nth 0 xName))) (vla-put-linetype eObject (nth 1 xName)) (vla-put-color eObject (nth 2 xName)) (vla-put-plottable eObject (nth 3 xName)) ) (cd:ENV_RestEnvVariable systemEnv) ) Jak widać ja wczytuję linie z zwcad.lin ale jest to identyczny plik jak zwcadiso.lin. Nie wiem po co są dublowane. Sam plik ini jest banalny ale wydaje się, że użycie takiego sposobu jest łatwiejsze do użycia dla koleżanek i kolegów w biurze, którzy do LISPA trochę z pazurami podchodzą.
    [Layers] kontur=kontur osie=osie ukryte=ukryte opisy=opisy wymiary=wymiary stolarka=stolarka cienkie=cienkie hatche=hatche prety=prety obok=obok rzutnie=rzutnie 3D_model=3D_model Dzięki dmatusz3 za swoje rozwiązanie, bo chyba tym wzorem dorzucę sobie do ini również ustawienie linetype, color etc. Przy okazji, jak widać używam  CADPL-Pack-v1, którego gorąco polecam.
    Na koniec jeszcze pokażę reaktora na komendy co zwalnia mnie z pamiętania o zmianach warstw w trakcie rysowania. Jest to z małymi poprawkami do ZwCAD'a kod Andrzeja Gumuły na co jest odpowiedni (c) w kodzie. Zdaje się, że na forum było pokazywane inne rozwiązanie chyba nieco mniej rozwlekłe, ale to mi działa i na razie tego nie zmieniam.
    ;;;* Funkcje ustanawia reaktor do zmiany warstwy dla wyszczególnionych komend (defun SetLayInCom (layer commandslist) (if (= (getvar "PRODUCT") "ZWCAD") (progn (vlr-remove-all :VLR-Command-Reactor) (vlr-command-reactor nil '((:vlr-commandwillstart . bylayer) (:vlr-commandended . previous) (:vlr-commandcancelled . previous) (:vlr-commandfailed . previous) ) ) ) (progn (if (not globalcommandslist) ; zabezpiecza przed ponowną deklaracją reaktora (vlr-command-reactor ; przy ponownym wczytaniu lisp'a nil '((:vlr-commandwillstart . bylayer) (:vlr-commandended . previous) (:vlr-commandcancelled . previous) (:vlr-commandfailed . previous) ) ) ) ) ) (mapcar '(lambda (x) (set x nil)) '(reactorlayer reactorcolor reactorltype reactorlweight) ) (mapcar '(lambda (x y) (set x y)) '(globalcommandslist globallayer) (list commandslist layer) ) (foreach x layer (if (not (tblsearch "LAYER" x)) (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 x) '(70 . 0) '(62 . 7) '(6 . "Continuous") '(370 . -3) ) ) ) ;end if ) ;end foreach (defun bylayer (idreactor namecommand / komendy licznik) (setq licznik 0) (foreach komendy globalcommandslist (if (member (strcase (car namecommand)) (mapcar 'strcase komendy) ) (progn (if (not (and reactorlayer reactorcolor reactorltype reactorlweight ) ) (mapcar '(lambda (x y) (set x (getvar y))) '(reactorlayer reactorcolor reactorltype reactorlweight) '("CLAYER" "cecolor" "celtype" "celweight") ) ) ; end if (mapcar '(lambda (x y) (setvar x y)) '("CLAYER" "cecolor" "celtype" "celweight") (list (nth licznik globallayer) "256" "Bylayer" -1) ) ) ) ;end If (setq licznik (1+ licznik)) ) ;end foreach ) ;end ByLayer (defun previous (idreactor namecommand / komendy licznik) (setq licznik 0) (foreach komendy globalcommandslist (if (member (strcase (car namecommand)) (mapcar 'strcase komendy ) ) (progn (if (and reactorlayer reactorcolor reactorltype reactorlweight) (mapcar '(lambda (x y) (setvar x y)) (list "CLAYER" "cecolor" "celtype" "celweight") (list reactorlayer reactorcolor reactorltype reactorlweight ) ) ) (mapcar '(lambda (x) (set x nil)) '(reactorlayer reactorcolor reactorltype reactorlweight) ) ) ) (setq licznik (1+ licznik)) ) ;end cond ) ;end Previous t (prompt "SetLayInCom (C)2003 Andrzej Gumuła.") (princ) ) ;end file Na koniec wywołanie w kodzie startowym i mamy piękny reaktor na dowolne komendy jakie sobie dopiszemy.
    (setlayincom (list *layerWymiary* *layerHatche* *layerOsie* *layerCienkie* *layerOpisy*) '( ("DIMLINEAR" "DIMALIGNED" "DIMRADIUS" "DIMDIAMETER" "DIMANGULAR" "DIMORDINATE" "DIMCONTINUE" "DIMBASELINE" "QDIM" "DIMJOGGED" "DIMARC") ("BHATCH") ("DIMCENTER") ("QLEADER") ("DTEXT" "TEXT") ) )  
     
  24. Upvote
    kruszynski przyznał reputację dla dmatusz3Lokalizacja względem obiektu tylko dla części rysunku   
    Hmm, może zapis "niedotykalskich" obiektów do formatu DWF (Plik-->Eksport) i podczytanie w rysunku DWF (Wstaw-->Podkład DWF)?
    Pan pracuje na dużej ilości cyfr po przecinku, proszę się upewnić czy taka konwersja nie powoduje przekłamań.
  25. Upvote
    kruszynski otrzymał reputację od Marek-M w Importowanie i eksportowanie właściwości rysunku   
    Zmienione
    ImportWlasciwosci.zel