swazy

Użytkownik forum
  • Postów

    28
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez swazy

  1. Przy pomocy: (getpropertyvalue blkEnt "AcDbDynBlockPropertyA1 X") ...udało mi się wyciągnąć współrzędne, które mnie interesują, ale ogrom niewiedzy pozostał... (dumpallproperties blkEnt) Co to właściwie jest i czy da się to w jakiś w miarę łopatologiczny sposób wyjaśnić laikowi co się tutaj wydarza?
  2. Wiem, tylko że nie mogę tego udostępnić bo to element sytemu, prawa autorskie, bla, bla, bla.... https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/get-list-of-parameters-being-used-in-block-without-vla-vlax/m-p/8461420#M378276 Wykopałem z czeluści internetów taki post - chodzi mi praktycznie o to samo co w przytoczonym trójkącie. Tylko z tego co rozumiem AutoCad ma (albo miał) wbudowaną funkcję getpropertyvalue. Sprawdzę to jutro (zaraz) w pracy. Czy ZWCAD ma coś analogicznego, albo czy da się takowe wydziobać?
  3. Czy brak reakcji na pytanie oznacza, że w internecie było to wałkowane miliard razy i powinienem sobie to znaleźć (oczywiście próbowałem)?
  4. Dziękuję za odpowiedź. Muszę się z tym przespać i pewnie będę męczył pytaniami dalej A póki co to mam jeszcze jedno pytanie z kolejnej beczki. Jak mogę się dostać do tych danych? To jest point parameter, ale nie ma jego wartości w atrybutach, cd:BLK_GetEntity też tego nie pokazuje. Dodam jeszcze, że to nie jest blok dynamiczny (wg cd:BLK_IsDynamicInsert ).
  5. Dobry wieczór, Mam pytanie programistyczne odnośnie szyków. Gdzie i w jaki sposób zapisane są dane poszczególnych elementów szyku? Czy da się uzyskać dane położenia poszczególnych jego elementów? Czy możliwa jest edycja zakresu szyku, liczby elementów czy rozstawu poprzez Lisp'a? I drugie pytanie z innej beczki: czy możliwe jest zaprogramowanie własnych osnapów? Przykładowo chciałbym uzyskać endpoint i middlepoint, ale tylko dla obiektów ze wskazanej warstwy.
  6. A co dokładnie jest problemem? Wstawienie bloku? Zmiana atrybutu? Odczytanie pikietażu? Jest to jak najbardziej do zrobienia Lisp-em.
  7. Dziękuję za odpowiedź. Moją ideą było przeszukanie "m" razy (gdzie m to długość mojej listy) zbiór wszystkich bloków w rysunku i pisałem to pod jeden konkretny blok, dlatego brak filtrów na wejściu. Teraz widzę, że "(1+ m)" i (1+ n ) są w złych miejscach no i mam oczywiście świadomość, że działanie programu jest mało finezyjne....ale tak jakoś nauczyłem się kiedyś AutoLispa a Visual wydaje mi się mniej czytelny no i nie ma o tym książek (chyba 😄 ).
  8. Pozwolę sobie pociągnąć wątek dalej. Dlaczego nie chce mi działać coś takiego i gdzie tu jest błąd? (defun C:HL ( / ) (setq LISTA (cdr (cd:BLK_GetDynBlockNames "<nazwa mojego bloku>" ))) (setq BLOKI (ssget "x" '(( 0 . "INSERT" )))) (setq WYB nil ) (setq n 0 ) (repeat (length LISTA ) (setq m 0 ) ;(setq jeszcze T ) (repeat (sslength BLOKI ) (setq POM (ssname BLOKI m )) (if (= (cdr (assoc 2 (entget POM ))) (nth n LISTA )) (progn (if WYB (progn (setq WYB (ssadd (cdr (assoc -1 (entget POM ))) WYB )) );progn (progn (setq WYB (ssadd (cdr (assoc -1 (entget POM ))))) );progn );if (setq jeszcze nil ) (setq n (1+ n )) );progn );if ;(if (= m (- (sslength BLOKI) 1 ))(setq jeszcze nil )) (setq m (1+ m )) );repeat );repeat (command "hideobjects" WYB "" ) (princ (strcat "\n...ukrylem < " (rtos (sslength WYB ) 2 0 ) " > blok/i/ow..." )) (princ) );defun Kod działa częściowo, bo listę bloków anonimowych tworzy tak jak bym tego chciał, ale dalsza część wyłapuje i ukrywa tylko część z bloków z listy... Na przykład *U286 nie ukrywa.
  9. Ale czad! 🤩 Dziękuję! Na ZW-Cadzie 2024 działa bez zarzutów. A z ciekawości: czy da się to zrobić klasycznym AutoLispem ?
  10. Dobry wieczór, Mam problem z programistycznym okiełznaniem bloków dynamicznych - chodzi o blok belki prefabrykowanej występujący w kilku określonych długościach. Belka przedstawiona jest za pomocą bloku dynamicznego, który ma zdefiniowany kilka Visibility z Linear Parameter. Czy mogę prosić o nakierowanie w jaki sposób mogę się dowiedzieć, która długość belki jest aktualnie wybrana na rysunku? Obstawiam, że to siedzi gdzieś w słownikach. "(102 . {ACAD_XDICTIONARY) (360 . <ENTITY NAME: 2ba9f768>) (102 . })", Próbowałem googlować, ale nie za bardzo potrafię się połapać o co w tej technologyi chodzi... (niestety nie mam zgody na upublicznienie pliku z blokiem, więc muszę tak lakonicznie i opisowo) Będę dźwięczny za pomoc :)
  11. Cześć! Coś czuję że zadaję głupie pytanie, ale mój mały rozumek uważa że to powinno działać ale niestety nie działa. Dlaczego? 🧐 (setq qqq (entget (car (entsel )))) (setq qqq (subst (cons 50 0.25 )(assoc 50 qqq) qqq )) (setq entmod qqq )
  12. Dzięki wielkie! Brzmi jak weekend z Lispem bo zajeżdża mi to czarną magią 😛
  13. Chyba jestem cieńszy w uszach niż myślałem... 😞 (defun C:MODYFIKACJA_WARSTW ( / POM n ENT_POM BASE ) (setvar "cmdecho" 0 ) (setq BASE (list ;W tym miejscu uzupełniasz sobie listę interesujących Cię wartstw wg podanego klucza ;NAZWA WARSTWY || 1=widoczny / -1=wygaszony || KOLOR || STYL LINII '( "209-Opis konturu klasyfikacyjnego" 1 55 "sm05_500") '( "238-Punkt adresowy budynku" 1 161 "sm05_500") '( "219-Linia granicy" 1 1 "sm05_500") ));setq (foreach EL BASE (if (/= nil (tblobjname "layer" (nth 0 EL ))) (progn (setq POM (tblobjname "layer" (nth 0 EL))) (setq ENT_POM (entget POM )) (setq ENT_POM (subst (cons 62 (* (nth 1 EL )(nth 2 EL )))(assoc 62 ENT_POM ) ENT_POM )) (setq ENT_POM (subst (cons 6 (nth 3 EL ))(assoc 6 ENT_POM ) ENT_POM )) (entmod ENT_POM ) );progn (progn (princ (strcat "\n...barak warstwy: <<<" (nth 0 EL ) ">>> na rysunku...")) );progn );if );foreach (princ "\n<<< warstwy zmodyfikowane! >>>") (princ) );defun (defun C:MODYFIKACJA_OBIEKTOW ( / KOLOR WYSOKOSC WYB POM ENT_POM n ) (setvar "cmdecho" 0 ) (setq KOLOR 12 ;<<<<<<<<<<<<<<< TUTAJ WPISUJESZ NR KOLORU WYSOKOSC 2.40 ;<<<<<<<<<<<<<<< TUTAJ WPISUJESZ WYSOKOSC TEXTU );setq (setq WYB (ssget "x" '((-4 . "<AND")(0 . "TEXT")(8 . "211-Nr dzia*ki")(-4 . "AND>")))) ;<<<<<<< TUTAJ W NAWIASIE (8 . "xxx") WSTAWIASZ NAZWE WARSTWY (if (/= nil WYB) (progn (setq n 0 ) (repeat (sslength WYB ) (setq POM (ssname WYB n )) (setq ENT_POM (entget POM)) (setq ENT_POM (subst (cons 40 WYSOKOSC )(assoc 40 ENT_POM ) ENT_POM )) (if (assoc 62 ENT_POM) (progn (setq ENT_POM (subst (cons 62 KOLOR )(assoc 62 ENT_POM ) ENT_POM )) );progn (progn (setq ENT_POM (append '(cons 62 KOLOR ) ENT_POM )) );progn );if (entmod ENT_POM ) (setq n (1+ n )) );repeat (princ "\n<<< obiekty zmodyfikowane! >>>") );progn (progn (alert "\n<<< nie znalazłem tekstow o podanych kryteriach! >>>") );progn );if (princ) );defun Popełniłem coś takiego - proszę o krytykę tutejszych Gooru. Działa, ale nie sądzę że jest to najwyżej punktowana odpowiedź i trzeba by się było nad tym jeszcze chwilę popastwić. a) nie potrafię sobie poradzić z polskimi znakami w nazwach warstw b) nie wiem jak się zmienia kolory "truecolor")
  14. Piszesz o rzeczach podstawowych i niezbędnych jak prawo do edukacji na karcie praw człowieka 😄 Spróbuję zaraz coś pomocnego wyprodukować.
  15. Już bardziej, ale tak o poziom bezpieczniej 😛 Myślałem o czymś w stylu PIN-u (no bo zrobienie czegoś w stylu (if (not PIN)(exit)) , ale taki kod można udostępnić tak samo łatwo jak i sam skompilowany plik. Zastanawiam się jak swoje kody zabezpieczają ludzie, którzy odpłatnie zajmują się pisaniem skryptów do środowiska CAD. Czy też może jest to zbyt prymitywne środowisko i nikomu się nie chce bawić w takowe biznesy???
  16. Polecenie "compile" wiem, znam i używam, tylko nie do końca mi o to chodziło No bo ten plik *.zel owszem, ukrywa kod, ale zaszyfrowany plik może uruchomić każdy kto wejdzie w jego posiadanie. A moją intencją jest zachowanie efektów mojej pracy i udostępnienie jej tylko wybranym przeze mnie osobom (a przez to zachowanie konkurencyjności tego, co napisałem). Kiedyś bawiłem się zmienną "CDATE" żeby dezaktywować działanie programów po jakimś czasie nawet jeśliby "wyciekły" ale takie rozwiązanie wydaje mi się bardzo chałupnicze no i cofnięcie zegara systemowego załatwia sprawę. Podejrzewam że da się to zrobić w sposób bardziej profesjonalny...
  17. Dobry wieczór, Przychodzę z serią pytań a główne z nich brzmi "Czy da się zabezpieczyć Lisp'a żeby ten nie rozlazł się po świecie?" Moja historia jest taka: już dobrych kilka lat temu usłyszałem o czymś takim jak Lisp a że to co się usłyszało to już się nie odsłyszy to konsekwencją tego było nadziubanie pierwszej pary nawiasów, które do dziś dzień rozmnożyły się niczym swego czasu króliki w Australii... I tak oto zacząłem pisać dla siebie narzędzia, którymi potem zainfekowałem swoje Biuro. W tym momencie jestem na etapie zmieniania pracy, ale jednocześnie chciałbym zostawić moje Lispy bo zrobiło się już z tego środowisko pracy a moje biuro to fajne biuro i nie chcę go upośledzać. Jednocześnie chciałbym, żeby to co napisałem nie zostało rozprzestrzenione na konkurencyjne firmy (wiadomo - co raz w internecie na zawsze w internecie). Czy da się temu w jakiś sposób zaradzić? (mam nadzieję że moje pytanie i poruszana kwestia jest moralnie poprawna - jeśli nie to usunę posta). Pozdrawiam Mateusz
  18. Dawno mnie tu nie było i nie podziękowałem... Dziękuję więc! Kupa wiedzy na tym forum mieszka zaprawdę...
  19. Dobry wieczór, Mam takie szybkie pytanko. Myślę, że sprawa jest banalna, ale nie mogę tego nigdzie znaleźć. No więc: jaką komendą da się zmienić widoczność danej warstwy w tablicy? (setq LAY (tblsearch "layer" "zbrojenie_linie" )) (setq LAY (subst (cons 62 -8 )(assoc 62 LAY) LAY)) (entmod LAY ) Chciałem w ten sposób, ale program [ZW-Cad 2020] nie współpracuje. Pozdrawiam 😉
  20. Do ZW-Soft....grubo Dziękuję za odpowiedź. A możliwe, że ZW-Soft coś z tym zrobi, czy to taka bardziej sugestia do przyszłych wersji? No i mam pytanie czy da się napisać to od nowa, od innej strony i w inny sposób?
  21. Cześć! Mam problem z pewnym lispem do tworzenia Viewportów. Założenie jest takie, że podaję skalę Viewportu, wskazuję w przestrzeni modelu jego zakres (definiuje się nowy "View") i w efekcie w przestrzeni papieru powstaje mi viewport w odpowiedniej skali i w odpowiedniej wielkości. Niestety o ile już dosyć sprawnie poruszam się w nawiasowym świecie LISPa, to VLISP jest dla mnie czarną (a przynajmniej bardzo ciemną) magią. Z tego co rozumiem komenda "setview" przypisuje ostatnio utworzonemu viewport'owi view. (setq vportID (cdr (assoc 69 (entget (entlast))))) (setview (tblsearch "VIEW" "THEVIEW") vportID) ....i o ile dla AutoCada 2012 i ZW-Cada 2015+ takie coś działa, o tyle w ZW-Cad'zie 2020 już nie. Będę bardzo dźwięczny za wskazówki i informacje czy da się to jakoś zmodernizować. (Mam załączyć cały kod? ). Pozdrawiam Mateusz
  22. Przepraszam za spam, ale chciałem bardzo podziękować za ten post. Właśnie odkryłem Amerykę!!!!! 😍 Swoją drogą to nie wiem czemu, ale nie natknąłem się jeszcze nigdzie w helpach, literaturze ani innych Googlach że jest taka opcja.
  23. Jeśli to powyżej Ci nie odpowiada to myślę, że mógłbym wyskrobać Ci takie narzędzie.
  24. Mógłbyś bardziej zobrazować o co Ci chodzi? Może jestem w stanie pomóc ale trochę nie rozumiem jaki ma być efekt końcowy i gdzie ma być ten numer i prefix.