perlon

Użytkownik forum
  • Zawartość

    289
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    19

Ostatnia wygrana perlon w Rankingu w dniu 4 Luty

perlon posiadał najczęściej polubioną zawartość!

1 obserwujący

O perlon

  • Tytuł
    Nowicjusz

Ostatnie wizyty

Blok z ostatnimi odwiedzającymi dany profil jest wyłączony i nie jest wyświetlany użytkownikom.

  1. 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?
  2. 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?
  3. 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ć.
  4. (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. ???
  5. perlon

    Zmienna systemowa ORBITAUTOTARGET

    W SP2 beta nie zostało to poprawione.
  6. perlon

    Wymiar z podziałem na "n" cześci

    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)
  7. perlon

    Wymiar z podziałem na "n" cześci

    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)
  8. perlon

    Wymiar z podziałem na "n" cześci

    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.
  9. perlon

    Wymiar z podziałem na "n" cześci

    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") )
  10. perlon

    Wymiar z podziałem na "n" cześci

    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)
  11. perlon

    Wymiar z podziałem na "n" cześci

    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) )
  12. 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.
  13. 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.
  14. A może to ci się nada https://kojacek.wordpress.com/2018/05/17/numerator/
  15. Należałoby najpierw uściślić czy chodzi ci o wstążkę czyli z angielska ribbon w stylu wstążkowym interfejsu, Czy może jednak menu rozwijanie z interfejsu klasycznego to co pokazałeś na własnym zrzucie ekranu. Kwestia semantyki. Jeżeli to pierwsze to trzeba się bawić edytorem plików .cui (Tools->Customize->Customize interface) Jeżeli to drugie to poszukaj w googlu hasła autocad custom menu pull-down; i polecenia menuload Tutaj masz co nieco o tworzeniu własnego menu. https://www.afralisp.net/archive/lispa/menu1.htm http://www.thirdistudio.com.au/AutoCADmenu1.html no i oficjalna strona autodesku https://knowledge.autodesk.com/support/autocad-lt/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-LT/files/GUID-90B274D0-C750-4ADA-9D3E-2C07B157F6A3-htm.html Większość nakładek ma jakieś swoje menu. Można podejrzeć jak to jest zrobione np. w Profilku naszego kolegi forumowego Gruzin albo w nakładkach e-cad. Każde takie menu siedzi w pliku *.mnu Zdaje się, że nowe wersje zwcada nie mają już tego pliku ale w wersji 2015+ taki plik jest w kartotece {user}\AppData\Roaming\ZWSOFT\ZWCAD\2015\en-US\Support Można go sobie pooglądać i zrobić coś a'la w podobie.