-
Postów
257 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
41
Treść opublikowana przez kojacek
-
Najmniejszy opisany prostokąt - LISP
kojacek odpowiedział(a) na Iskra temat w Wsparcie programistyczne LISP i VisualLISP
Jeśli można tutaj (chyba że admin przeniesie do innego wątku), od samego początku. Czyli wybór obiektu. Niech będzie prosta funkcja o nazwie Sel do wyboru jednego obiektu. Do testowania zwracać będzie wynik Ok lub Źle. W kolejnych krokach trochę urośnie, ale pozwoli to prześledzić działanie. Podobnie jak w twoim kodzie, chcemy wybrać obiekt (polilinię). Spójrz: (defun Sel (/ e) (if (setq e (entsel "\nWskaż polilinię: ")) (princ "\nOk") (princ "\nŹle. ") ) ) Powiedzmy szczerze że żadnych rewelacji, nie trafisz - masz źle, wybierzesz jest Ok. Powiela twój błąd - możesz wybrać cokolwiek, a chcesz przecież polilinię. Zatem druga przymiarka: (defun Sel (/ e d) (if (and (setq e (entsel "\nWskaż polilinię: ")) (= (cdr (assoc 0 (setq d (entget (car e))))) "LWPOLYLINE") ) (princ "\nOk") (princ "\nŹle. ") ) ) W and od razu pobieramy dane obiektu (zmienna d), jednocześnie sprawdzamy czy to polilinia. Lepiej? Lepiej ale... w twoim przypadku trzeba wybrać polilinię zamkniętą raczej. Zatem popatrzmy: (defun Sel (/ e d) (if (and (setq e (entsel "\nWskaż polilinię: ")) (= (cdr (assoc 0 (setq d (entget (car e))))) "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 d)))) ) (princ "\nOk") (princ "\nŹle. ") ) ) and ma teraz trzy warunki ( 1.wybraliśmy obiekt, 2.polilinię i 3.zamkniętą). Zamknięta polilinia w DXF to kod 70. Musi mieć wartość 1 (oraz ewentualnie 129). Jest dużo lepiej. Ale to nie koniec. Właściwie, to powinieneś wybrać zamkniętą polilinię ale o co najmniej 3 segmentach... Więc zmieniamy sel: (defun Sel (/ e d) (if (and (setq e (entsel "\nWskaż polilinię: ")) (= (cdr (assoc 0 (setq d (entget (car e))))) "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 d)))) (>= 4 (cdr (assoc 90 d))) ) (princ "\nOk") (princ "\nŹle. ") ) ) I teraz mamy już bardziej (niż mniej) poprawny kawałek kodu do wybrania polilini... -
Najmniejszy opisany prostokąt - LISP
kojacek odpowiedział(a) na Iskra temat w Wsparcie programistyczne LISP i VisualLISP
Nie wydaje mi się aby zabawy z obracaniem obiektów, będą efektywniejsze niźli LISP który wskazałem we wcześniejszym poście. Wykorzystuje on algorytm Grahama (wyznaczenie otoczenia punktów), sprowadzając wynik ostatecznie w uproszczeniu do najmniejszego prostokąta (o co w rzeczywistości chodzi). Wydaje mi się że działa dobrze w większości zastosowań. -
Najmniejszy opisany prostokąt - LISP
kojacek odpowiedział(a) na Iskra temat w Wsparcie programistyczne LISP i VisualLISP
Co do znalezienia najmniejszego prostokąta (opisującego płaską figurę) zobacz tutaj: http://www.theswamp.org/index.php?topic=33607.msg389707#msg389707 Jest tam program do ściągnięcia: http://www.theswamp.org/index.php?action=dlattach;topic=33607.0;attach=15988 Potestuj i zobacz czy spełnia twoje oczekiwania. Co do lisp-ów zaś, zobacz tutaj: http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html To o takim zjawisku o nazwie CADPL-Pack. Jest to zestaw funkcji bibliotecznych, których użycie (także w twoim omawianym tutaj problemie), znacznie może ułatwić pracę. Również sama dyskusja przy poczęciu i rozwoju Pack-a, (w mojej opinii) może być źródłem porządnej lisp-owej wiedzy. W tej chwili widzę już na początku wiele błędów w twoim kodzie. Chętnie (w miarę możliwości czasowych) służę pomocą, w ich ewentualnej poprawie i wyjaśnieniu na czym polegają. -
-
Ok, to szybciej. 1) Rysuję wymiar kąta małego 2) Wybieram wymiar (z uchwytu wymiaru) szeregowy, wskazuję punkt 3) wymazuję wymiar z 1) (mały) :)
-
W AutoCAD-zie zrobiłem to (przed chwilą) tak: 1. Narysowałem łuk (na zewnątrz linii) 2. Poleceniem _DIMARC (WYMŁUK) go zwymiarowałem 3. Usunąłem łuk 4. Ręcznie edytowałem wartość, usunąłem znak długości łuku Może być?
-
Można to zrobić np. LISP-em: (sqrt 49) zwraca 7.0... Symbolem zatem będzie pierwiastek (?)
-
ZWCad 2015 SP 3.1 - problem z wyświetlaniem plików dwg
kojacek odpowiedział(a) na Chris temat w ZWCAD+ 2015
Bez urazy, ale test ów przypomina radzieckie badania dotyczące stopniowej utraty słuchu muchy w zależności od ilości nóg... Po wyrwaniu ostatniej nogi i komendzie "Idi-mucha!" akademicy radzieccy udowodnili całkowity brak reakcji na bodźce dźwiękowe... ;) -
ZWCad 2015 SP 3.1 - problem z wyświetlaniem plików dwg
kojacek odpowiedział(a) na Chris temat w ZWCAD+ 2015
To jest raczej wada, w moim przekonaniu. AutoCAD podstawia czcionkę zastępczą zawsze. Oczywiście można określić swoje preferencje, ale nawet gdy to się zignoruje, wstawiany jest standard. -
ZWCad 2015 SP 3.1 - problem z wyświetlaniem plików dwg
kojacek odpowiedział(a) na Chris temat w ZWCAD+ 2015
O to, to... właśnie. Brakuje pliku shx tylko dla symboli, dla czterech pozostałych stylów to: (3x) isocp.shx (+ bigfont.shx) oraz (1x) txt.shx -
ZWCad 2015 SP 3.1 - problem z wyświetlaniem plików dwg
kojacek odpowiedział(a) na Chris temat w ZWCAD+ 2015
W AutoCAD widać wszystko ok. Na początku jest komunikat o braku czcionki, chodzi o symbole. Na zrzucie pokazuję jakiej czcionki i dla jakiego stylu: -
ZWCad 2015 SP 3.1 - problem z wyświetlaniem plików dwg
kojacek odpowiedział(a) na Chris temat w ZWCAD+ 2015
To raczej niemożliwe. Tekstów brak wszędzie, w opisach, atrybutach, wymiarach. Ponadto, takie działanie nie miałoby żadnego uzasadnienia. AutoCAD ma mechanizm podstawiania czcionek zastępczych (z określeniem co może być zastąpione). Nie ma sytuacji, aby tekst się nie pojawił - gdy nie ma żadnej odpowiedniej czcionki, AutoCAD, podstawia standardową dla wszystkich tekstów. Styl tekstu STANDARD, jest nieusuwalny. -
ZWCad 2015 SP 3.1 - problem z wyświetlaniem plików dwg
kojacek odpowiedział(a) na Chris temat w ZWCAD+ 2015
Nie wiem czy dobrze czytam i patrzę, ale odnoszę wrażenie że w AutoCAD widać wszystko dobrze? -
Jak narysować prostopadłą linie od dowolegno punktu na łuku
kojacek odpowiedział(a) na lukasz215a temat w ZWCAD+ 2015
Sprawdź teraz: ;;; (vl-load-com) ;;; (defun C:CDIST (/ sa sb vo re) (if (setq sa (nentselp "\nWskaz pierwszy punkt na krzywej: ")) (if (setq sb (nentselp "\nWskaz drugi punkt na krzywej: ")) (if (and (eq (car sa)(car sb))) (progn (setq vo (vlax-ename->vla-object (car sa))) (setq re (abs (- (vlax-curve-getDistAtPoint vo (vlax-curve-getClosestPointTo vo (cadr sa) t) ) (vlax-curve-getDistAtPoint vo (vlax-curve-getClosestPointTo vo (cadr sb) t) ) ) ) ) ) (princ "\nWskazano rózne obiekty. ") ) (princ "\nNic nie wskazano. ") ) (princ "\nNic nie wskazano. ") ) (if re re (princ)) ) -
Jak narysować prostopadłą linie od dowolegno punktu na łuku
kojacek odpowiedział(a) na lukasz215a temat w ZWCAD+ 2015
Zawsze można użyć LISP-a: Poniższy kod pozwoli zmierzyć długość elementu dowolnej krzywej pomiędzy dwoma punktami na niej wskazanymi: ;;; (vl-load-com) ;;; (defun C:CDIST (/ sa sb vo) (if (setq sa (nentselp "\nWskaz pierwszy punkt na krzywej: ")) (if (setq sb (nentselp "\nWskaz drugi punkt na krzywej: ")) (if (and (eq (car sa)(car sb))) (progn (setq vo (vlax-ename->vla-object (car sa))) (abs (- (vlax-curve-getDistAtPoint vo (vlax-curve-getClosestPointTo vo (cadr sa) t) ) (vlax-curve-getDistAtPoint vo (vlax-curve-getClosestPointTo vo (cadr sb) t) ) ) ) ) (princ "\nWskazano rózne obiekty. ") ) (princ "\nNic nie wskazano. ") ) (princ "\nNic nie wskazano. ") ) (princ) ) . -
Jak narysować prostopadłą linie od dowolegno punktu na łuku
kojacek odpowiedział(a) na lukasz215a temat w ZWCAD+ 2015
Bezpośrednio nie ma. Choć można wysmażyć krótkiego lisp-a. Inna sprawa - w węzłach polilini nie będzie raczej "prostopadłych". -
Jak narysować prostopadłą linie od dowolegno punktu na łuku
kojacek odpowiedział(a) na lukasz215a temat w ZWCAD+ 2015
Nie tam żebym upierał się aby odwodzić was od komplikowania sobie pracy, ale... może warto wykorzystać opcję _block do podziału? -
Swego czasu (miljon lat temu...) w AutoCAD-zie, robiłem coś takiego: http://kojacek.republika.pl/bkg.html
-
Własny przycisk zaznaczający linie
kojacek odpowiedział(a) na GrzegorzBe temat w ZWCAD i ZWCAD+ 2012
To jeszcze prostsze ;) Język ów nazywa się: AutoLISP -
Własny przycisk zaznaczający linie
kojacek odpowiedział(a) na GrzegorzBe temat w ZWCAD i ZWCAD+ 2012
To proste, z wymienionej wyżej linii usuń sekwencję znaków "_x" Wtedy wywołanie: (if (setq % (ssget '((0 . "LINE")(62 . 5)(410 . "Model"))))(sslength %) 0) poprosi Cię o wskazanie obiektów -
Własny przycisk zaznaczający linie
kojacek odpowiedział(a) na GrzegorzBe temat w ZWCAD i ZWCAD+ 2012
Nie tam żebym się wtrącał czy coś,... ale wystarczy w linii poleceń wpisać: (if (setq % (ssget "_x" '((0 . "LINE")(62 . 5)(410 . "Model"))))(sslength %) 0) i zaakceptować enterem... Takie proste (bezbajtowe wręcz) wklepanie z klawiaturki, ma tę przewagę nad skompilowanymi plikami *.zel (nic im nie ujmując), że można zawsze zmienić dowolnie albo rodzaj obiektu czy kolor, bez tworzenia nowego pliku, definicji polecenia i podpinania ikonek. Może to i mniej spektakularne rozwiązanie, ale w mojej opinii bardziej elastyczne... Jutro kolega będzie chciał wybrać czerwone łuki... i co będzie? -
Kombinator. Z tej samej bajki co kombinerki i kombinezon... :)
-
-
Aparat do robienia chmury punktów. Bezsprężynowy... ;)
-
Dobre! Gratulacje! Też coś kombinowałem na początku z tym T, ale coś takie mało teowate mi się zdałowało, więc zarzuciłem... :)