perlon

Użytkownik forum
  • Postów

    425
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    33

Odpowiedzi opublikowane przez perlon

  1. Witam

    A może łatwiej by było zamienić ten zestaw linii i łuków w polilinie właśnie i przeprocesować polilinię która już będzie uporządkowana ze swej natury? Kwestia tylko wskazania który koniec jest początkiem. Innym rozwiązaniem mogło by być dodanie XDATA do obiektów linia/łuk ale trzeba do tego też stworzyć system zarządzania kolejnością. Kolejność na podstawie rzędnej Z jak dla mnie wzbudza pewną kontrowersję :)

  2. Witam.

    Mam do rozwiązania pewien problem matematyczny. Chodzi o znalezienie takiego argumentu funkcji, dla którego funkcja osiąga maximum. Problem mam zdefiniowany następująco:

     image.thumb.png.13dfbb233eef2583acc77e81388f4bf2.png

    Dla konstruktorów w szczególności jest to fragment obliczeń płyty fundamentowej na przebicie. ObwódKontrolny to macierz poszczególnych przypadków położenia słupa. 

    Ogólnie chodzi o wyznaczenie maksimum funkcji f(a) poprzez rozwiązanie solverem równania f'(a)=0. Dla pierwszego wiersza nawet to działa. Do dalszych obliczeń a1 potrzebuję jako liczbę mianowaną (z jednostką) ale niestety solver zwraca komunikat że brak rozwiązania w zbiorze liczb rzeczywistych., przy wyłączonym ignorowaniu jednostek. Gdy włączę ignorowanie dostaję wynik ale niestety niemianowany ( w tym przypadku wartość wyniku jest prawidłowa w metrach) Jak sprawić żeby obliczona wartość a1 miała jednostkę.

    Drugie pytanie dotyczy pozostałych dwóch przypadków. Solver wykłada się na funkcji zdefiniowanej jako min z dwóch funkcji. Chodzi o ograniczenie od góry obwodu kontrolnego do takiego jak dla słupa środkowego. Tu bez względu na opcję ignorowania jednostek dostaję komunikat o braku rozwiązania.

    Proszę o pomoc w rozwiązaniu tych kwestii.

    W załączeniu również przykład w SMath

    Test.sm

  3. Też już tak robiłem, licząc, że jeżeli wczytam certyfikat do głównego magazynu to ZwCAD tam zajrzy i zweryfikuje podpis. Niestety chyba ZwCAD tego nie potrafi :(. Kłopot jest taki że pytajnik może wzbudzić kontrowersje w organie w kwestii ważności mapy jako podkładu ponieważ przepis mówi że PZT należy wykonać na aktualniej mapie do celów projektowych. Podpis gwarantuje że mapa nie została w między czasie zmieniona.

  4. Mi też czasami znika krzyż nitkowy i to przy rysowaniu na płasko. Niestety nie jest to zdeterminowane i nie potrafię tego sprowokować celowo. Tak się dzieje od czasu do czasu. Pomaga zamknięcie i ponowne uruchomienie zwcad'a. A co ciekawe krzyża w obszarze roboczym nie widać, ale jak przesunę kursor w obszar menu lub ikon to strzałeczka się pojawia.

  5. Witam.

    vernum = "22.20_2021.12.16(2dc3d9e9b39)_x64" (read only)

    Mam plik z podłączonym podkładem XRef jako overlay. W owym xref'ie jest osadzony JPG. XRef'a mam przyciętego XClip'em. Wygląda to mniej więcej tak.

    image.png.6876d39e53a9ad18438e3b99b6bc7861.png

    jak zmienię obrys XClipa tak aby nie obejmował obrazka JPG obrazek pojawia się w całości poza granicami XClipa.

    image.png.3543782c34e029c1f524313a89b18776.png

    Nie znalazłem żadnego sposobu aby sprawić żeby plik JPG nie był widoczny. Opisane zachowanie występuje w wymienionej wyżej wersji 2022. Ten sam plik otworzony w wersji 2020 nie pokazuje bitmapy poza xclipem ale niestety ta wersja nie daje możliwości modyfikacji xclipa za pomocą uchwytów. Wydaje mi się, że jest to błąd do zgłoszenia do ZwSoft'u.

    Edit:

    Podmieniłem na zrzuty ekranowe i dołączyłem pliki testowe

     

    FOTO.jpg

    base.dwg xref.dwg

  6. Opisywany problem w wersji 2021, i w wersji 2022 beta

     

    Niestety w wydaniu oficjalnym też mi się przytrafia poniższe 😞

    vernum = "22.00_2021.05.27(2b8dc7e7847)_x64" (read only)

    image.png.609cf35d96f5b9cc08514ddf3cabc452.png

    Podpis problemu:
      Nazwa zdarzenia problemu:    APPCRASH
      Nazwa aplikacji:    ZWCAD.exe
      Wersja aplikacji:    22.0.0.1
      Sygnatura czasowa aplikacji:    60ae5a5e
      Nazwa modułu z błędem:    ntdll.dll
      Wersja modułu z błędem:    6.3.9600.20090
      Sygnatura czasowa modułu z błędem:    60e9188b
      Kod wyjątku:    c0000005
      Przesunięcie wyjątku:    00000000000543fb
      Wersja systemu operacyjnego:    6.3.9600.2.0.0.256.48
      Identyfikator ustawień regionalnych:    1045
      Dodatkowe informacje 1:    a824
      Dodatkowe informacje 2:    a8246ba26b9c8432b80fab90807e66d1
      Dodatkowe informacje 3:    14cd
      Dodatkowe informacje 4:    14cdee159ddf840d188c17e498ab4065

    Przeczytaj w trybie online nasze zasady zachowania poufności informacji:
      http://go.microsoft.com/fwlink/?linkid=280262

    Jeśli zasady zachowania poufności informacji w trybie online nie są dostępne, przeczytaj nasze zasady zachowania poufności informacji w trybie offline:
      C:\Windows\system32\pl-PL\erofflps.txt

  7. wrilte-line potrzebuje jako argument stringa. w strcat mamy listę stringów do sklejenia każdy z elementów musi być zamknięty w cudzysłowy chyba że ma być sklejona wartość zmiennej np. filename ele nazwa pliku w skrypcie ,usi byc zamknięta w cudzysłowy więc w strcat musimy wrzucić również cudzusłowy. żeby uzyskać cudzysłow w skrypcie trzeba zrobić coś takiego : (strcat "_open " "cudzysłow" filename "cudzysłów" "spacja" "cudzysłów" "_ltscale" "cudzysłów" "spacja" "cudzysłów" "1" "cudzysłów")

    zamień teraz spacja na znak spacji i cudzysłów na parę znaków \" i otrzymasz taki ciekawy ciąg.

    (strcat "_open " "\"" filename "\"" " " "\"" "_ltscale" "\"" " " "\"" "1" "\"")

    Dwa cudzysłowy obok siebie to "\"" "\"" powinno zadziałać "\"\"". Jakoś się nad tym zmóżdżałem.  Można zapewne przyklejać spacje do poprzedzających ciągów  ale u mnie to są oddzielne ciągi więc tych cudzysłowów się trochę narobiło.

     

    W sumie to chyba faktycznie przegiąłem. Obie linie dają ten sam efekt

        (write-line "(vl-cmdf \"setvar\" \"ltscale\" \"1\" \"\")" scriptname)
        (write-line (strcat "(vl-cmdf \"" "setvar\"" " " "\"" "ltscale\"" " " "\"1\"" " " "\""  "\"" ")") scriptname)
     
  8. Powinno zabanglać

    (defun C:LTSALLDWG ( / filename doc scriptname)
    	(setq scriptname (open "e:\\temp\\batch.scr" "w"))
    	(vlax-for doc (vla-get-documents (vlax-get-acad-object))
    		(progn
    			(setq filename (vla-get-FullName doc))
    			(write-line (strcat "_open \"" filename "\"") scriptname)
    			(write-line (strcat "(vl-cmdf \"" "setvar\"" " " "\"" "ltscale\"" " " "\"1\"" " " "\""  "\"" ")") scriptname)
    			(write-line (strcat "(vl-cmdf \"" "_.layer\"" " " "\"" "_freeze\"" " " "\"*podpisy*,*opisy*\"" " " "\""  "\"" ")") scriptname)
    			(write-line "_qsave" scriptname)
    			(write-line "_close" scriptname)
    		)
    	)
    	(close scriptname)
        (princ)
    )

    Ale musisz pamiętać, żeby przed odpaleniem skryptu zamknąć wszystkie rysunki, Możesz usunąć ostatnią linijkę z _close to wtedy rysunki ze skryptu pozostaną otwarte.

  9. Podpierając się lispem LeeMac'a można wybrać kartotekę z plikami dwg i w czambuł polecieć wszystkie wygenerowanym skryptem.

    (defun C:LTSALLDWG ( / count dir filename files scriptname)
        (setq dir (LM:DirectoryDialog "Select directory" "" 1))
        (if dir
            (setq files (vl-directory-files dir "*.dwg" 1))
        )
        (if files
            (progn
                (setq scriptname (open "e:\\temp\\batch.scr" "w")
                      count 0
                )
                (while (setq filename (nth count files))
                    
                    (setq filename (strcat dir "\\" filename))
                    (write-line (strcat "_open \"" filename "\"") scriptname)
                    (write-line (strcat "(vl-cmdf \"" "setvar\"" " " "\"" "ltscale\"" " " "\"1\"" " " "\""  "\"" ")") scriptname)
                    (write-line "_qsave" scriptname)
                    (write-line "_close" scriptname)
                    (setq count (1+ count))
                )
                (close scriptname)
            )
        )
        (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
    )
    
    
    ;Symbol 	 Type    	Description
    ;msg 	 String 	Message to display to the top of the dialog (may be an empty string)
    ;dir 	 String 	(Optional) Root Directory, user cannot navigate above this level
    ;flag 	 Integer 	Bit flags controlling the behaviour of the dialog interface (detailed below)
    
    ;Returns: Selected Directory, else nil if user presses Cancel
    
    
    
    ;Flag Bit Values
    ;Bit 	Result
    ;0 	Standard behaviour (Default)
    ;1 	Only file system folders can be selected. If this bit is set, the OK button is disabled if the user selects a folder that doesn't belong to the file system.
    ;2 	The user is prohibited from browsing below the domain within a network
    ;4 	Room for status text is provided under the dialog box
    ;8 	Returns file system ancestors only. An ancestor is a subfolder that is beneath the root folder. If the user selects an ancestor of the root folder that is not part of the file system, the OK button is grayed.
    ;16 	Shows an edit box in the dialog box for the user to type the name of an item.
    ;32 	Validate the name typed in the edit box.
    ;64 	Enable drag-and-drop capability within the dialog box, reordering, shortcut menus, new folders, delete, and other shortcut menu commands.
    ;128 	The browse dialog box can display URLs.
    ;256 	When combined with flag 64, adds a usage hint to the dialog box, in place of the edit box.
    ;512 	Suppresses display of the 'New Folder' button
    ;1024 	When the selected item is a shortcut, return the PIDL of the shortcut itself rather than its target.
    ;4096 	Enables the user to browse the network branch for computer names. If the user selects anything other than a computer, the OK button is grayed.
    ;8192 	Enables the user to browse the network branch for printer names. If the user selects anything other than a printer, the OK button is grayed.
    ;16384 	Allows browsing for everything: the browse dialog box displays files as well as folders.
    ;32768 	If combined with flag 64, the browse dialog box can display shareable resources on remote systems.
    ;65536 	Windows7 & later: Allow folder junctions such as a library or a compressed file with a .zip file name extension to be browsed.