perlon

Użytkownik forum
  • Postów

    432
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    36

Treść opublikowana przez perlon

  1. 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) 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
  2. Witam. Jak w temacie. Czy jest coś takiego możliwe w środowisku ZwCAD ewentualnie jakieś narzędzia zewnętrzne?
  3. 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)
  4. 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.
  5. Może wystarczy do skryptu dorzucić jedną linijkę i będzie zamrażanie warstw (write-line (strcat "(vl-cmdf \"" "_.layer\"" " " "\"" "_freeze\"" " " "\"*podpisy*,*opisy*\"" " " "\"" "\"" ")") scriptname) A generator skryptu można przerobić żeby lista plików była na wejściu z jakiegoś pliku zewnętrznego. Wtedy można przerabiać pliki z różnych lokalizacji i wybiórczo.
  6. 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.
  7. (defun c:ltscaleall ( / ) (vl-load-com) (vlax-for OpenDwgs (vla-get-documents (vlax-get-acad-object)) (progn (print OpenDwgs) (vla-activate OpenDwgs) (setvar "ltscale" 200) (princ) ) ) (princ) ) Ale niestety mimo że lisp zamiata po otwartych rysunkach to ltscale ustawia tylko w tym z którego jest odpalony lisp. Wg mnie lispem tego sie nie da ale powinno się dać skryptem który otworzy plik coś zrobi i zamknie plik.
  8. Takie pytanko. Jest jakiś command który pokazuje i chowa ten panel? Można oczywiście przez NETDEBUG'a ale może jest coś bezpośrednio z linii komend?
  9. Zaktualizowałem repozytorium o opis działania. Repo jest tak zrobione, że po uruchomieniu Debug w VStudio powinien sie odpalić ZwCAD2020 automatycznie załadować dll i uruchomić komendę. W przypadku posiadania innej wersji należy zaktualizować property projektu. Ładowanie skompilowanej dll'ki z lispa: (vl-load-com) (vl-cmdf "netload" "GetHeightByCoordinates.dll") Ewentualnie trzeba dodać z przodu .dll ścieżkę dostępu. Wywołanie z linii komend CK_GetHbyXY lub z lispa (command "CK_GETHBYXY") Powyższe można wywołać we własnych lispach (na razie komunikat jest wysyłany tylko na konsolę) lub podpiąć pod menu lub przycisk na toolbarsie. W załączeniu skompilowana dll'ka. Na chwilę obecną komenda zwraca jedynie komunikat o uzyskanej rzędnej wysokościowej. Tak dla sprawdzenia możliwości. Dalsza obróbka pozyskanej iniformacji wedle wymagań. Jak sprecyzujesz co chcesz konkretnie uzyskać to mogę to dopisać. W kodzie użyłem krotek, dlatego wymagany jest dostęp do System.ValueTuple.dll który również załączam. GetHeightByCoordinates.dll System.ValueTuple.dll
  10. Takie coś na razie mnię wyszło. Komenda zwraca do linii poleceń komunikat z odczytaną rzędną wysokosciową na podstawie odpowiedzi z portalu. Jak ma wstawiać metkę albo blok to trzeba jeszcze pokodzić. Jest również metoda ConvertPoint3dToCoordinate na razie pusta, gdyby zaszła potrzeba wprowadzenia konwersji układów współrzędnych. using System.Net.Http; using ZwSoft.ZwCAD.ApplicationServices; using ZwSoft.ZwCAD.EditorInput; using ZwSoft.ZwCAD.Geometry; using ZwSoft.ZwCAD.Runtime; namespace GetHeightByCoordinates { public static class Commands { [CommandMethod("CK_GetHbyXY")] public static void GetHeightByCoordinateXY() { var (X, Y) = ConvertPoint3dToCoordinate(GetPoint()); var height = GetHeight(X, Y); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage($"\n{height}"); } public static string GetHeight(double coordinateX, double coordinateY) { string url = $"https://services.gugik.gov.pl/nmt/?request=GetHByXY&x={coordinateX}&y={coordinateY}"; return new HttpClient().GetAsync(url).Result.Content.ReadAsStringAsync().Result; } private static Point3d GetPoint() { PromptPointOptions pPtOpts = new PromptPointOptions("\nWskaz punkt na mapie: "); PromptPointResult pPtRes = Application.DocumentManager.MdiActiveDocument.Editor.GetPoint(pPtOpts); return pPtRes.Value; } private static (double X, double Y) ConvertPoint3dToCoordinate(Point3d point) { // convert pick point to coordinates return ( point.X, point.Y ); } } } cały projekt do ściągnięcia z Github'a https://github.com/TomekTkaczyk/GetHeightByCoordinates
  11. Wydaje się, że .NET daje out of box obsługę HTTP i aż się prosi, żeby to zrobić w C#. No to będzie ćwiczenie do zrobienia
  12. Mi nagminnie przytrafia się crash przy starcie 😞 Używam do pracy wersji 2020 która jest o niebo stabilniejsza. 2021 w zasadzie sporadycznie na zasadzie "a co tam, spróbuję" no i mam gazetą między oczy ;). Jak już wystartuje to chodzi, ale każde otwarcie nowego rysunku to starch o już aktualnie otwarte. Subiektywnie 2021 wydaje się szybszy od poprzedników ale niestety przedkładam nad to stabilność.
  13. A na czym miałaby polegać ta pomoc? Co chcesz konkretnie osiągnąć. Jaki jest związek bloku z atrybutami z polilinią?
  14. Skoro tak to w scr zawrzyj tylko wywołanie lispa który ogarnie wersję i zrobi co trzeba. Będzie jeden scr i jeden lsp zamiast dwóch scr których wersje będą pod konkretnego ZwCAD'a
  15. No to może plik .scr generować w locie z pliku lsp po sprawdzeniu na której wersji jest odpalony. Z vernuma wyciągnąć nr wersji potem wygenerować scr (albo z cudzyslowani albo nie) albo wyeliminować scr całkowiecie zastępując go lispem
  16. Może to pomoże : (defun c:okregi (/) (setq malypromien (getreal "Podaj maly promien: ")) (setq aaa '( (0 . "CIRCLE") (410 . "Model") (-4 . ">=")) ) (setq bbb (append aaa (list (cons 40 malypromien)))) (setq zbior (ssget "X" bbb)) (if zbior (princ (setq ile (sslength zbior))) (princ "\nBrak elementow")) (princ) )
  17. Mam zainstalowaną 2020 i 2021. Przyznam się bez bicia, że też ustawiłem na domyślny na powrót 2020, bo za często się 2021 wywala i krew w piach. W moim przypadku wywala się przy starcie. Zawszę drżę przy otwieraniu kolejnego pliku. Wywali się, czy się nie wywali. Jak u bacy co to deszcz przepowiadał. A poddobno komputery mają zachowania deterministyczne a nie probabilistyczne. No chyba że to są komputery kwantowe.
  18. Prze chwilę wydawało mi się że poprawili, ale jednak coś takiego mi wywalił 3x zanim odpalił na pusto 😞
  19. Wczytanie ZWCAD.CUIX zapodało jedynie paski narzędzi bez menu rozwijalnego.Ostatecznie pomógł reset profilu i ustawianie wszystkiego od nowa.
  20. Kolezanka ma jeszcze lepiej. Po instalacji on-line taki obrazek:
  21. Aktualizacja SP1 powoduje podmiane cuix na domyślny. Menu od nakładek i cały układ pasków trzeba ustawiać od nowa. To chyba nie tędy droga, albo należy wyraźnie wskazać, że przed aktualizacją należy skopiować ręcznie cuix i potem ręcznie odtworzyć. Zapisu całego profilu przed aktualizacją nie testowałem bo nie przyszło mi do głowy, żeby zarchiwizować profil.
  22. Może recovera puścić na dxf'a
  23. No niestety Architecture dostaje servicepacki z opóźnieniem. W kontekście : "For users who have bought ZWCAD Architecture, please rest assured that technical support will still be offered, and the last special package will be provided before December 31, 2020." Na czym ma polegać wsparcie techniczne i co kryje się pod pojęciem pakietu specjalnego? Raczej wątpię żebyś się doczekał poprawek tego co cię boli. ZwSOFT nie wydaje poprawek do poprzednich wersji nawet takich które miałyby usuwać ewidenetne błędy działania. Tak na prawdę, support producenta kończy się w momencie wydania kolejnej wersji. Chyba, że się mylę ale nie widziałem aktualizacji starszych wersji.