perlon

Użytkownik forum
  • Postów

    425
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    33

Treść opublikowana przez perlon

  1. (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.
  2. 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?
  3. 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
  4. 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
  5. 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
  6. 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ść.
  7. A na czym miałaby polegać ta pomoc? Co chcesz konkretnie osiągnąć. Jaki jest związek bloku z atrybutami z polilinią?
  8. 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
  9. 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
  10. 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) )
  11. 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.
  12. Prze chwilę wydawało mi się że poprawili, ale jednak coś takiego mi wywalił 3x zanim odpalił na pusto 😞
  13. Wczytanie ZWCAD.CUIX zapodało jedynie paski narzędzi bez menu rozwijalnego.Ostatecznie pomógł reset profilu i ustawianie wszystkiego od nowa.
  14. Kolezanka ma jeszcze lepiej. Po instalacji on-line taki obrazek:
  15. 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.
  16. Może recovera puścić na dxf'a
  17. 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.
  18. Wywalanie przy uruchomieniu "na pusto" też jest na porządku dziennym. Drugie i trzecie uruchomomienie to samo. Za czwartym razem sie udało. VERNUM = "2020.09.22(59468)_x64" (read only)
  19. Koleżanka zgłaszała crasch report'y przy pracy w rzutniach. Raczej brak powtarzalności. Ja mam problem z tą wersją taki, że przy otwieraniu rysunków (raczej rysunki nie miały styczności z innymi systemami) wywala błąd krytyczny. Powtórne uruchomienie działa normalnie. Najczęsciej wywala przy otwieraniu pierwszego rysunku w sesji ale potrafi się wywalić przy otwieraniu któregoś kolejnego rysunku. Również brak powtarzalności. Jak mnie nerwy poniosą to wracam do 2020 bo ta wersja nigdy mi się nie wysypywała przy otwieraniu rysunków. 2021 wywala się nagminie. Szacuję że ok. 20 do 40% otwarć kończy się crasch reportem. Zrzucam to troche na zaśmiecony system operacyjny (nalezy mu się już reinstalacja), ale 2020 jakoś sobie z tym śmietnikiem radzi.
  20. LISP to fajna zabawa, choć nie na darmo ukuło się rozwinięcie tego skrótu : LISP = Lost in Stupid Parenthesis
  21. Tak, ale te "bloki" to jest to co sobie wymyślił autor nakładki a nie to co potrzebuje w konkretnym przypadku użytkownik. Dylemat wędki i ryby i raczej rozmawiamy o pewnej funkcjonalności uniwersalnej a nie konkretnym rysowaniu kresek na krzyż 😉 Trzeba się jednak pogodzić, ze bloków dynamicznych przez następnyhc kilka lat w ZwCAD'zie nie uświadczymy.
  22. Martin. Sam doświadczasz niedostatków wersji Architecture. Wygląda, że zadziałała maksyma Francuskiej Legii Cudzoziemskiej. W każdym produkcie infomatycznym user oczekuje działania zgodnie ze specyfikacją i oczekuje, że problem, który ma do rozwiązania jest w tej aplikacji do rozwiązania. Konkurencja, szczególnie ta wiodąca ma kompletne i ugruntowane na rynku rozwiązania. Projektanci nie mają czasu na wymyślanie hacków na ułomności tylko chcą mieć skuteczne narzędzia CAD do osiągnięcia celu czyli stworzenia dokumentacji. Jeżeli dane narzędzie nie spełnia oczekiwań to je się zmienia. Sam miałem przykre doświadczenie z programem do statyki. Ostatecznie potraktowałem jego zakup jako stratę. Dla ZwSOFT'u to rozwiązanie zapewne było deficytowe i stratedzy uznali, że bieżące i przyszłe przychody nie zrównoważą nakładów na rozwój i dogonienie konkurencji. Nierentowne projekty się zamyka. Ot taka refleksja mię naszła.
  23. A ja od razu z rybą 😉 Trochę pozlepiałem z tego co miałem u siebie i wyszło mi coś takiego. Lisp wczytuje plik csv z trzema atrybutami. Przy testach były kłopoty z kodowaniem polskich liter w pliku csv ale tym się nie zajmowałem. (princ "\nImport współrzędnych wstawienia bloku z pliku tekstowego v.0.1(beta)") (princ "\nCopyright (c)2020 by Perlon") (princ "\nŁadowanie funkcji c:txt2blocks.........") (defun c:txt2blocks ( / p_dat o_dat linia *error* counter) (defun *error* (msg) (if (not (member msg '("Function cancelled" "quit / exit abort"))) (princ (strcat "\nError: " msg)) ) (princ) ) (setq p_dat (getfiled "Wpisz nazwę pliku" "" "csv" 0)) (if p_dat (progn (setq o_dat (open p_dat "r")) (setq counter 0) (setvar 'osmode 0) (while (setq linia (read-line o_dat)) (progn (setq counter (1+ counter)) (if (> (strlen linia) 0) (progn (setq lista (cd:CON_String2List linia '(","))) (command "_.INSERT" "HP_B2" "_s" 1 "_r" 0 (list (car lista) (cadr lista)) (caddr lista) (cadddr lista) (cadr (cdddr lista))) ) ) ) ) ) ) (princ (strcat "\nPrzetworzono " (itoa counter) " punktow")) (princ) ) (princ " Załadowane.") (princ) ; =========================================================================================== ; ; Konwersja takstu z separatorami na liste / ; ; ------------------------------------------------------------------------------------------- ; ; (cd:CON_String2List "1;2;3;" '(";")) ; ; =========================================================================================== ; ;;;* ------------------------------------------------------------------------------------- *;;; ;;;* PODZIAŁ ŁAŃCUCHA TEKSTOWEGO NA LISTĘ *;;; ;;;* *;;; ;;;* Funkcja rozbija łańcuch tekstowy na listę *;;; ;;;* Autor: Bill Kramer - opublikowana w CADENCE 4/97 *;;; ;;;* *;;; ;;;* Argumenty funkcji: *;;; ;;;* =================== *;;; ;;;* S - łańcuch tekstowy do podziału *;;; ;;;* D - lista separatorów (lista łańcuchów tekstowych) *;;; ;;;* *;;; ;;;* Uwaga: Jeżeli w łańcuchu do rozbicia znajdują się liczby typu INT, funkcja *;;; ;;;* zwraca je jako REAL *;;; ;;;* ------------------------------------------------------------------------------------- *;;; (defun cd:CON_String2List (s d / buf res cnt ch digs isnum temp) (setq buf "" cnt 1 isnum T digs '("." "+" "-" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9") ) (repeat (strlen s) (setq ch (substr s cnt 1) cnt (1+ cnt) ) (cond ((and (member ch d) (> (strlen buf) 0)) (cond ((= (strcase buf T) "nil") (setq res (cons nil res)) ) ((= isnum T) (setq res (cons (if (= (atoi buf) (atof buf)) (atoi buf) (atof buf) ) res ) ) ) (T (setq res (cons buf res))) ) (setq buf "" isnum T ) ) ((not (member ch d)) (setq buf (strcat buf ch)) (if (null (member ch digs)) (setq isnum nil) ) ) ) ) (if (> (strlen buf) 0) (setq res (cons (if isnum (atof buf) buf ) res ) ) ) (reverse res) )