kruszynski

Moderatorzy
  • Zawartość

    1062
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    33

Zawartość dodana przez kruszynski

  1. To może zacznijmy od rzeczy najprostrzych. Wiesz jak narysować kreskę używając AutoLISP? Jeśli nie, to zerknij na te kilka przykładów https://www.zwcad.pl/1-narzedzia-do-lisp.html Jeśli tak, to wrzuć co zrobiłeś i zapytaj o to czego nie wiesz.
  2. Może Eventhandler SystemVariableChanged ?
  3. kruszynski

    Palety narzędzi - tworzenie, edycja

    Istotną kwestią jest o jaką paletę chodzi? Jeśli o tą dostępną po uruchomieniu polecenia _toolpalettes, to nie ma do niej API. Jedyne co możemy zrobić, to wyeksportować i zaimportować z poziomu GUI. Można jednak utworzyć własne palety, używając WPF. tak jak @Parikon wrzucił: W ZWcad takimi paletami są np SmartSelect, QuickCalc, czy designCenter
  4. kruszynski

    odtworzenie obwiedni kreskowania_problem

    Jak na razie przygotowałem taką wersję minimalną. Działa tak, że klikamy w kolejne obszary w wyniku powstaje sumaryczny obrys. zlewnia.lsp
  5. kruszynski

    export do wmf_pytanie za 5 punktów

    Musimy robić coś inaczej, bo u mnie lisp działa. To co wkleiła Pani w treści to tylko początek lispa. cały dodałem w załączniku. Po jego uruchomieniu powstał plik mfw. Załączam też plik wynikowy. Co tutaj jest inaczej niż powinno być? WMF_World.lsp Droga_full.mfw
  6. kruszynski

    odtworzenie obwiedni kreskowania_problem

    - całkiem możliwe, ale jeszcze nie potwierdzam na 100%. - kreskowanie załatwia nam przypadki gdzie są małe przerwy jak pisała Pani we wpisie powyżej, więc nie jestem pewien czy pominięcie tego kroku byłoby wskazane Czyli różnica pomiędzy naszą funkcją a funkcją byłaby taka, że boundary tworzy oddzielne regiony dla poszczególnych obszarów, nasza funkcja miałaby tworzyć ich sumę. Tylko to czy coś jeszcze? Podejrzewam, że czas kreskowania nie będzie znaczący. Dodatkowo kreskowanie pozwoli łatwo rozróżnić obszary, które są "opracowane" od tych, które jeszcze wymagają pracy. może najlepiej byłoby zrobić opcję dodawania kreskowania . czyli opis miałby taki format: przedrostek[powierzchnia][jednostka]przyrostek
  7. kruszynski

    odtworzenie obwiedni kreskowania_problem

    Gdybyśmy przyjęli taki scenariusz: 1. Zaznaczamy kreskowania według własnego uznania, np wszystkie na określonej warstwie 2. Uruchamiamy funkcję - lub odwrotnie 3. Dla każdego z kreskowań program wykonuje następujące operacje: 3a. Program odtwarza kreskowania - jako region 3b. Jeśli powstanie wiele regionów to program je sumuje w jeden 3c. Program rozbija region (explode ) czyli powstaje kilka linii, łuków, może jakieś kółko 3d. Wszystko co powstało w kroku 3c program łączy w jedną polilinię ( pedit ) - jeśli w kreskowaniu były jakieś otwory - to: "sorry no bonus" To będzie OK?
  8. kruszynski

    odtworzenie obwiedni kreskowania_problem

    Wygląda mi na to, że zaczynamy się kręcić wokół czegoś, co łatwo źle zrozumieć. Różnych dziwacznych przypadków połączeń ,rozdzieleń, części wspólnych i otworów możemy znaleźć całe mnóstwo. Zastanawiamy się nad tym co i jak zrobić, ale nie wiem do czego to jest potrzebne. Jeśli mamy dwa przylegające kreskowania, a potrzebujemy ich wspólną obwiednię - którą da się edytować - da się to zrobić funkcjami ZWCADa, więc da się zrobić lispa, który to będzie robił dla wielu kreskowań Jeśli mamy kreskowanie które ma wycięte obszary wewnętrzne analogicznie do litery A. to jedynym co możemy zrobić, to region. Tak wiem, nie da się edytować regionu za uchwyty, ale możemy z tego odczytać rzeczywistą powierzchnię i rzeczywisty obwód. Gdybyśmy taki region zamienili na dwie polilinie, to chcąc odczytać rzeczywistą powierzchnię, musielibyśmy odjąć powierzchnię wewnętrzną od zewnętrznej. Gdybyśmy stworzyli jedną polilinię, wewnętrzna musiałaby mieć jakieś połączenie z zewnętrzną, wówczas mielibyśmy zakłamaną długość. Więc wróćmy do początku: co jest celem? np: - utworzyć granice obszaru które jest określone przylegającymi kreskowaniami? - jako polilinię dającą się edytować na uchwytach? - utworzyć granice obszaru które może mieć "otwory" , z zachowaniem poprawnego parametru powierzchni i długości? - skrócić czas potrzebny na wielokrotnie powtarzane tych samych czynności dla setki kreskowań?
  9. Po niewielkim dostosowaniu, teraz powinno być OK PowerDraw_2018.zelx
  10. NIezupełnie wyszło tak jak chciałem, ale może wystarczy. Blokuje inny element okna. ale nie przy każdej zmianie, ale przy zatwierdzaniu wartości, np przechodząc do innej komórki,albo [enter] na koniec. plik DCL wygląda tak: EditCheck : dialog { label = ""; :edit_box{ key="path"; label="Ścieżka"; edit_width=6; fixed_width=true; action = "(DCL:Edit:IsValid)"; } : button { action = "(done_dialog 0)"; key = "accept"; label = "Zapisz"; } : button { action = "(done_dialog 0)"; key = "cancel"; label = "Anuluj"; is_cancel = true; } } plik LSP tak: (defun DCL:Edit:IsValid ( / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nDCL:Edit:IsValid :*error*: " ) (princ msg ) (princ "\n") ) ) ) (print (strcat "wartość wpisana do okna: " $key " to: " $value ) ) (if (= "" $value) (mode_tile "accept" 1) (mode_tile "accept" 0) ) ) (defun c:testEdit ( / dcl_id RunDialogResult coords LastPath *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nc:testEdit:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq DCL_Path "C:\\<< TWOJA ŚCIEŻKA >>\\edit_check.DCL") (setq dcl_id (load_dialog DCL_Path)) (setq RunDialogResult t ) (setq LastPath "" ) (while RunDialogResult (if(not(new_dialog "EditCheck" dcl_id))(exit)) (action_tile "cancel" "(done_dialog -1)") (setq RunDialogResult(start_dialog)) (cond ((= RunDialogResult 0) (progn (setq RunDialogResult nil ))) ; ESC pressed (t (print RunDialogResult)) ) ) (unload_dialog dcl_id) (princ) )
  11. Na 99.9% da się to zrobić. Mam taki fragment kodu sprawdzający czy wpisana została liczba. (defun DCL:CheckNum ( / ) (if (not(> (atof $value) 0)) (set_tile $key "")(set_tile $key (rtos(atof $value)) ) ) ) To jeszcze trzeba osadzić w kontekście DCLa i na to nie mam przykładku tak na szybko.
  12. kruszynski

    EncryptLISP

    W ZWCAD 2018, 2019 można szyfrować lispy poleceniem lispowym tak: (compile-zelx "C:\\Ścieżka\\Plik.lsp" "C:\\Ścieżka\\Plik.zelx")
  13. kruszynski

    [C#] Detekcja środowiska

    hm. jeszcze nie wiem do czego, ale mam takie podskórne wrażenie, że będę tego używał.
  14. kruszynski

    [C#] Detekcja środowiska

    Znalazłem: namespace test { public class Class1 : ZwSoft.ZwCAD.Runtime.IExtensionApplication { public void Initialize() { MessageBox.Show("Initialize!"); } public void Terminate() { Console.WriteLine("Cleaning up..."); } [CommandMethod("test2492")] public static void test2492() { MessageBox.Show("Hello World!"); } } } Ale jestem z siebie dumny
  15. kruszynski

    [C#] Detekcja środowiska

    Mogę się mylić, ale tak na szybko szukałbym czegoś takiego: Assembly.GetExecutingAssembly()
  16. kruszynski

    [C#] Detekcja środowiska

    Podejrzewam że tak. W ZRX jest to możliwe. Poszukam czegoś, albo dopytam w ZWSOFT. Również postaram się czegoś dowiedzieć Tu mam najgorsze przeczucia. Raczej stworzyłbym 2 projekty , czy nawet więcej i ładowałbym te same pliki źródłowe. Problem może wynikać z dodawania różnych "References" do tego samego projektu. A może to tylko bezpodstawne moje obawy.
  17. kruszynski

    Przesunięty tekst

    Na podstawie przykładu udało mi się powtórzyć problematyczne zachowanie programu. Przekażę zgłoszenie do ZWSOFT.
  18. kruszynski

    Przesunięty tekst

    Sprawdziłem zgłoszony przez Pana przypadek, ale u mnie działa OK. Korzystam z wersji vernum "2018.07.26(35476)_x64" być może to jest przyczyna. Być może coś robimy inaczej. W związku z tym chciałbym poprosić o szerszy przykład kodu, który wykorzystuje Pan do tworzenia tekstu. Być może na tej podstawie uda się ustalić coś więcej.
  19. W wersji z maja rzeczywiście jest ten problem. W kolejnych wersjach jest już rozwiązany.
  20. kruszynski

    Własny pasek narzędzi

    Mam potwierdzenie z ZWSOFT. Na chwilę obecną tworzenie wstążki z poziomu C# nie jest jeszcze obsługiwane.
  21. kruszynski

    Własny pasek narzędzi

    A koniecznie musi to być w C# ? Myślę że łatwiej zrobić mnu, wczytać -> powstanie cuix który można dostosować (polecenie CUI) Zapytam w ZWSOFT o możliwości w C#
  22. kruszynski

    ZWTraffic

    Chciałbym odświeżyć taki temat: Może Pan podać przykład? jak jest a jak powinno być ?
  23. Tak, oczywiście. Takie zgłoszenie już wysłałem.
  24. Znalazłem sposób na odczytanie LData z rysunku w 2018. Niestety nie jest to jeszcze gotowe rozwiązanie, ale wrzucam to co znalazłem bo trochę mi pilno do innych zajęć. Jak znajdę chwilę to przygotuję kompleksowe rozwiązanie. (setq DictName "testDict") (setq Key "testKey") (setq dicts ( vla-get-Dictionaries (vla-get-activedocument (vlax-get-acad-object) ) ) ) (setq dict(vla-Item dicts DictName ) ) (setq val ( vla-Item dict Key) ) (entget(vlax-vla-object->ename val)) Zwraca mi taką przykładową postać: ( (-1 . <ENTITY NAME: 26c17198>) (0 . "VLO-VL") (5 . "1FE") (102 . "{ACAD_REACTORS") (330 . <ENTITY NAME: 26c17180>) (102 . "}") (330 . <ENTITY NAME: 26c17180>) (100 . "vlo_VL") (90 . -64512) (91 . 620) (92 . 5) (40 . 3.97) (40 . 94.5289) (40 . 52.43) (40 . 93.7424) (40 . 372.158) (300 . "( (\"RoomID\" \"8011D\") (\"RoomName\" \"m.studio\") (\"RoomBuilding\" \"B.\") (\"RoomLevel\" \"0\") (\"RoomLocal\" \".2\") (\"RoomNr\" \".1\") (\"RoomNrProject\" \"B.0.2.1\") (\"RoomFunction\" \"U\") (\"RoomStrefy\" ( ( (\"StrefaHeight\" (&VLO-R . 0)) (\"StrefaName\" \"Strefa_1\") (\"StrefaPosadzka\" \"\") (\"StrefaType\" \"Z\") (\"StrefaStatus\" \"Pp\") (\"StrefaKorekta\" \"100%\") (\"StrefaTynki\" \"1\") (\"StrefaID\" \"48B7F5\") (\"StrefaAreaPline\" (&VLO-R . 1)) (\"StrefaPerimeter\" (&VLO-R . 2)) (\"StrefaArea\" (&VLO-R . 3)) (\"StrefaKubatura\" (&VLO-R . 4)) ) ) ) (\"RoomAreaPP\" (&VLO-R . 3)) (\"RoomAreaPD\" 0) (\"RoomArea\" (&VLO-R . 3)) (\"RoomKubatura\" (&VLO-R . 4)) (\"RoomFloor\" \"\") )" ) ) poszczególne (&VLO-R . 0) (&VLO-R . 1) (&VLO-R . 2) ... trzeba zamienić na kolejne wartości z listy powyżej (300 ... ) (40 . 3.97) (40 . 94.5289) (40 . 52.43) (40 . 93.7424) (40 . 372.158) czyli (&VLO-R . 0) podmienić na 3.97 (&VLO-R . 1) podmienić na 94.5289 (&VLO-R . 2) podmienić na 52.43 Troche z tym roboty. Jeśli zdecyduej się Pan na przejście na inną reprezentację danych to szkoda czasu, jeśli chciałby Pan pozostać przy LData, to proszę dać znać - przygotuję gotowe rozwiązanie. Choć to może trochę potrwać.