-
Postów
268 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
43
Treść opublikowana przez kojacek
- Poprzednia
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Dalej
-
Strona 2 z 11
-
Zaznaczanie obiektów wewnątrz polilinii
kojacek odpowiedział(a) na dmatusz3 temat w ZWCAD Standard i Professional
Nieco mnie to zmobilizowało... do uporządkowania pewnych rozważań nad zbiorami wskazań. Trochę bardziej rozbudowane tworzenie zbiorów wskazań przez krzywe (LINE/LWPOLYLINE/ARC/ELLIPSE/SPLINE), krawędzią, oknem, oknem przecinającym. Także z filtrami. Więcej: https://kojacek.wordpress.com/2024/09/08/zbior-wskazan-okreslony-krzywa/ -
Program do podmiany wartości atrybutów w tym w liście bloków
kojacek odpowiedział(a) na Robert11 temat w Wsparcie programistyczne LISP i VisualLISP
(defun %aaa () (foreach % (list "ENE" "DUE" "RABE" "POLKNAL" "CHINCZYK" "NAME") (progn (setq *ATT-LIST* (list % "SYMBOL" "LPS")) (C:ATR-ZMIANA) ) ) )- 11 odpowiedzi
-
- jedna operacja
- wiele bloków
-
(i 3 więcej)
Oznaczone tagami:
-
Program do podmiany wartości atrybutów w tym w liście bloków
kojacek odpowiedział(a) na Robert11 temat w Wsparcie programistyczne LISP i VisualLISP
Można się pokusić o (w istocie drobną) przeróbkę tego kodu, aby pracował w trybie "wsadowym". Kod wygląda teraz tak: ; -------------------------------------------------------------------------- ; ; C:ATR-ZMIANA by kojacek 2024 (http://kojacek.wordpress.com) ; ; -------------------------------------------------------------------------- ; (defun C:ATR-ZMIANA ()(jk:140824_GetBklMask)(princ)) ; -------------------------------------------------------------------------- ; (defun jk:140824_GetBklMask ( / %m %s %l %a %b %r %e %i %o :t) (defun :t (i) (getstring (strcat "\nPodaj " (nth i (list "pierwszy" "drugi")) " tag atrybutu do zamiany: " ) ) ) (if (setq %m (if (not *ATT-LIST*) (getstring "\nPodaj początkowy fragment nazwy bloku: ") (car *ATT-LIST*) ) ) (if (member %m (list "" " ")) (princ "\nBłąd - zła nazwa.") (if (setq %s (ssget "_x" (list (cons 0 "INSERT") (cons 410 (getvar "CTAB")) (cons 2 (strcase (strcat %m "*"))) ) ) ) (progn (setq %l (cd:SSX_Convert %s 0)) (if (and (setq %a (if (not *ATT-LIST*) (strcase (:t 0)) (cadr *ATT-LIST*) ) ) (setq %b (if (not *ATT-LIST*) (strcase (:t 1)) (caddr *ATT-LIST*) ) ) ) (progn (setq %r (mapcar '(lambda (% / %1 %2 %3) (if (setq %1 (cd:BLK_GetAtts %)) (if (and (setq %2 (cdr (assoc %a %1))) (setq %3 (cdr (assoc %b %1))) ) (list % %2 %3) 1 ) 1 ) ) %l ) %e (vl-remove-if-not 'numberp %r) %r (mapcar 'car (vl-remove-if 'numberp %r)) ) (if %r (progn (cd:SYS_UndoBegin) (foreach % %r (setq %i (cd:BLK_GetAtts %) %o (vlax-ename->vla-object %) ) (cd:BLK_SetAttValueVLA %o %a (cdr (assoc %b %i)) ) (cd:BLK_SetAttValueVLA %o %b (cdr (assoc %a %i)) ) ) (princ (strcat "\nZmieniono atrybuty w " (itoa (length %r)) " blokach." (if %e (strcat " Odrzucono " (itoa (length %e)) " bloków." ) "" ) ) ) (cd:SYS_UndoEnd) ) (princ (strcat "\n" (itoa (length %l)) " bloków nie spełnia wymagań do zmiany atrybutów." ) ) ) ) (princ "\nBłąd. Wymagane nazwy atrybutów.") ) ) (princ "\nNie znaleziono odpowienich bloków.") ) ) (princ "\nBłąd. Brak nazwy") ) ) ; -------------------------------------------------------------------------- ; (princ) Przed wywołaniem polecenia wystarczy teraz zadeklarować zmienną globalną o nazwie *ATT-LIST*. Jest to trzyelementowa lista gdzie pierwszy element to maska (początkowy fragment) nazwy bloku, a dwa kolejne to tagi atrybutów do zamiany. Deklaracja zmiennej: (setq *ATT-LIST* (list "NAME" "SYMBOL" "LPS")) Następnie wywołania polecenia ATR-ZMIANA skutkują jak na animacji poniżej. Gdy zmienna nie jest zadeklarowana polecenie działa jak w poprzednim poście. Nie trzeba tłumaczyć że wartości zmiennej można modyfikować w zależności od potrzeb.- 11 odpowiedzi
-
- jedna operacja
- wiele bloków
-
(i 3 więcej)
Oznaczone tagami:
-
Program do podmiany wartości atrybutów w tym w liście bloków
kojacek odpowiedział(a) na Robert11 temat w Wsparcie programistyczne LISP i VisualLISP
Potrzebujesz wykonać następujące czynności: 1) załadować CADPL-Pack'a. Znajdziesz go tutaj: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/ 2) oraz poniższy kod definiujący polecenie ATR-ZMIANA: ; -------------------------------------------------------------------------- ; ; C:ATR-ZMIANA by kojacek 2024 (http://kojacek.wordpress.com) ; ; -------------------------------------------------------------------------- ; (defun C:ATR-ZMIANA ()(jk:140824_GetBklMask)(princ)) ; -------------------------------------------------------------------------- ; (defun jk:140824_GetBklMask ( / %m %s %l %a %b %r %e %i %o :t) (defun :t (i) (getstring (strcat "\nPodaj " (nth i (list "pierwszy" "drugi")) " tag atrybutu do zamiany: " ) ) ) (if (setq %m (getstring "\nPodaj początkowy fragment nazwy bloku: ") ) (if (member %m (list "" " ")) (princ "\nBłąd - zła nazwa.") (if (setq %s (ssget "_x" (list (cons 0 "INSERT") (cons 410 (getvar "CTAB")) (cons 2 (strcase (strcat %m "*"))) ) ) ) (progn (setq %l (cd:SSX_Convert %s 0)) (if (and (setq %a (strcase (:t 0))) (setq %b (strcase (:t 1))) ) (progn (setq %r (mapcar '(lambda (% / %1 %2 %3) (if (setq %1 (cd:BLK_GetAtts %)) (if (and (setq %2 (cdr (assoc %a %1))) (setq %3 (cdr (assoc %b %1))) ) (list % %2 %3) 1 ) 1 ) ) %l ) %e (vl-remove-if-not 'numberp %r) %r (mapcar 'car (vl-remove-if 'numberp %r)) ) (if %r (progn (cd:SYS_UndoBegin) (foreach % %r (setq %i (cd:BLK_GetAtts %) %o (vlax-ename->vla-object %) ) (cd:BLK_SetAttValueVLA %o %a (cdr (assoc %b %i)) ) (cd:BLK_SetAttValueVLA %o %b (cdr (assoc %a %i)) ) ) (princ (strcat "\nZmieniono atrybuty w " (itoa (length %r)) " blokach." (if %e (strcat " Odrzucono " (itoa (length %e)) " bloków." ) "" ) ) ) (cd:SYS_UndoEnd) ) (princ (strcat "\n" (itoa (length %l)) " bloków nie spełnia wymagań do zmiany atrybutów." ) ) ) ) (princ "\nBłąd. Wymagane nazwy atrybutów.") ) ) (princ "\nNie znaleziono odpowienich bloków.") ) ) (princ "\nBłąd. Brak nazwy") ) ) ; -------------------------------------------------------------------------- ; (princ) 3) wywołujesz polecenie ATR-ZMIANA, jak na poniższym ruchomym obrazie:- 11 odpowiedzi
-
- jedna operacja
- wiele bloków
-
(i 3 więcej)
Oznaczone tagami:
-
[LISP] Dostęp do elementów w szyku
kojacek odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Jeżeli: (getpropertyvalue ENAME "ClassName") gdzie ENAME to ename szyku zwróci "AcDbAssociativeRectangularArray" można dać: (setpropertyvalue ENAME "Items" INT) <- ilość kolumn (setpropertyvalue ENAME "ItemSpacing" REAL) <- odległość między kolumnami to samo dla: RowsWithExpression <- Wiersze RowSpacingWithExpression <- Odstępy między wierszami oraz: Levels <- Poziomy LevelSpacing <- Odstęp między poziomami -
[LISP] Dostęp do elementów w szyku
kojacek odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
To jest stosunkowo proste. Zatem pokażę to na prostym przykładzie. Do tego potrzeba użyć tylko paru nawiasów. Na obrazie widać polilinię, której kopia posłużyła do stworzenia szyku (powyżej polilinii) ów szyk. Jak wcześniej zostało ustalone, mamy tutaj blok anonimowy (będący szykiem) który (w swojej definicji) składa się z instancji, innego bloku anonimowego reprezentującego grafikę obiektów powielanych w szyku. Ustalmy zatem jego nazwę. Wykorzystamy funkcje już wcześniej przezentowane. Wywołanie: (setq %b (mapcar '(lambda (%) (cdr (assoc 2 (entget %))) ) (getinsidearray (car (entsel))) ) ) Pokaże nam listę nazw bloków (składowych szyku) - jest to jeden (powielony) blok: Właściwie to już wszystko, bo mając nazwę bloku mamy nieograniczony dostęp do jego definicji, którą to możemy w dowolny sposób modyfikować (zmieniać/dodawać/usuwać obiekty). Przykładowo - modyfikacja może wygladać tak. Bierzemy elementy w tym bloku (tutaj dla uproszczenia tylko jeden - polilinia): (setq %e (vlax-ename->vla-object (car (cd:BLK_GetEntity (car %b) nil) ) ) ) i modyfikujemy polilinię - nadajemy jej stałą szerokość = 10.0, oraz kolor czerwony... (vla-put-ConstantWidth %e 5.0)(vla-put-Color %e 1) Nic nie widać? Regenerujemy rysunek i... voila: To wszystko. -
[LISP] Dostęp do elementów w szyku
kojacek odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Błędnym założeniem jest że ktokolwiek będzie wiedział skąd się wzięły i jak są zbudowane bloki na komputerze swazy'ego, po zaprezentowaniu obrazka właściwości. Pewnie inaczej sprawy by się miały, gdyby został udostępniony plik dwg. -
[LISP] Dostęp do elementów w szyku
kojacek odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Szyki jeśli mówimy o ich geometrycznej reprezentacji są (jak (powszechnie) wiadomo) blokami. Blokami anonimowymi. Ich struktura jest dwupoziomowa i wygląda tak: z obiektów które są powielane tworzone są bloki anonimowe. Następnie już w bloku szyku (również anonimowym) te bloki są układane w szyku prostokatnym, biegunowym lub po ścieżce, w odpowiedniej ilości. Progra(mistycznie) trzeba w pierwszej kolejności: wybrać blok, ma być on anonimowy, i reprezentować szyk (bo nie każdy blok anonimowy nim jest). Tu mozna skorzystać z mojej funkcji jk:BLK_getInsertType (którą znajdziesz TUTAJ). Następnie mając wybrany blok szyku trzeba zbadać jego wszystkie obiekty będą to (rzecz jasna) bloki anonimowe. Tu można skorzystać z funkcji CADPL_Pack-a, o nazwie cd:BLK_GetEntity. Tak na szybko ten proces wykonuje funkcja: ; getinsidearray - by kojacek (defun getinsidearray (Ename / %a) (if (and (setq %a (jk:BLK_getInsertType Ename)) (wcmatch %a "ACDBASSOC*ARRAY") ) (cd:BLK_GetEntity (cdr (assoc 2 (entget Ename))) nil ) (prompt "\nTo nie szyk.") ) ) To może wyglądać tak: Funkcję cd:BLK_GetEntity możesz użyć do zbadania każdego bloku anonimowego w szyku. Druga rzecz: Możliwe, acz (uważam) nie warte zachodu. Można tu wykorzystać taki sam mechanizm tworzenia osnap'ów jak dla funkcji grread. Jak wiadomo funkcja ta nie obsługuje trybów lokalizacji więc... jest w sieci kilka różnych rozwiązań (mniej lub bardziej skomplikowanych), które to symulują. -
Zamiana multilinii na polilinie
kojacek odpowiedział(a) na wedzik temat w ZWCAD Standard i Professional
Natomiast tutaj: https://kojacek.wordpress.com/2017/11/13/zamiana-mline-na-lwpolyline/ zamiana podwójnej (tylko) multilinii na polilinię z szerokością (taką jak odstępy między segmentami: -
Wyciągnięcie danych z bloku dynamicznego
kojacek odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Błędów jest więcej. Już w pierwszej linii - nie deklarujesz zmiennych lokalnych. W drugiej - nie warunkujesz utworzenia listy, Twoje wywołanie zadziała tylko w jednym przypadku - gdy blok istnieje. Potem już z górki... Warunek (if (= (cdr (assoc 2 (entget POM ))) (nth n LISTA )) jest właściwie losowy... Z drugiej strony nie rozumiem tych podwójnych repeat. Zbiór wskazań bloków dynamicznych uzyskasz przecież (w uproszczeniu) tak: (ssget "x" (list (cons 0 "INSERT") (cons 2 (cd:STR_ReParse (cd:BLK_GetDynBlockNames "<Nazwa bloku>") ",`" ) ) ) ) -
Wyciągnięcie danych z bloku dynamicznego
kojacek odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Możesz użyć funkcji cd:BLK_GetDynamicProps z biblioteki CADPL-Pack-v1.lsp, tak jak na animacji poniżej dla bloku dynamicznego ścian wielowarstwowych. Ma to zastosowanie dla AutoCAD w wersji 2004 i wyższych, dla ZwCAD - nie wiem niestety. -
Jak narysować trapez równoramienny?
kojacek odpowiedział(a) na dmatusz3 temat w ZWCAD Standard i Professional
Ok - niemniej, cały czas jestem przekonany że cztery kliknięcia to mniej niż pięć... 😉 -
Jak narysować trapez równoramienny?
kojacek odpowiedział(a) na dmatusz3 temat w ZWCAD Standard i Professional
W AutoCAD-zie mam 4 kliki: (1) klik - zaznaczam prostokąt (2) klik - zaznaczam prawy górny wierzchołek (3) klik - po przesunięciu klikam środek górnego boku (4) klik - zanaczam lewy dolny uchwyt. Tu już wiecej nie klikam (przesuwam kursor), a z klawiatury wpisuję 50 i voila (i jeszcze ESC (z klawiatury)): -
Lisp - zlecenie napisania programu
kojacek odpowiedział(a) na Trinity111 temat w Wsparcie programistyczne LISP i VisualLISP
Z mojej strony takie coś: ; -------------------------------------------------------------------------------------------- ; ; by kojacek 2022 ; -------------------------------------------------------------------------------------------- ; (defun C:MOD_WAR (/ d) (if (setq d (cd:SYS_ReadFile nil (findfile "warstwy.dat"))) (if (setq d (vl-remove-if '(lambda (%)(/= (substr % 1 1) "*")) d) ) (progn (cd:SYS_UndoBegin) (foreach % d (LayChProp %)) (cd:SYS_UndoEnd) ) ) ) (princ) ) ; -------------------------------------------------------------------------------------------- ; (defun LayChProp (Data / d s c v p g x y cl :color :tcolor :lweight) (defun :lweight (/ %1 %2 %3) (vl-remove-if 'minusp (if (setq %1 (vl-sort (vl-remove-if-not '(lambda (%2)(wcmatch %2 "ACLNWT*")) (atoms-family 1) )'< ) ) (mapcar '(lambda (%3) (eval (read %3))) %1 ) ) ) ) (defun :tcolor () (vla-getinterfaceobject (vlax-get-acad-object) (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2) ) ) ) (defun :color (i m / r) (if (<= (strlen i) 3) (progn (setq r (abs (atoi i))) (if m (if (and (>= r 0)(<= r 256)) r) (if (and (>= r 1)(<= r 255)) r) ) ) (progn (setq r (cd:STR_Parse i "," t)) (if (and (listp r)(= 3 (length r))) (mapcar 'atoi r) ) ) ) ) (setq d (cd:STR_Parse Data ";" t) l (substr (car d) 2) ) (if (= 5 (length d)) (if (tblobjname "LAYER" l) (progn (setq s (cadr d) ; lay-on-off v (vlax-ename->vla-object (tblobjname "LAYER" l)) ; lay-vlaxobj c (:color (caddr d) nil) ; lay-color p (cadddr d) ; lay-ltype g (atoi (car (cddddr d))) ; lay-lwght x (ssget "_x" (list (cons 8 l) (cons 410 (getvar "CTAB")) ) ) ) (if (member s '("0" "1")) (if (zerop (read s)) (LayOnOff l) ) ) (if c (if (= (type c) 'INT) (vla-put-Color v c) (progn (setq cl (:tcolor)) (vla-SetRGB cl (car c)(cadr c)(caddr c)) (vla-put-TrueColor v cl) ) ) ) (if (tblobjname "LTYPE" p) (vla-put-Linetype v p) ) (if (and g (member g (:lweight))) (vla-put-LineWeight v g) ) (if x (progn (setq x (cd:SSX_Convert x 1)) (foreach % x (vla-put-Color % 256) (vla-put-LineType % "ByLayer") (vla-put-LineWeight % -1) ) ) ) ) ) ) ) ; -------------------------------------------------------------------------------------------- ; (defun LayOnOff (Lay / e d) (if (setq e (tblobjname "LAYER" Lay)) (progn (setq d (entget e)) (setq d (subst (cons 62 (* -1 (cdr (assoc 62 d))) ) (assoc 62 d) d) ) (entmod d) ) ) ) ; -------------------------------------------------------------------------------------------- ; (princ) Potrzebne będą: 1) Załadowany plik CADPL-Pack-v1.lsp (tutaj info: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/) 2) plik o nazwie warstwy.dat i poniższej strukturze: ;;;*name,status,layercolor,layelinetype,layerlineweight *jezdnia (powierzchnia);1;7;Continous;30 *krawężnik (linia);1;1;Continous;30 *plac (powierzchnia);1;147,39,143;%;% *chodnik (powierzchnia);1;147,39,143;%;% *219-linia granicy;1;3;218-500;%;% *211- Nr działki;1;3;%;% *238-Punkt adresowy budynku;1;7;%;% *238-Punkt adresowy;1;7;%;% *994-Nazwa ulicy;1;27;%;30 Działa to wszystko tak: - wywołujemy polecenie MOD_WAR (trzeba załadowac wczesniej kod i Pack-a) - jezeli zostanie znaleziony plik tekstowy warswtwy,dat, to dla danych z kazdej linii wykonywane sa zmiany dla warstw. Skladnia pliku jest prosta: - brane sa pod uwage tylko linie rozpoczynajace sie od * (gwiazdki) - po niej nastepuje nazwa warstwy, - separatorami sa znaki "srednika" ; - po warstwie wystepuja koleno dane: stan warstwy (jezeli jest to 0 warstwa jest ukrywana) dopuszczalne wartosci to 0 i 1 - potem jest kolor warstwy - liczba (od 1 do 255) lub RGB formatu rrr,ggg,bbb (separatorem jest przecinek) - po kolejnym sredniku jest nazwa rodzaju linii, jezeli zostanie znaleziony w rysunku zostanie przypisany do warstwy - na koncu jest szerokosc linii. Tylko dopuszczalne szerokosci, (zobacz: https://kojacek.wordpress.com/2015/11/26/szerokosc-linii/) ogólnie dla wartosci dla których nic nie zmieniamy wstawiamy znak procent (%). program kontroluje poprawnosc dla czesci danych, wtedy je pomija. Plik dat trzeba sobie rozbudowac o kolejne wpisy, -
Lisp - zlecenie napisania programu
kojacek odpowiedział(a) na Trinity111 temat w Wsparcie programistyczne LISP i VisualLISP
Wrzuć "kawałek" rysunku z tymi warstwami jakie są i dla kilku tych warstw napisz jakie chcesz mieć właściwości. To pozwoli coś "zlispować" na szybko jako przykład. Tych parę linijek kodu można napisać w końcu za free. Właśnie jako przykład. Jeszcze jak potwierdzisz że dzięki temu zszedłeś z 2 godzin pracy na 20 sekund... 😉 -
Właśnie o tym mówiłem (PPR). Rzutnię można później przyciąć do "normalengo" prostokąta poleceniem CLIP.
-
PPR (Przekręć Pan Rzutnię) 😉
-
W Ac (od wersji 2010) można zastosować parametryczność. Boki kwadratu trzeba ograniczyć więzami geometrycznymi (równoległość i jednakowa odległość). Dodatkowy parametr wymiarowy, określający długość boku pozwala ją zmienić w dowolnej chwili:
-
Jak wyłączyć skalowanie rastra przy rozciąganiu?
kojacek odpowiedział(a) na czarnula_100 temat w ZWCAD Standard i Professional
Proszę zapoznać się z dwoma zmiennymi systemowymi AutoCAD-a: 1) IMAGEFRAME - wartości 0 / 1 - jeżeli jest zero ramka obrazu nie jest wyświetlana (ale pomimo tego obiekt można zeskalować), oraz 2) FRAMESELECTION - 0 / 1 - jezeli =0, nie można wybierać (zatem skalować, przesuwać, rozciągać) obrazów, wipeout-ów i przyciętych (CLIP-em) bloków (lub XRef). Podsumowując - ustawić dla tych zmiennych 0 i powinno działać. -
Temat filtrów warstw w AutoCAD/ZwCAD oraz dostęp (lub jego brak) LISP-em, był już tutaj omawiany blisko 10 lat temu... ( ). Pomimo upływu czasu wydaje się że niewiele się tutaj zmieniło. (?)
-
Obrys konturu polilinii z szerokością
kojacek odpowiedział(a) na dmatusz3 temat w ZWCAD Standard i Professional
Można też "rozbijać" polilinie na poszczególne segmenty nie tracąc ich szerokosci. Tutaj :: https://kojacek.wordpress.com/2015/11/01/rozbijanie-polilinii/ program lisp-owy, który powstał przeszło 20 lat temu... -
Zmiana stylu wymiarowania jeśli zostanie wybrany inny.
kojacek odpowiedział(a) na zwonko temat w ZWCAD Standard i Professional
Napisałem że lekko przerobić. I zasada nie nie jest zgoła inna. Tu (po tej lekkiej przeróbce) zmiana dowolnego stylu wymiarowania na (np.) A, automatycznie ustawiałoby styl wymiarowania na (np.) B. W konsekwencji (przy włączonym reaktorze) nigdy nie byłoby możliwe ustawienie stylu A... -
Zmiana stylu wymiarowania jeśli zostanie wybrany inny.
kojacek odpowiedział(a) na zwonko temat w ZWCAD Standard i Professional
Można lekko przerobic: https://kojacek.wordpress.com/2021/05/08/dimstyle-reactor/ -
Zamiana obiektów aka znajdź i zamień
kojacek odpowiedział(a) na kacper1710 temat w Wsparcie programistyczne LISP i VisualLISP
W tym pliku lampy są jednak blokami. Anonimowymi (wprawdzie) ale blokami. Zamiana bloku anonimowego na nieanonimowy szczególnie trudnym zadaniem nie jest. (Tutaj) problem jest jednak innej natury. Każde wstawienie lampy jest innym blokiem (właśnie anonimowym). Oznacza to że np. 10 wstawień tej samej lampy, tworzy 10 wstawień różnych bloków (a nie jednego) jak być powinno. Rozwiązaniem byłoby: - po wskazaniu dowolnego bloku anonimowego, jego zamiana na nieanonimowy (czyli z nazwą)(,)(oraz)(następnie) - dla każdego wtawienia bloku anonimowego sprawdzenie jego elementów czy są zgodne z definicją tegoż poprzedniego (czyli czy wszystkie obiekty są takie same (ale nie te same)) - jeżeli byłaby zgodność, blok anonimowy zastępowany jest tym z nazwą... Kiedyś się czym podobnym bawiłem (choć w innym celu). Jeśli będzie jakaś wolna chwila coś wrzucę. Być może będzie przydatne
- Poprzednia
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Dalej
-
Strona 2 z 11