perlon

Użytkownik forum
  • Posts

    407
  • Joined

  • Last visited

  • Days Won

    29

perlon last won the day on June 10

perlon had the most liked content!

2 Followers

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

perlon's Achievements

Średniozaawansowany

Średniozaawansowany (3/6)

56

Reputation

  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