-
Postów
268 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
43
Treść opublikowana przez kojacek
-
entmod na wielu obiektach
kojacek odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
Zobacz to: (setq NowyZ 152) (defun C:ZZ (/ ss :chFaceZ) (defun :chFaceZ (En Val / l d n p) (setq l '(10 11 12 13) d (entget En) n (vl-remove-if '(lambda (%)(member (car %) l)) d) p (vl-remove-if-not '(lambda (%)(member (car %) l)) d) p (mapcar '(lambda (%) (list (car %)(cadr %)(caddr %)(+ Val (cadddr %)))) p) ) (entmod (append n p)) ) (if (setq ss (ssget '((0 . "3DFACE")))) (foreach % (cd:SSX_Convert ss 0) (:chFaceZ % NowyZ) ) ) (princ) ) Dodaje wartość zmiennej globalnej NowyZ do składowej z każdego wierzchołka wybranych 3DFace. Wykorzystuje cd:SSX_Convert ze wspomnianego CADPL-Pack'a -
entmod na wielu obiektach
kojacek odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
Prawie wszystko. Począwszy od: 1) braku zmiennych lokalnych (zobacz: https://kojacek.wordpress.com/2015/12/20/symbole-zmienne/). 2) Potem pomysł z mnożeniem wartości współrzędnej z. Operacje dodawania/odejmowania wydają się być chyba bardziej naturalne (sprawdź mnożenie 1 i 0 przez dowolną wartość). Na marginesie: zmiana składowej Z wszystkich punktów obiektu, o tę samą wartość, to w rzeczywistości przesunięcie go w przestrzeni - to można też robić prościej (command MOVE, lub vla-Move dla ActiveX) 3) Ponadto ja bym nie użył (ze względu na wydajność) repeat, tylko raczej foreach dla listy otrzymanej ze zbioru wskazań. 4) Tak samo zmieniłbym całą listę, i tylko raz wywołał entmod. Oczywiście dwa ostatnie punkty nie są szczególnymi błędami. Poczytaj też o: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/ Jest tam parę dość użytecznych rzeczy. -
Punkt przecięcia podczas przesuwania [rozwiązany]
kojacek odpowiedział(a) na jacnightingale temat w ZWCAD Standard i Professional
Również działa poprawnie w każdej wersji AutoCAD-a, począwszy od wersji 13, czyli od...1994 roku. -
Pomysł w mojej opinii jest chybiony. Wynikać może z niezrozumienia idei i mechanizmu przechowywania grup. Grupy służą do łączenia kilku obiektów, w celu operowania nimi jako jedną jednostką. Jest tu istotna różnica w zastosowaniu grup i bloków. Te byty nie powinny być z założenia traktowane zamiennie. Innymi słowy grupy w rzeczywistości są zbiorami wskazań, dodatkowo posiadającymi rozszerzone możliwości, jak nazwa, czy możliwość zapamiętania. Najważniejszą zaś ich cechą, jest to że dowolny obiekt może należeć do więcej niż jednej grupy. Bloki nie posiadają takiej możliwości. Kopiowanie i wklejanie grupy z jednego rysunku do drugiego, choćby z tego powodu (i nie tylko tego jednego) jest pozbawione sensu. Do takich operacji idealnie nadają się właśnie bloki. Proces wstawiania bloków, przy wykorzystaniu np. DesignCenter (chyba że zwCAD go nie ma?), nie jest pracochłonny i trwa od ułamków, do paru sekund.
-
Associative Circle and Centerline
kojacek odpowiedział(a) na JasW temat w Wsparcie programistyczne LISP i VisualLISP
Przechowywanie uchwytu w kodzie DXF 1005 ma tę właściwość, że zostaną zachowane (przekształcone odpowiednio by zachować połączenia) symboliczne wskaźniki do obiektów, podczas takich operacji jak zapisywanie bloku, kopiowanie elementów do innego rysunku, dołączania jako xref itd. Proteza w postaci zapisu uchwytu w kodzie 1000 nigdy tego nie zagwarantuje. -
Tworzenie nowego układu
kojacek odpowiedział(a) na geo-tech temat w Wsparcie programistyczne LISP i VisualLISP
Nie ma problemu. Zainteresuj się CADPL-Pack'iem: http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html Potem, wczytaj go, oraz poniższą funkcję: (defun -MakeLayout (Start End Pref / i n l) (setq i Start l (layoutlist) ) (while (< i End) (progn (setq n (strcat Pref (itoa i))) (if (not (member n l)) (vla-Add (cd:ACX_Layouts) n) ) (setq i (1+ i) l (cons n l)) ) ) ) Ma ona trzy argumenty: Start - to liczba całkowita od jakiej zaczyna się licznik, End - to koniec, Pref to łańcuch tekstowy, nazwy układu. Wywołujesz ją w ten sposób: (-MakeLayout 1 201 "Szkic") i po chwili masz te Layouty... kojacek (https://kojacek.wordpress.com) -
To wszystko zależy z czym wiążesz przyszłość. Jeżeli masz ambicje być programistą i chcesz pisać aplikacje (nieważne czy pod CAD czy więcej), oczywiście idź w .NET + C#. Przy okazji możesz "dotknąć" też AutoLISP-a (czy VL), nie zaszkodzi, a może pomóc (inne spojrzenie). Jeśli zaś, będąc inżynierem (mechanikiem/elektrykiem/budowlańcem/etc.), i pracując w programach autocadopodobnych (czy w nim samym) chcesz tylko, (dużo dużo) więcej z niego "wycisnąć" (do tego małym kosztem) ucz się AutoLISP-a. Poszerzy twoje horyzonty dotyczące budowy i struktury rysunku (modelu), samej aplikacji. Taka wiedza może naprawdę poważnie zwiększyć codzienną wydajność, uprościć i ułatwić pracę, zmniejszyć ilość błędów, zautomatyzować wiele czynności. O swego rodzaju "frajdzie" nie wspomnę
-
Błąd vlax-ldata w wersji 2017
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
Jak coś ciekawego to wrzucaj. Jeśli się uda będziem prostować ;) -
Błąd vlax-ldata w wersji 2017
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
Dzięki . Cieszę się że mogłem pomóc. Podaj teraz jakie pary kropkowe zapisujesz i jak wygląda błąd. Może da się też coś zaradzić? -
Błąd vlax-ldata w wersji 2017
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
Spróbujmy jednak to naprawić - nieco naokolo. Zrób teraz tak: Załaduj CADPL-Pack'a Zapisz w 2017 LDATA - tak aby były zapisane źle Wywołaj: (cd:ENT_SetDXF (cd:DCT_GetDict (cd:DCT_GetDict (namedobjdict) "TEST") "T") 300 "(\"Abc Xyz\")") i następnie odczytaj dane. Jeżeli będzie ok, to w ten sposób będziesz mógl obejść ten problem, do czasu gdy żółte rączki go nie naprawią... -
Błąd vlax-ldata w wersji 2017
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
a wywołaj (w 15 / 17): (vlax-ldata-list "TEST") jakie są różnice? -
Błąd vlax-ldata w wersji 2017
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
Trzeba sprawdzić czy błąd występuje przy zapisie czy przy odczycie LDATA. Zróbmy tak: odczytamy zapisane dane nie mechanizmem LDATA, tylko zwykłym dostępem do obiektów niegraficznych. Dla uproszczenia warto wykorzystać CADPL-Pack'a, dostępnego tutaj: http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html . O Packu, możesz też poczytać tutaj: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/ . LDATA to nic innego jak dane zgromadzone w obiekcie VLO_VL, w zadanym słowniku. Zatem: Wykorzystamy funkcję o nazwie cd:DCT_GetDict. Zatem: Ściągnij CADPL-Pack'a i go załaduj. Wywołaj: (cdr (assoc 300 (entget (cd:DCT_GetDict (cd:DCT_GetDict (namedobjdict) "TEST") "T")))) oczywiście dla wcześniej zapisanych danych. Podaj (zacytuj) co zwróciło. Wtedy zobaczymy co się da zrobić (jeśli błąd jest przy odczycie, da się to obejść, jeśli przy zapisie... to raczej nie) -
Problem z trybem kopiowania wielokrotnego [rozwiązany]
kojacek odpowiedział(a) na Bartek1977 temat w ZWCAD Standard i Professional
To rozwiązanie przypisuje opcję Wiele (Multiple) do kopiowania, ale tylko wywoływanego ze wstążki, dla wywołania ze skrótu, z linii poleceń nie działa, zatem jest tylko pewną protezą. Ale mam inne pytanie - po co dawać dla wersji PL skrót W, a dla angielskiej M? Nie można dać wszędzie M, (analogicznie przecież: jest _copy, a nie kopiuj)? -
Oby nie był to "Rok Kulawej Kury"... ;)
-
Myślę że Undo i Oops to (jednak) nie to samo.
-
Wielkość i ilość poprawek do ostatniego ZwCAD-a (kroczącego nieustannie gdzieś między wersją alpha i ciągle jeszcze bardzo wczesną beta), pozwala przypuszczać że ów "bieg czasu" będzie bardzo długi. Przy spełnieniu warunku że "odpowiednik" w tym czasie nie będzie zmierzał do przodu...
-
Niech mnie ktoś oświeci - BATTING (czy ZIGZAK) malujecie polilinią? A w jakim celu? Nie można użyć w ZwCAD złożonego rodzaju linii?
-
Problem z polskimi znakami [rozwiązany]
kojacek odpowiedział(a) na Rafał Ruszkiewicz temat w ZWCAD Standard i Professional
Ten rysunek (wszystkie tu przedstawione wersje) otwierany w AutoCAD, i zapisywany we wszystkich formatach DWG (od R14 przez 2000, 2004, 2007, 2010 i 2013), wyświetla (zawsze) poprawnie polskie znaki. Nie powinno to dziwić, bowiem definicje stylów tekstu korzystających z czcionek TTF, są we wszystkich tych wersjach takie same. Inne teksty (tutaj występujące wieloliniowe MTEXT), korzystają z odniesień do czcionek TTF (poza stylem), i też są wyświetlane poprawnie, choć budowa wewnętrzna opisu MTEXT nieznacznie się różni w kolejnych wersjach. Są to zmiany polegające na dodatkowych rozszerzeniach w nowszych wersjach, przy zachowaniu zgodności "w dół", aż do wersji R13 (odkąd się pojawił MTEXT). Jeśli więc występują jakieś błędy, to raczej z powodu przypadłości ostatniego ZwCAD-a. -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kojacek odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
Problemem są zmienne lokalne, a właściwie ich brak. Zresztą w kodzie problemów jest więcej. A co tam z LIGHTWEIGHTPOLYLINE? Doczekam się wiarygodnego przykładu? -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kojacek odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
No to może jakiś plik DXF z takim obiektem, albo DWG, żeby można entget-em pobrać "LIGHTWEIGHTPOLYLINE"... albo może jakiś lispowy kod typu entmake z "LIGHTWEIGHTPOLYLINE"? Da się? -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kojacek odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
To jakaś zmiana w oficjalnej specyfikacji DXF? Proszę o źródło. -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kojacek odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
Szczerze przyznam że po raz pierwszy spotykam się z nazwą w DXF (ename = "LIGHTWEIGHTPOLYLINE"). -
Jeśli zadziała mój kod z linku który podałem powyżej to właśnie tak. Jego działanie polega na zamianie kolorów dwóch elementów: tła ekranu graficznego i krzyża nitek, bowiem przez domniemanie przyjmuje się że są ustawione kontrastowo. Zatem jeśli tło masz RGB 30,40,48 a krzyż biały, polecenie BKG zamieni ten stan rzeczy: tło stanie się białym a kursor RGB 30,40,48. Oczywiście dotyczy to każdej pary kolorów, ustawionych jako tło i krzyż nitek.
-
Ponadto dla użytkowników (nie tylko) AutoCAD-a (który nie ma zmiennej "BKGCOLOR"), od wielu już lat, taki oto przełącznik: https://kojacek.wordpress.com/autolisp/interfejsy/kolor-tla-ekranu-graficznego-autocad-a/