kma.s Opublikowano 20 Stycznia 2019 Zgłoś Udostępnij Opublikowano 20 Stycznia 2019 Powiedzmy, że mamy jakiś odcinek oznaczający np. zakres gdzie jest element o stałym rozstawie. Chciał bym podać rozstaw oraz wymiar całkowity odcinka na jednej linii wymiarowej tak jak to pokazano na screenie. Normalnie robię to ręcznie wpisując w polu tekstu wymiarowego "n x rozstaw = <>" Zastanawia mnie czy ktoś z Was natknął się na nakładkę albo skrypt lisp pozwalający generować taki wymiar automatycznie. tzn tworzę tylko jedną linię wymiarową od poczatku do końca zakresu a potem wpisuję "n" i program sam generuje tekst "n x rozstaw = <>"? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 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) ) Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 (edytowane) 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) Edytowane 21 Stycznia 2019 przez perlon bobik_123, alf, dmatusz3 i 1 inny 4 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 Pozwoliłem sobie zapisać skrypt do pliku podzial_wymiaru_n.lsp Po uruchomieniu lispa (wystarczy przeciągnąć plik w obszar rysunku) będą dostępne 2 nowe polecenia: ww1 - dodaje "podział" do istniejącego wymiaru, ww2 - dodaje nowy wymiar i "podział". Martin_S i bobik_123 2 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 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") ) Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Martin_S Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 (edytowane) czy jest mozliwe uproszczenie np. jesli wymiarowanie jest w dwg w mm to zaokrąglanie jest proste do pełnych mm np. 1000 jako 5x200 a nie 5x200.00 w przypadku cm 100 jako 5x20.00 w Polsce lepiej z przecinkiem wg standaryzacji 5x20,0 w m 1 jako 5x0,200 ps. fajny pomysł do zastosowań niestandardowych, np. strzemiona w belkach i słupach😉 Edytowane 21 Stycznia 2019 przez Martin_S korekta Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 (edytowane) 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. Edytowane 21 Stycznia 2019 przez perlon Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adam Klaczek Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 Może chodzi o INSUNITS? kruszynski 1 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Martin_S Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 warto by było "sprzężyc" z bieżącym stylem wymiarowania INSUNITS mówi o jednostce w rys. , a ja wyżej o stopniu dokładności wzgl. jednostki: mm 1 ; cm 0,1 ; m 0,001 dla mm ogólnie jest tak: można obok we właściwościach wyedytować i skasować te .00 ale to zajmuje jakiś czas 😉 i po problemie Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 (edytowane) 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) Edytowane 21 Stycznia 2019 przez perlon Martin_S 1 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Martin_S Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 super dla mm w dwg działa to tak: dla cm w dwg działa to tak: Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 (edytowane) 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) Edytowane 21 Stycznia 2019 przez perlon Martin_S, Adam Klaczek i alf 1 2 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Martin_S Opublikowano 21 Stycznia 2019 Zgłoś Udostępnij Opublikowano 21 Stycznia 2019 dla cm wygląda to teraz tak, jest przecinek dla wersji PL Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kma.s Opublikowano 30 Stycznia 2019 Autor Zgłoś Udostępnij Opublikowano 30 Stycznia 2019 Chylę czoła i pięknie dziękuję Sam pewnie bym tyle bajerów nie zaimplementował. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.