zwonko

Użytkownik forum
  • Postów

    55
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Odpowiedzi opublikowane przez zwonko

  1. Chciałem zrobić w wymiarze liniowy - field/pole które bedzie przeliczało ilość rozstawów na zasadzie nxm=L

    Niestety gdy jest to dimension override jest problem że ZWCAD po regeneracji/zaspisie zmienia jest na ####. Po przeklikaniu wyświetla dobra, wyliczoną wartość. problemu nie ma w przypadku obiektów MTEXT - problem jest przy fieldzie w dimension override.
    Przykład pliku w załaczniku.

    Identyczny problem był już przezemnie poruszany w temacie -> 

    Działam na zwcad 2023 pro - VERNUM = "23.20_2023.05.30(#5431-bf7553c10ce)_x64_S"

    Sprawdzione w AutoCAD 2020 nie ma problemu. W bricscad 22 problem wystepuje. W zwcad 2024 problem wystepuje.
     

    dimension field formul.dwg

  2. Obiekty powstały w zwcad. Po prześledzeniu żeby wywołać problem trzeba zrobić tak:

    -tworzymy rzeczywisty dimordinate (nazwijmy to dim1)

    -tworzywy drugi dimordinate/albo jakikolwiek dimension (nazwijmy to dim2)

    -w dim2 w text_override ustawiamy filed z odwołaniem do dim1 (field/object/dim1/measurement)

    -zaznaczamy dim1 i przestawiamy mu punkt bazowy z 0,0 na inny (coś jak zmiana ucs dla tego dim1)

    i wtedy po przeplikaniu dim2 gubi odwołanie.

    Problem troche złożony; fakt nie sprawdzałem w acad, ale w bricscad tak sie nie dzieje.

  3. Przypadkiem znalazłem pewnego chyba BUGa w ZWCAD 2023 professional (vernum = "23.20_2022.12.03(#4996-a5f007e30b8)_x64" (read only)).

    Problem zaznaczyłem mleader’em w załączonym pliku DWG. Sprowadza się on do tego, że w momencie gdy jako text_override w obiekcie jakim jest ordinate_dimennsion użyjemy filed'a, po "przeklikaniu" takiego ordinate_dimension gubi odwołanie do field'u i do tego zmienia wartość. Taki sam oridnate_dimension po skopiowaniu gdzieś na bok, i rozbiciu, czyli zrobieniu mtext, działa prawidłowo (nic nie gubi i nie zmienia po przeklikaniu).

    Czy można to zgłosić do ZWSOFT?

     

    EDIT: problem zauważylem w pliku od kolegi i próbowałem go teraz odtworzyć. Żeby wywołać problem trzeba jeszcze przesunąć punkt bazowy ordinate_dimennsion, którego użylismy jako odwołania. Wtedy ten problem się pojawia.

     

    dim_ordinate_problem.dwg

  4. moze taki lisp 

    (defun c:InsertAll ( / cmd dir extn pt vec )
    
       (setq extn "dwg") ;; Extension of files to Insert e.g "dwg"
    
       (if
           (and
               (setq dir (LM:DirectoryDialog (strcat "Select Directory of " (strcase extn) " Files to Insert") nil 512))
               (setq vec (getpoint "\nPick Spacing Vector: " '(0 0 0)))
           )
           (progn
               (setq cmd (getvar 'CMDECHO))
               (setvar 'CMDECHO 0)
               (setq pt '(0 0 0))
               (foreach file (vl-directory-files dir (strcat "*." extn) 1)
                   (vl-cmdf "_.-insert" (strcat dir "\\" file) "_S" 1.0 "_R" 0.0 "_non" pt)
                   (setq pt (mapcar '+ pt vec))
               )
               (setvar 'CMDECHO cmd)
           )
           (princ "\n*Cancel*")
       )
       (princ)
    )
    
    ;;-------------------=={ Directory Dialog }==-----------------;;
    ;;                                                            ;;
    ;;  Displays a dialog prompting the user to select a folder   ;;
    ;;------------------------------------------------------------;;
    ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
    ;;------------------------------------------------------------;;
    ;;  Arguments:                                                ;;
    ;;  msg  - message to display at top of dialog                ;;
    ;;  dir  - root directory (or nil)                            ;;
    ;;  flag - bit coded flag specifying dialog display settings  ;;
    ;;------------------------------------------------------------;;
    ;;  Returns:  Selected folder filepath, else nil              ;;
    ;;------------------------------------------------------------;;
    
    (defun LM:DirectoryDialog ( msg dir flag / Shell Fold Self Path )
       (vl-catch-all-apply
           (function
               (lambda ( / ac HWND )
                   (if
                       (setq Shell (vla-getInterfaceObject (setq ac (vlax-get-acad-object)) "Shell.Application")
                             HWND  (vl-catch-all-apply 'vla-get-HWND (list ac))
                             Fold  (vlax-invoke-method Shell 'BrowseForFolder (if (vl-catch-all-error-p HWND) 0 HWND) msg flag dir)
                       )
                       (setq Self (vlax-get-property Fold 'Self)
                             Path (vlax-get-property Self 'Path)
                             Path (vl-string-right-trim "\\" (vl-string-translate "/" "\\" Path))
                       )
                   )
               )
           )
       )
       (if Self  (vlax-release-object  Self))
       (if Fold  (vlax-release-object  Fold))
       (if Shell (vlax-release-object Shell))
       Path
    )
    
    (vl-load-com) (princ)

     

  5. W dniu 14.03.2022 o 09:36, kruszynski napisał:

    Czy dobrze rozumiem, że chodzi o to, żeby po otwarciu rysunku, filtr warstw wyświetlał w managerze warstw tylko te, które nie są z XRefa?
    Nie ruszamy tego co ma być wyświetlone w modelu, tylko w oknie managera?

    Tak. W uproszczeniu chodzi żeby rozwijalna lista warstw była krótsza, tj. zgodna z filtrem.

    @kojacek przeglądne dokłądniej w wolnej chwili, ale wychodzi że coś jest niedopracowane w ZWCAD. Same filtry są, ale wychodzi że nie można ich wywołać z poleceń testowych.

     

  6. Czesto pracuje z rysunkami na xrefach i przydaje sie LayerFIlters, predefiniowany FIlter All Non Xref Layers.

    Pytanie czy da się właczyć żeby każdy rysunek otwierał się z tak włączonym filtrem. Szukałem do tego lispa (np. https://www.cadtutor.net/forum/topic/59411-list-layer-filters-autolisp/) ale działają one w oparciu o polecenie "-Layer, Filter" a niestety opcji filter przy komendzie "-Layer" nie ma w ZWCAD 2021.

  7. Znalazłem jeszcze reaktor od LeeMac (http://www.lee-mac.com/layerdirector.html), oczywiście to też nie do końca to o co mi chodzi i nie potrafię, go przerobić. Ale z ciekawych rzeczy ma on coś takiego:

    ;;----------------------------------------------------------------------;;
    ;;  Layer Change on AutoLISP Command Calls  [ t / nil ]                 ;;
    ;;  ==================================================================  ;;
    ;;                                                                      ;;
    ;;  If set to T, a layer change may be triggered by command calls used  ;;
    ;;  in AutoLISP programs. If set to nil, a layer change will only be    ;;
    ;;  triggered by the AutoLISP command itself, and not by commands       ;;
    ;;  invoked during evaluation of the AutoLISP program.                  ;;
    ;;----------------------------------------------------------------------;;
    
    layerdirector:lspcommand nil

    Czyli pozwala na to, że reaktor nie działa wewnątrz lispów. Myślę, że to mogłoby pomóc. Przy czym nie wiem czy w tym wypadku reaktor zadziała, bo jak wykryje zmianę zmiennej "DIMSTYLE", jeśli nastąpi ona w lispie.

     

    Mimo wszystko, jeśli to możliwe, to prosiłbym @kojacek o modyfikację jego reaktora, żeby ze stylu wymiarowania "A" zmieniał na "B", z "C" na D". Chciałbym zobaczyć czy coś z tego wyjdzie...

  8. chodziło mi właśnie o reaktor, wspomniany przez @kojacek. Widziałem go na stronie  https://kojacek.wordpress.com, przy czym niestety kod jest zbyt skomplikowany dla mnie żeby go przerobić. A zasada działania jest też zgołą inna. Tutaj na podstawie wskazanego jednego stylu zmieniamy resztę styli (wymiarowania, tekstu, multileaderów). Ja potrzebuje, czegoś co w przypadku zmiany dimstyle zmienia dimstyle na inny.  Dodam (nie wiem czy to ważne), że zmiane dimstyle, nie wywołuje użytkownik tylko inny lisp.

    @dmatusz3 choć pomysł z przepisaniem wszystkich Styli BZ... na mój, dla istniejących obiektów tez nie jest pozbawiony sensu. Przy czym to powinno być łatwe do ogarnięcia, nawet dla kogoś tak nie biegłego w programowaniu jak ja...

  9. Czy da się zrobić coś np. lisp? Który będzie reagował na zmianę stylu wymiarowania? Tj. mam nakładkę na ZWCAD, BIK żelbet, która często zmienia mi styl wymiarowania na:

    BZ_KR_20_mm,

    którego nie stosuje. Czy jest możliwe ustawienie, że w przypadku gdy styl zostanie zmieniony na BZ_KR_20_mm, albo BZ_KR_50_mm zmienia styl na poprzednio wybrany? Lub konkretny np. mój B_1_20?

  10. KIedyś, myślałem o czymś podobnym. Dla mnie lepiej by było gdyby wskazywać rozstaw, a potem punkt poczatkowy i końcowy. Najlepiej żeby z obiektów była tworzona grupa. Nie lubie szyków, ani nowego (ARRAY w ZWCAD 2021) ani starego (ARRAY CLASSIC), zresztą nie zawsze są dla mnie wystarczające bo czasem musze obiekt przestawić, tj. pojedynczy element nie ma takiego samego rozstawu (rysowanie zbrojenia). Dzisiaj chyba to co chciał osiągnąć autor można robić "nowym" szykiem (polecenie ZWCAD 2021)