perlon

Użytkownik forum
  • Postów

    425
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    33

Treść opublikowana przez perlon

  1. Natrafiłem na nieoczekiwane zachowanie wersji 2020beta. Mam rysunek z podpiętą referencją z dużą ilością annotation scale. Przy otwieraniu rysunku głównego w wersji 2019 pojawia się stosowny komunikat: Ta sama operacja w w 2020beta powoduje zamrożenie programu. Oczywiście wyczyszczenie adnotacji problem rozwiązuje. Otwarcie bezpośrednie pliku w 2020 daje w wyniku powyższy komunikat i dalej wszystko jest OK. Wskazuje to na pewne niedomaganie przy obsłudze plików z dużą ilością adnotacji skal. Dodatkowo dla testów postanowiłem jeszcze sprawdzić samo podłączanie takiego pliku jako referancji i niestety 2019 i 2020 zamarza przy próbie podpięcia takiego pliku. Świadczy to o problemach z obsługą takich plików również w poprzedniej wersji. Oczywiście jak pisałem wyczyszczenie pliku sytuację uzdrawia. W załączeniu plik do testów. tmpKP00.1A.dwg
  2. Jeżeli używasz polskiej wersji to potrzebujesz jeszcze podkreślenia przed -layer U mnie wprawdzie na wersji EN ale zadziałało takie coś: (defun c:f() (command "_-layer" "f" "*" ""))
  3. W ZwLisp extension jest miniporadnik video. Coś nawet udało mi się debugować, ale przy skryptach wieloplikowych już to nie za bardzo działa. Wygląda obiecująco, ale póki co nie jest to takie user friendly jak edytor Autodesku.
  4. Nie wiem czy tak było w poprzednich wersjach ale nie ma możliwości usunięcia dodanej listy rozwijalnej i mam teraz w tym toolbarsie dwie 😞 i w dodatku nieaktywne. A pop przyklejeniu do boku są jedna OBOK drugiej. Reset profila nie pomaga.
  5. W becie też nie załatwiona ta sprawa: https://forum.cad.info.pl/topic/2541-zwcad2019-sp3-toolbars/ Jak sądzę za krótko pomiędzy 2019SP3 a 2020beta, ale może do oficjalnego wydania to poprawią.
  6. Aha. Nie ma różnicy czy wołam dtext czy text i zauważyłem, że takie wywołanie daje pożądany efekt Command: (command "_text" "_s" "txt2" (setq p1 (getpoint "\nWskaż punkt:"))) _text Current text style: "txt2" Text height: 200 Annotative: No Specify the starting point of text or [Justify/Style]: _s Enter text style or [?] <txt2>: txt2 Specify the starting point of text or [Justify/Style]: Wskaż punkt: Specify the rotation angle of text <30>: nil Specify the rotation angle of text <30>: Z tym że pojawia się systemowe pytanie o kąt u mnie po angielsku i wszystko działa ok. Ale jak dodam parametr reprezentujący kąt tekstu to już nie jest ok. Command: (command "_text" "_s" "txt2" (setq p1 (getpoint "\nWskaż punkt:")) 30) _text Current text style: "txt2" Text height: 200 Annotative: No Specify the starting point of text or [Justify/Style]: _s Enter text style or [?] <txt2>: txt2 Specify the starting point of text or [Justify/Style]: Wskaż punkt: Specify the rotation angle of text <27>: 30 Text: nil Text: wefwfewe
  7. Mam taką oto sytuację. Wpisując komendę DTEXT bezpośrednio z klawiatury mam możliwość wpisania kilku wierszy tekstu podzielonych ENTER'em. Po potwierdzeniu enterem pustej linii komenda kończy działanie a w rysunku mam kilka tekstów jednowierszowych. To jest dla mnie OK i tak jest również a AC. Gdy próbuję to zaimplementować za pomocą command w LISP'e w taki oto sposób : (command "_dtext" (setq p1 (getpoint "\nWskaż punkt:")) (getdist "\nWskaz wysokosc:" p1) (* (/ (getangle "\nWskaż kąt:" p1) pi) 180)) Można wprowadzić tylko jeden wiersz i enter kończy działanie takiej komendy. W powyższym zakładam że domyślna wysokość tekstu w bieżącym stylu jest 0 dlatego jest człon pytania o wysokość tekstu. Dla bieżącego stylu posiadającego ustawioną domyślną wysokość pytanie o wysokość powinno być pominięte np. taka wersja wywołania ale nie zmienia to meritum (command "_dtext" "_s" "txt2" (setq p1 (getpoint "\nWskaż punkt:")) (* (/ (getangle "\nWskaż kąt:" p1) pi) 180)) W AC działa zgodnie z oczekiwaniami tak jak przy "gołym" wywołaniu _dtext, a w ZwCAD niestety jest różnica, która mnie nieco irytuje. Czy mógłby ktoś wyjaśnić tą rozbieżność lub ewentualnie prośba do przyjaciół z Szansy o zgłoszenie tego do deweloperów?
  8. Sprawy jeszcze nie załatwione zgłaszane do poprzednich wersji https://forum.cad.info.pl/topic/2454-zmienna-systemowa-orbitautotarget/ https://forum.cad.info.pl/topic/2453-nie-działa-shift-unselect-face-na-solidach/ Dodatkowo łącząc obie sprawy. Przy zaznaczonych płaszczyznach włączając 3DOrbit za pomocą Shift+SKM znika selekcja, które ścianki będą podlegały operacji. Selekcja ta pojawia się ponownie po dodaniu lub odjęciu ze zbioru wskazań jakiejś płaszczyzny solida. https://forum.cad.info.pl/topic/1789-okno-wyboru-kartoteki-options-file-browse/
  9. No obejść można przez edycję .cui ale jest to chyba rozwiązanie zbyt brutalne. Może zamiast obchodzić lepiej wrócić do poprzedniej funkcjonalności. Deweloperzy chyba dadzą radę. Może to tylko małe przeoczenie w kodzie.
  10. Zdaje się, że jest lekkie zamieszanie w numeracji wersji SP. Na forum podano, że VERNUM = "2019.03.15(43299)_x64" to SP2.1, link do pobrania prowadzi do pliku nazwanego (konkretnie akurat do wersji EN) https://jakicad.pl/pobierz/893/ZWCAD_2019_SP3_ENU_Win_64bit.exe co sugerowałoby że jest to SP3 a nie SP2.1. Dodatkowo jak się otworzy About w programie mamy SP2. Na stronie ZwSOFT niestety do pobrania jest starsza wersja build 41803.
  11. Rzecz dotyczy toolbars'ów zawierających listy rozwijalne np. Dimensions lub View. W dotychczasowych wersjach (również w produktach Autodesku) jak się takiego toolbarsa przypięło do lewej lub prawej krawędzi ekranu to lista rozwijalna nie była pokazywana. Gdy się go przypięło do górnej lub dolnej krawędzi lista była widoczna. W wersji SP3 niestety tak nie jest. Lista rozwijalna jest na stałe widoczna bez względu na to gdzie jest przypięty pasek ikon. Powoduje to że zajmuje jak dla mnie za dużo miejsca na ekranie. Przyzwyczaiłem się pewnego układu ikon a to mi rozwala dotychczasowe przyzwyczajenie. Chciałbym, "żeby było tak, jak było". 😉
  12. Witam. Po lekturze ostatniego wpisu Kojacka na jego blogu chciałem sprawdzić działanie c:dim-sf na ZwCAD, który krzyknął że nie zna takiej funkcji jak w temacie. Czy jest w ZwCAD jakiś odpowiednik lispowiej funkcji (getpropertyvalue). To samo dotyczy funkcji setpropertyvalue, dumpallproperties i ispropertyreadonly. Ewentualnie czy są plany ich wprowadzenia?
  13. Jeden wiersz tabeli to jeden obiekt (encja)? Inaczej mówiąc ile kresek w zaznaczonym zbiorze to tyle wierszy w tabelce? A jeżeli na jednej warstwie jest kilka kresek w tym samym kolorze to co ma być w tabelce?
  14. No i kruszyński był szybszy Dodam tylko, że jeżeli obiekt ma kolor bylayer to kodu 62 może w ogóle w encji nie być.
  15. (progn (repeat (setq i (sslength ss)) (setq e (ssname ss (setq i (1- i))) a (cdr (assoc 8 (entget e))) ; odczyt nazwy warstwy obiektu d (vlax-curve-getdistatparam e (vlax-curve-getendparam e)) ; odczyt dlugosci obiektu ) (if (setq o (assoc a l)) ; jezeli warstwa jest juz na liscie (setq l (subst (list a (+ (cadr o) d)) o l)) ; dodaj dlugosc elementu do lacznej dlugosci obiektow warstwy (setq l (cons (list a d) l)) ; dodaj pare warstwa dlugosc do listy warstw ) ) problem polega na tym, że długości obiektów na poszczególnych warstwach da się sumować ale nie da się sumować ich kolorów 😉 tak więc prosta przeróbka tego lispa raczej nie wchodzi w grę. Jak miałaby wyglądać ta tabelka? warstwa1 -> kolor1 -> ilość1 warstwa1 -> kolor3 -> ilość3 warstwa2 -> kolor1 -> ilość1 warstwa2 -> kolor2 -> ilość2 warstwa2 -> kolor5 -> ilość5 etc. ???
  16. Trzeba jeszcze było uodpornić lispa na DIMRND=0 bo wywalał dzielenie przez 0. I jeszcze zamiana kropki na znak oddzielenia części dziesiętnej wg stylu wymiarowego. Wersja po poprawkach: (vl-load-com) (defun c:dimagregatemod ( / ent) (while (= nil ent) (progn (prompt "\nWskaz wymiar do zmiany: ") (setq ent (car (entsel))) ) ) (if (= (cdr (assoc 0 (entget ent))) "DIMENSION") (pr:multipledimsection (entget ent)) (princ "\nBlad: Wskazany obiekt nie jest wymiarem liniowym") ) (princ) ) (defun c:dimagregate ( / ) (command "_dimlinear" pause pause pause) (pr:multipledimsection (entget (entlast))) (princ) ) (defun pr:multipledimsection ( entlist / n section newtext rnd) (setq n (getint "\nPodaj liczbe odcinkow: ") section (/ (float (cdr (assoc 42 entlist))) (float n)) rnd (getvar "DIMRND") ) (if (not (= rnd 0)) (setq section (* rnd (atoi (rtos (/ section rnd) 2 0)))) ) (setq newtext (strcat "<>\\X(" (itoa n) "x" (vl-string-translate "." (getvar "DIMDSEP") (rtos section 2 (getvar "DIMDEC"))) ")") entlist (subst (cons 1 newtext) (assoc 42 entlist) entlist) ) (entmod entlist) ) (princ)
  17. voila (defun c:dimagregatemod ( / ent entlist) (while (= nil ent) (progn (prompt "\nWskaz wymiar do zmiany: ") (setq ent (car (entsel))) ) ) (if (= (cdr (assoc 0 (entget ent))) "DIMENSION") (pr:multipledimsection (entget ent)) (princ "\nBlad: Wskazany obiekt nie jest wymiarem liniowym") ) (princ) ) (defun c:dimagregate ( / ) (command "_dimlinear" pause pause pause) (pr:multipledimsection (entget (entlast))) (princ) ) (defun pr:multipledimsection ( entlist / n section newtext) (setq n (getint "\nPodaj liczbe odcinkow: ") section (* (getvar "DIMRND") (atoi (rtos (/ (/ (float (cdr (assoc 42 entlist))) (float n)) (getvar "DIMRND")) 2 0))) newtext (strcat "<>\\X(" (itoa n) "x" (rtos section 2 (getvar "DIMDEC")) ")") entlist (subst (cons 1 newtext) (assoc 42 entlist) entlist) ) (entmod entlist) ) (princ)
  18. Zapewne jest możliwe, ale nie wiem jak odczytać tę właściwość. UNITS daje takie okno: W autocad jest coś takiego jak -DWGUNITS (polecenie zewnętrzne w arx) ale w ZwCAD nie zadziała. Nie wiem jaka zmienna trzyma aktualną jednostkę rysunkową. Nic innego w temacie jednostek mi nie przychodzi do głowy, chyba że nakładki, ale to inna bajka bo każda nakładka trzyma jednostki po swojemu.
  19. W między czasie jak jeszcze mogłem posta zedytować dorzuciłem warunek sprawdzający czy faktycznie wskazany obiekt jest wymiarem czego nie ma w podlinkowanym pliku lsp: ;c:ww1() ;[...] (if (= (cdr (assoc 0 (entget ent))) "DIMENSION") (multipledimsection (entget ent)) (princ "\nBlad: Wskazany obiekt nie jest wymiarem liniowym") )
  20. A co mi tam. Napisałem rybę. Mi się też przyda (defun c:ww1 ( / ent) (while (= nil ent) (progn (prompt "\nWskaz wymiar do zmiany: ") (setq ent (car (entsel))) ) ) (if (= (cdr (assoc 0 (entget ent))) "DIMENSION") (multipledimsection (entget ent)) ) ) (defun c:ww2 ( / ) (command "_dimlinear" pause pause pause) (multipledimsection (entget (entlast))) ) (defun multipledimsection ( entlist / n section newtext) (setq n (getint "\nPodaj liczbe odcinkow: ") section (/ (cdr (assoc 42 entlist)) n) newtext (strcat "<>\\X(" (itoa n) "x" (rtos section 2 2) ")") entlist (subst (cons 1 newtext) (assoc 42 entlist) entlist) ) (entmod entlist) (princ) ) (princ)
  21. Taka wędka do samodzielnej przeróbki na rybę 😉 (defun c:ww ( / ent n entlist dimvalue section newtext) (while (= nil ent) (progn (prompt "\nWskaz wymiar do zmiany: ") (setq ent (car (entsel))) ) ) (setq n (getint "\nPodaj liczbe odcinkow: ") entlist (entget ent) section (/ (cdr (assoc 42 entlist)) n) newtext (strcat "<>\\X(" (itoa n) "x" (rtos section 2 2) ")") entlist (subst (cons 1 newtext) (assoc 42 entlist) entlist) ) (entmod entlist) (princ) )
  22. Pisanie lispa bezpośrednio do okna komend to raczej słabe jest. Żadnych szans na poprawki. Zrób kolego tak: 1. Otwórz jakiś edytor tekstowy (notatnik, notepad++, cokolwiek) 2, Wpisz coś takiego (command "Line" (getpoint) (getpoint) (getpoint) (getpoint) "c") 3. Zapisz jako : d:\moj_lisp.lsp d:\ jest przykładową lokalizacją ty wybierz sobie jaką tam chcesz, moj_lisp.lsp jest nazwą pliku LSP który należy wczytać do zwcad'a. Też możesz wybrać cokolwiek byle miało rozszerzenie .LSP 4. W linii komend w zwcad'zie wpisz (load "d:\moj_lisp.lsp") 5. Wskaż cztery punkty zgodnie z podpowiedzią w linii komend 6. Masz swój pierwszy program w LISP'ie rysujący czworokąt z obiektów typu linia o wskazanych wierzchołkach 7. Wpisz do powyższego pliku taką sekwencję (setq p1 (getpoint "Wskaz punkt:")) (setq p2 (polar p1 0 100)) (setq p3 (polar p2 (/ PI 2) 100)) (setq p4 (polar p3 PI 100)) (command "Line" p1 p2 p3 p4 "c") 8. Zapisz i załaduj ponownie do zwcad'a Masz lispa który rysuje kwadrat. W pliku moj_lisp.lsp możesz dopisywać kolejne komendy, polecenia, funkcje które złożą się na jakąś sekwencję dającą oczekiwany efekt. Możesz na forum wrzucić co masz już napisane, to dasz szansę, żeby ci pomóc.
  23. Nie mówię, że się podejmę, ale chciałbym zwrócić uwagę że brakuje kilku wymiarów i wydaje mi się, że podane zależności wymiarowe na rysunku uniemożliwiają prawidłowe wykonstruowanie tego kształtu. Brakuje rozstawu wybrań na dolnej krawędzi i wysięgu wypustu. Pomijając to geometrycznie to lipa jest. Jeżeli założymy (w przybliżeniu) R = b/3 to ( b/3 - 5 ) + b/3 + b/3 + ( b/3 - 5 ) = 4b/3 - 10 = b -> b = 30; R=10 U góry jest to jedynie rozwiązanie a widać. że na dole nie da się upchnąć dwóch wybrań o promieniu R=b/3=10 nie mówiąc już o wypuście. Musisz chyba jeszcze raz przemyśleć zadanie. Oczywiście, jest możliwość, że się mylę, ale w takim razie tym bardziej nie jestem w stanie ci pomóc.
  24. A może to ci się nada https://kojacek.wordpress.com/2018/05/17/numerator/