perlon

Użytkownik forum
  • Postów

    425
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    33

Treść opublikowana przez perlon

  1. Ostatnio coś więcej rysuje w 2018 i powiem szczerze, że niedomaganie PPM jest bardzo irytujące. Nigdy nie jestem pewien czy faktycznie zwcad przyjął klik i w jakim etapie komendy jestem. Zdarza się to trochę częściej niż sporadycznie. Jak mam ciśnienie czasowe to wracam do 2015. Tu PPM jest zdeterminowany czyli działa zgodnie z przewidywaniami.
  2. Winna jest domyślna projekcja typów. Zamień (setq stap1 (/ (* 100 stat1) n)) na (setq stap1 (/ (* 100.0 stat1) n)) i w następnych wierszach a zobaczysz różnicę
  3. Tak dokładnie. W 2015 jest tak: Command: _UCS Currently in World UCS. Specify origin of UCS or [?/Face/3point/Delete/OBject/Origin/Previous/Restore/Save/View/X/Y/Z/ZAxis/World] <World>: Z Enter angle of rotation about Z axis <90>: W tym momencie można podać z łapy kąt lub wskazać punkt początkowy wektora osi X a następnie punkt końcowy tego wektora W 2018 Command: _UCS Currently in World UCS. Specify origin of UCS or [?/Face/3point/Delete/OBject/Origin/Previous/Restore/Save/View/X/Y/Z/ZAxis/World] <World>: Z Enter angle of rotation about Z axis <90>: Ale w tym momencie punkt bazowy wektora jest już wskazany i możemy podać z łapy kąt albo drugi punkt wektora osi X.
  4. VERNUM = "2017.10.09(22328)_x64_S" (read only) W dalszym ciągu przy UCS obróconym po Z o 90 stopni nie da się wymiarować.
  5. VERNUM = "2017.10.09(22328)_x64_S" (read only) W dalszym ciągu przy obrocie _ucs -> Z jest przyjmowany domyślny punkt obrotu 0,0. powinien pytać o punkt obrotu i drugi punkt wektora osi X. Od lutego bug nie usunięty.
  6. 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") ) )
  7. Okno wyboru kartoteki w dalszym ciągu stare i sortuje niepoprawnie :-( ZwCAD2018 VERNUM = "2017.10.09(22328)_x64_S" (read only)
  8. Ja właśnie go używam. Jest bardzo dobry. problemy z prt scr były przejściowe więc załączam zrzuty. Do porównania za jednostkę długości przyjąłem szerokość standardowej ikony w pasku. W ZwCAD2015 cały pasek zajmuje ok 23 ikon, w 2018 28 ikon. Po rozwinięciu przykładowej listy grubości linii widać wyraźnie zbędne puste pole po prawej stronie zawartości listy, jak również przykładowe linie nie muszą być takie długie. Sama lista ma w 2015+ szerokość 4 ikon, a w 2018 8 ikon. Wg mnie czyste marnotrawstwo. Rozumiem, ekrany panoramiczne 3x szersze niż wyższe lobby producentów monitorów i te sprawy ;) Może jednak da się coś z tym zrobić?
  9. W najnowszej wersji 2018 w dalszym ciągu brakuje w menu podręcznym filtrów współrzędnych .X, .Y, .Z ... Czy jest w ogóle szansa na dołączenie tej funkcjonalności do menu pod SPM
  10. Witam. Mam raczej ogólne pytanie do UI. Czy jest możliwość zmiany wymiarów list rozwijalnych umieszczonych w toolbarsach? W szczególności chodzi mi o zmniejszenie szerokości list rozwijalnych w toolbarsie Properties. W wersji 2018 są one szersze niż w 2015+ - uważam że niepotrzebnie. Chciałem załączyć zrzut ekranu, ale dziwnym trafem jak mam focusa na ZwCAD2018 to nie działa klawisz PRT SCR. Na starszej wersji jest ok. Tak jakby ZwCAD2018 przechwytywał obsługę klawisza prt scr. To tak jako drugi temat , być może do przeniesienia do osobnego wątku. VERNUM = "2017.10.09(22328)_x64_S"
  11. O i kol. dmatusz3 mnie nieco uprzedził w konkluzji.
  12. W świecie komputerów liczby rzeczywiste są ZAWSZE obarczone błędem dokładności ich zapisu. Żeby to sprawdzić wystarczy w dowolnym dostępnym języku programowania sprawdzić następującą wartość logiczną : (1/3) * 3 == 1. Oczywiście my ludzie wiemy, że jest to prawda, ale nie jest to oczywiste dla systemu komputerowego. Po wykonaniu tych obliczeń niestety 1 <> 1. Dlatego obliczenia powinno się wykonywać z większą dokładnością niż chcemy uzyskać wynik odrzucając liczby na miejscach nieznaczących. W tym konkretnym przypadku powierzchnia jest liczona jakimś algorytmem, który jak mniemam może dawać rózne wyniki w zależności od kierunku polilinii, sposobu reprezentacji czy chociażby samej lokalizacji wierzchołków. Jaki jest cel lub potrzeba oznaczania powierzchni elementu z dokładnością do 8 miejsca po przecinku? Czy jest to gdzieś używane/liczone/wyświetlane lub ma jakieś inne istotne znaczenie?
  13. Niektóre nakładki do zliczania używają bloków opisów z atrybutami. Czyli opis nie jest tekstem tylko blokiem. Dodatkowo można dorzucić do elementu rysunkowego XData ułatwiające wstawianie takich bloków opisowych. Samego pręta nie robiłbym jako bloku. Zobacz przykładowo jak robi to e-cad. Można również pójść drogą PROXY_ENTITY ale zdaje się to znacznie utrudnia wymianę rysunków między użytkownikami.
  14. Jeśli mogę coś zaproponować to rozstawy kodować z separatorami. System zanany z BOCAD'a to x1:y1,x2:y2.... np. 5:100,8:250,400,6:100 5 odcinków po 100mm, następnie 8 odcinków po 250mm, następnie odcinek 400mm i 6 odcinków po 100mm. Zapis jest nieco bardziej czytelny a przypuszczam, że wprowadzenie separatorów będzie łatwiejsze do wrapowania. Co do zliczania długości to faktycznie lepiej oprzeć się na normie bo przy większych promieniach gięcia mogą wystąpić spore różnice i zbrojarnia może sobie rościć pretensje, że im stali zabrakło. A tak jest norma i można się na nią powołać.
  15. W przypadku rysowania strzemienia "otwartego" do wymiarowania od razu podpiął bym jego przesuwanie pod procedurę rysowania. Raczej zawsze coś takiego się rysuje obok, a u ciebie trzeba wykonać dodatkową komendę _move. No i jak już jest wyrzucone na zewnątrz to powinno być od razu zwymiarowane. Może ewentualnie jakiś pstryczek w oknie dialogowym, czy wymiary mają być nanoszone czy nie. Jak widzę za chwilę będzie można poskładać z tych metod jakąś większą klasę do rysowania kompletnego przekroju żelbetowego
  16. Czy mógłbyś zdradzić jak jest to realizowane w C#? Jak przypuszczam jest ustawiany reaktor (przynajmniej ja mam to zrobione u siebie w LISP'ie) ale ciekawi mnie jak wygląda implementacja reaktorów w C#.
  17. Najprostsze z możliwych rozwiązanie to : (defun c:wymiarszeregowy( / ) (command "_dimlinear" pause pause pause) (command "_dimcontinue") )
  18. Hi ! Pierwsze co, to wrzuć nowszą wersję VERNUM = "2017.07.21(19945)" https://www.zwcad.pl/pobierz/zwcad-download/zwcad/wersje-aktualne/zwcad-2017.html Możesz sprawdzić czy są różnice między wersją 32 i 64bit. Przy twoim systemie chyba warto przetestować wersję x64 zamiast używać wersji 32bit. Poza tym objawy raczej wskazują jednak na problemy z kartą. U nas ostatnio Łukasz miał problemy z gasnącymi monitorami i okazało się, że miał urwany kabelek od wentylatora na karcie graficznej i się przegrzewała. Po naprawie problemy ustąpiły jak ręką odjął.
  19. Aaaa... pasek menu. To insza inszość. To wg mnie pozostaje faktycznie tylko menuload, i załadowanie ZWCAD.mnu Wtedy zdaje się zwcad kompiluje nowe mns i chyba tworzy od nowa cuix. Potem trzeba dograć pozostałe/własne paski z plików mnu. No ale to jest leczenie a nie profilaktyka.
  20. Dodam, że problemy sie pojawiają w przypadku pracy dwumonitorowej na przemian z jednomonitorową (praca w przy biurku lub w terenie gdzie nie mam drugiego monitora)
  21. A na czym polega to "znikanie"? Czy toolbar jest na liście dostępnych pod PPM jak się kliknie w obszar pasków ale nie w pasek tylko w pole puste?. Jeżeli dany pasek formalnie jest dostępny i da się go "zaptaszkować" to może on się wyświetla ale poza obszarem widocznym na ekranie. Ja miałem podobne problemy z paskami w przypadku jednej z nakładek. Niby pasek był, niby była komenda pokaż pasek a paska na ekranie ni ma:(. Poniżej moja recepta, może się przyda. Mi pomogło _-toolbar potem trzeba podać nazwę paska (trzeba niestety go znać) potem dostaję Enter an option [Show/Hide/Left/Right/Top/Bottom/Float] <Show>: wybieram Float i podaję pozycję paska Enter a new position (screen coordinates) <0,0>: 100,100 Na koniec w ilu wierszach ma się objawić toolbar Enter the number of rows for toolbar <1>: 1 No i mam pasek mniej więcej w okolicach lewego górnego rogu ekranu.
  22. Mogą być layouty do wydruku (ja najczęściej tego używam) jak i robocze (przy modelowaniu 3D zamiast dzielić wieport robię widoki w różnych układach współrzędnych w rzutniach). Po ustawieniu rzutni na cały ekran mam model tak jakbym był na zakładce model. Na model można patrzeć z zakładki Model jak również przez rzutnie. Taka była m.in. filozofia pracy w wersjach architektonicznych Autodesku zanim poszli w Revita.
  23. Chyba trzeba go nieco przerobić bo LISP wpada w pętlę wskazania i jak nie ma co wskazać to kręci się w kółko bez możliwości przerwania (ZwCAD Architecture VERNUM = "2015.08.15(27483)") Proponuję wykonać test : otworzyć nowy pusty plik załadować i odpalić pl32. Pół biedy jak jest do wskazania cokolwiek to krzyknie że niewłaściwy obiekt. A jak nie ma nic do wskazania?
  24. A czy nie można by tego zrealizować za pomocą styli drukowania? Przypisać do layoutu odpowiedni styl do danej fazy i włączyć pokazywanie arkusza zgodnie ze stylem (Display plot styles).Oznaczenia specyficzne dla danej fazy umieszczać na osobnych warstwach i ustalać ich widoczność w filtrze warstw dla rzutni. Wydaje mi się, że jest to spokojnie do ogarnięcia przy obecnej funkcjonalności. Poszczególne fazy to byłyby kolejne layouty.
  25. W 2018 w dalszym ciągu brakuje w menu podręcznym filtrów współrzędnych .X, .Y, .Z ...