-
Postów
1474 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
93
Treść opublikowana przez kruszynski
-
Importowanie i eksportowanie właściwości rysunku
kruszynski odpowiedział(a) na Marek-M temat w ZWCAD+ 2015
W załączniku poprawka która nadpisuje właściwości. ImportWlasciwosci.zel -
Automatyczna numeracja
kruszynski odpowiedział(a) na Harry temat w Wsparcie programistyczne LISP i VisualLISP
Mogę przygotować takiego LISPa, ale proszę na początek o odpowiedzi na kilka pytań: Automatyczną numerację atrybutów można różnie zrozumieć. np czy kolejne atrybuty w tym samym bloku maja mieć kolejne numery? czy jeden atrybut w różnych blokach ma mieć kolejne numery? Treść która była wcześniej ma się nadpisywać? czy numer ma się dopisywać przed/po aktualnej treści? Jak chciałby Pan używać funkcji? czy chce Pan wybierać bloki ? czy mają się same wybierać np po nazwie / warstwie / dotychczasowej treści któregoś z atrybutów? Może udostępniłby Pan jakiś mały przykład pliku, w którym moglibyśmy zobaczyć jak będzie wyglądał rysunek przed i jak jak powinien wyglądać rysunek po użyciu funkcji. -
Pliki fas, to LISP skompilowany w AutoCADzie. Proszę skontaktować się z autorem nakładki. Dysponując kodem źródłowym twórca może zaszyfrować plik w ZWCADzie do formatu zel, który będzie mógł Pan wczytać.
-
Importowanie i eksportowanie właściwości rysunku
kruszynski odpowiedział(a) na Marek-M temat w ZWCAD+ 2015
OK, dodam taką możliwość -
Zmiana koloru tła - Działało w zw2015... nie działa w zw2017 :(
kruszynski odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
chciałem podejrzeć wartość tej właściwości na działającym ZWCADzie. (setq display (vla-get-display (vla-get-preferences (vlax-get-acad-object)))) ( vlax-dump-object display t ) zobaczyłem że nil i (RO) czyli ReadOnly. więc zapytałem ZWSOFT jak można to ogarnąć Dam znać co odpowiedzą. -
Zmiana koloru tła - Działało w zw2015... nie działa w zw2017 :(
kruszynski odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
tak na szybko to dlatego, że IZcadPreferencesDisplay nie ma jeszcze właściwości GraphicsWinModelBackgrndColor postaram się ustalić jak można to rozwiązać -
ok, w przyszłości dodam możliwość pomiaru względem aktualnego UCS.
-
Wierzchołki polilini
kruszynski odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
A mógłby Pan napisać coś więcej o tym co rozumieć jako "nie działa" ? -
plik zwcad.pat, wzory kreskowania
kruszynski odpowiedział(a) na alf temat w ZWCAD Standard i Professional
Nie znam sposobu żeby ustawić w ZWCAD wzory kreskowania w innym katalogu. -
plik zwcad.pat, wzory kreskowania
kruszynski odpowiedział(a) na alf temat w ZWCAD Standard i Professional
Załączam jeszcze pliki wzorów Hex.pat SOIL.pat -
plik zwcad.pat, wzory kreskowania
kruszynski odpowiedział(a) na alf temat w ZWCAD Standard i Professional
Wzoru kreskowania HEX nie ma w pliku ZWCAD.pat w w ZWCAD 2017. Utworzyłem pliki soil.pat i hex.pat w katalogu: c:\Users\xxx\AppData\Roaming\ZWSoft\ZWCAD\2017\en-US\Support\ To wystarczyło, żeby wzory stały się w dostępne ZWCAD 2017. -
Wierzchołki polilini
kruszynski odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
to może tak: (defun c:zz () (setq sciezka(car(entsel "\nWskaż ścieżkę wyciągania \n"))) (print "\nWskaż wszystkie powierzchnie") (setq pow3D (ssget)) (command "_Extrude" pow3d "" "_P" sciezka "" ) ) -
Wierzchołki polilini
kruszynski odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
Jeszcze czegoś nie rozumiem, Kiedy czytałem to pierwszy raz pomyślałem o wyciąganiu w sensie zamiany np prostokąta na prostopadłościan. Jeśli tak, to to się robi funkcją _sweep a nie _extrude. W takim przypadku cały kod mógłby wyglądać tak: (defun c:zz () (setq sciezka(car(entsel "\nWskaż ścieżkę wyciągania \n"))) (print "\nWskaż wszystkie powierzchnie") (setq pow3D (ssget)) (setq i 0) (while (< i (sslength pow3D)) (setq JednaPow (ssname pow3D i )) (command "_sweep" JednaPow "" sciezka ) (setq i (1+ i) ) ) ) Chyba że chodzi o wyciąganie pojedynczej powierzchni w bryle (_extrude) ale to już ciut bardziej skomplikowane / -
Wierzchołki polilini
kruszynski odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
A jakiś komunikat błędu jest? czy jak nie działa Bardziej dziwi mnie że działa na powierzchni 3d niż że nie działa. To jest zupełnie niepotrzebne: (setq wszystkie nil ) (setq wszystkie (append wszystkie (list (cdr JednaPow)))) Jedną powierzchnię ze Zbioru selectionset wybiera się tak: (ssname pow3D i) gdzie i to kolejny index. kod: (setq JednaPow (assoc 10 pow3D)) Wyświetla mi komunikat: Error: incorrect type - <Selection Set: ffd188c0> I w sumie racja bo assoc wybiera z listy element powiązany z liczbą 10. a nie 10 czy 11 element z listy. -
Wierzchołki polilini
kruszynski odpowiedział(a) na Pawcyk temat w Wsparcie programistyczne LISP i VisualLISP
(setq wierzchołek (assoc 10 polilinia)) to współrzędne w formacie (10 x y z) A Ty chcesz odczytywać współrzędne z listy wszystkich współrzędnych, a nie z listy współrzędnych jednego wierzchołka (setq x2 (nth 0 wierzchołki) y2 (nth 1 wierzchołki)) Powinno być: (setq wierzchołek (cdr wierzchołek )) (setq x2 (nth 0 wierzchołek) ) (setq y2 (nth 1 wierzchołek) ) Czyli całość: (defun c:yy () (setvar "dimzin" 2) (setq PozOdn (getreal "\nPodaj poziom odniesienia \n")) (setq P1 (getpoint "\nWskaz początek ukladu wspolrzednych \n")) (setq x1 (nth 0 P1) y1 (nth 1 P1)) (setq polilinia(entget (car(entsel "\nWskaż polilinię \n")))) (setq wierzchołki nil ) (while (setq wierzchołek (assoc 10 polilinia)) (setq wierzchołki (append wierzchołki (list (cdr wierzchołek)))) (setq polilinia (cdr (member wierzchołek polilinia) ) ) (setq wierzchołek (cdr wierzchołek )) (setq x2 (nth 0 wierzchołek) ) (setq y2 (nth 1 wierzchołek) ) (setq rzedna (+ PozOdn (/ (- y2 y1) 5))) (command "_text" wierzchołek "" "" (RTOS rzedna 2 2)) ) );KONIEC -
Brak polecenia ROTATE3D (vernum11574) [rozwiązany]
kruszynski odpowiedział(a) na JasW temat w ZWCAD Standard i Professional
Obie funkcje Obrót3d i Lustro3d powinny być dostępne w wersji kolejnej aktualizacji. -
VBA ZCAD3dPolyline [rozwiązany]
kruszynski odpowiedział(a) na JasW temat w ZWCAD Standard i Professional
Dziękuję za zgłoszenie przekazałem do ZWSOFT -
W najbliższej wersji jeszcze nie będzie to obsługiwane, ale widać że coś przy tym majstrują.
-
Poszczególne kody DXF może Pan znaleźć np tutaj: http://www.autodesk.com/techpubs/autocad/acad2000/dxf/ Błędna wartość w linii: (setq sel1 (ssget "X" (list (cons 0 TEXT)(cons 1 stary_napis)(cons 8 warstwa))))) to TEXT. Użyte w ten sposób znaczy że TEXT to zmienna. Powinno być "TEXT" (setq nazwa_napisu (ssname napis 1)) ; Informole liczą od 0 a nie od 1. prosze uważać. podmiana wartości tekstu powinna wyglądać tak: (setq nowy_napis2 (subst (cons 1 nowy_napis) (assoc 1 zmiana) zmiana))
-
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kruszynski odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
może to dlatego, że są dwie pętle (repeat ) W pierwszej przypisywana jest kolejno wartość do zmiennej lista_dxf. Druga pętla przechodzi tyle samo razy przez zmienną, której wartość nie jest nigdzie aktualizowana. -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kruszynski odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
nie pamiętam źródła. -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kruszynski odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
Ja też się dziwiłem kiedy pierwszy raz się z tym spotkałem ;) -
[Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]
kruszynski odpowiedział(a) na lukaasz temat w Wsparcie programistyczne LISP i VisualLISP
Ogólnie dobrze, ale trochę chaos zaczyna się wkradać. (setq nazwa (sslength zb1) i 0) Może przemawia przeze mnie obsesja ale bardzo ważne jest nadawanie zmiennym odpowiednich nazw . Nazwy mają być znaczące a nie mylące. Bardzo dobrze jest to wytłumaczone w książce "Czysty kod. Podręcznik dobrego programisty" Autor: Robert C. Martin . Cały niewielki rozdział jest temu poświęcony. sslength zwraca ilość i nazywanie tego "nazwa" to zły pomysł warto też stosować zmienne lokalne. np (defun C:raport ( / nazwa_warstwy zb1 nazwa i ) W wielu miejscach w programie może pojawić się zmienna "i", jeśli mamy funkcję wewnątrz funkcji, w obu wykorzystujemy i jako licznik pętli to funkcja wewnętrzna nadpisze stan zmiennej z funkcji zewnętrznej i takiego błędu można szukać godzinami. (setq wsk (ssname zb1 i) lista_dxf (entget wsk)) Moim zdaniem bardziej czytelne byłoby (setq lista_dxf (entget (ssname zb1 i))) (princ "\n") (princ "Liczba elementow w zbiorze wyboru: ") (princ (sslength zb1)) (princ "\n") można uprościć do: (princ (strcat "\nLiczba elementow w zbiorze wyboru: " (itoa (sslength zb1) ) "\n" ) Teraz najważniejsze : (setq lista_dxf (entget (ssname zb1 i))) tutaj mamy zapisany cały element. (setq EntName (cdr (assoc 0 lista_dxf ) ) ) daje nam nazwę elementu np INSERT Trzeba wykorzystać cond i rozdzielić działanie programu na odpowiednie dla każdego typu obiektów. (cond ((= EntName "INSERT") (progn (print "blok") (print (cdr (assoc 2 lista_dxf ) ) ) ; nazwa bloku )) ((or(= EntName "LIGHTWEIGHTPOLYLINE")(= EntName "POLYLINE")) (progn (print "polilinia ") )) ((= EntName "CIRCLE")(progn (print "okrąg") ) ) ((= EntName "ARC") (progn (print "łuk") )) ((= EntName "LINE") (progn (print "linia") )) (t (print "Wybrałeś coś innego") ) ) odczytanie poszczególnych parametrów typu punkty początku, końca, środek itp to tylko kwestia odczytania odpowiedniej pozycji z list_dxf. (punkty to najczęściej kod: 10) pełną listę kodów można bez problemu znaleźć w Internecie. Można też zamienić element jako ENAME na VLA-OBJECT (setq element (vlax-ename->vla-object (ssname zb1 i) )) Wtedy to już pełna kultura obiektowości. Nazwę bloku możemy pobrać tak: (vlax-get-property element 'Name ) środek okręgu: (vlax-get-property element 'Center ) albo nawet tak: (vla-get-Center element ) tylko trzeba pamiętać, że punkty są typu variant, czyli trzeba je zamienić na czytelną postać zanim się je wyświetli: (vlax-safearray->list (vlax-variant-value (vlax-get-property element 'Center ) ) ) Powodzenia. W razie dalszych trudności proszę pisać