Tomasz79

Użytkownik forum
  • Postów

    40
  • Dołączył

  • Ostatnia wizyta

Ostatnie wizyty

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

Osiągnięcia Tomasz79

Początkujący

Początkujący (1/6)

3

Reputacja

  1. Tomasz79

    SMath

    Witam. To jest bardzo ciekawa alternatywa dla MathCAD-a, od dłuższego czasu na nim pracuje wykonując obliczenia wytrzymałościowe. Nie ma takiej prędkości jak MathCAD, ale dobrze się sprawuje. Spece od niego potrafią robić na nim animacje oraz potrafią go programować w VB lub C# ( http://smath.info/wiki/ ). Obecnie program posiada bardzo ciekawą funkcjonalność, która przydaje się w pracy. Program tworzy pliki exe z projektów, dzięki temu można robić matryce obliczeniowe, w których nie można robić zmian w procedurach obliczeniowych. Oto jak wygląda przykładowe okno takiego projektu: A tutaj widok wydruku do powyższego okna Powyższy przykład znajduje się w załączniku. Pozdrawiam TJ belka jednoprzesłowa z 1 siłą P.rar
  2. Tomasz79

    Smath

    Okienka w SMath Studio
  3. Witam ponownie. w końcu dopatrzyłem się w katalogu programu jakieś dwa przykładowe projekty. Ale pozostały pytania, na które nie znam odpowiedzi. Proszę o pomoc w ich sprawie. Pozdrawiam TJ
  4. Witam. Jestem posiadaczem ZWCAD-a plus nakładka e-cad do żelbetu. Architekturę budynków wykonuję na Arcadii Architektura z InterSoftu i obecnie zastanawiam się czy nie przesiąść się na ZwCAD Architcture. Pobrałem wersję próbną ZwCAD Architcture i coś tam szkicuje ale jakoś mi nie wychodzi. Zwracam się do obeznanych użytkowników z prośbą o podesłanie mi jakiegoś kawałka projektu wykonanego w ZwCAD Architcture abym mógł zobaczyć pełne możliwości programu. Na tym forum pokazane jest wiele ciekawych rzeczy jakie można zrobić w ZwCAD Architcture a mnie ciekawi jak wygląda plik dwg gotowy do wydruku. Czy da się tak zrobić aby w wygenerowanym przez program przekrój był „aktywny” np. zmieniam w przekroju położenie okno a program automatycznie uaktualnia zmiany na rzutach i w modelu 3D? Czy po skończeniu wykonywania projektu model 3D "rozbijacie" do wersji 2D czy pozostawiacie na przyszłość gdyby były potrzebne jakieś zmiany? Czy da się w modelu 3D dodać warstwy posadzkowe, czy trzeba robić to ręcznie na przekrojach? Czy normalnie jest aby model 3D wykonany za pomocą funkcji GRUPA 3D rozbijał się na rzuty gdy chce podejrzeć model renderowany? To jest model 3D przed renderingiem: To jest model 3D po renderingu: Pozdrawiam Tomasz79
  5. Witam. Ostatnio interesuję się trochę C++ i SDS-em i chciałem się dowiedzieć czy ten program (w załączniku) był pisany w Visual C++ Express czy w wersji pełnej Profesional? Pozdrawiam
  6. Dawno nie robiłem okienek w DCL-u ale czy wielkości wycinków nie powinny być podawane jako liczby całkowite "Integer" ? Przecież komputer nie wyświetli ci wycinka na 0.25 piksela ??
  7. Jeszcze pamiętać należy o tej książce: Tworzenie okien dialogowych (LSP i DCL). Ćwiczenia praktyczne Dariusz Frenki http://helion.pl/ksiazki/tworzenie_okien_dialogowych_lsp_i_dcl_cwiczenia_praktyczne_dariusz_frenki,cwtwok.htm Tak do kompletu.
  8. Książka praktycznie nie do zdobycia. Chyba że po znajomościach lub allegro. Ja do zdobycia tej książki 2 lata temu zatrudniłem żonę, wiedząc że jej nigdzie w żadnym sklepie (internetowym lub w księgarni) nie kupi obiecałem jej za nią :mrgreen: srebrny zegarek . I któregoś pięknego dnia przyszła paczka do mnie z książką z fakturą z jakiejś księgarni internetowej. Ale co było najśmieszniejsze w tym wszystkim że ta książka miała na okładce ślady po butach, jakby ktoś po niej chodził i trochę zmiętolona była, tak jakby leżała gdzieś długo i czekała na mnie. Więc od tamtej pory ta książka jest bardzo cenna dla mnie, bo kosztowała mnie 40zł + srebrny zegarek :lol: . A to strona, która może coś ci pomoże. http://www.afralisp.net/dialog-control-language/tutorials/dialog-boxes-and-autolisp-part-2.php A tu jakieś przykłady z jedne książki z Helionu. http://www.tomaszjankowski.webpark.pl/przyklady_dlc.zip Pozdrawiam
  9. Proszę ściągnąć sobie ten plik w zip-ie. http://www.tomaszjankowski.webpark.pl/strony.zip Tam znajdzie Pan odpowiedź, zeskanowałem przykład z książki do tego przypadku A tu mała pomoc do projektowania okienek "tester okienek DCL" może się przydać: ;;; TESTDCL.LSP .... by M.P.Saju. ;;; This is a freeware. License for use of this application is granted for ;;; distribution, provided it is not mutilated. If there are problems please ;;; feel free to contact the author at mpsaju@yahoo.com ;;; ;;; Testing *.DCL files becomes a necessity when developing a good sized lisp ;;; application for easy input and understanding. This routine in lisp was ;;; written for just such a necessity. ;;; ;;; Usage is very simple... Just type "Testdcl" in Autocad text screen and press ;;; "enter". A file selection dialog box will open up to select the DCL file. ;;; On entering, the DCL under test will open. This application works under ;;; the assumption that there is an active "accept" or "cancel" button. ;;; ;;; I have tried to solve all problems that I have encountered. However if there ;;; are any further issues please feel free to contact me. (defun c:testdcl (/ nam$ nam id loop) ;;; lisp for checking dialogboxes at the beginning of their design (setq nam$ (getfiled "Select a DCL file" "" "dcl" 0)) (setq nam (identify nam$)) ) (defun identify (nam$ / file x dd dd$) (setq file (open nam$ "r") dd$ nil dd nil x 0 ) (while (setq dd (read-line file)) (if (wcmatch dd "*: dialog {") (progn (setq dd$ (substr dd 1 (- (strlen dd) 11))) (if (wcmatch dd$ " *") (setq dd$ (substr dd$ 2 (strlen dd$))) ;; added for eliminating blank ) (rundcl nam$ dd$) ) ) ) (close file) dd$ ) (defun rundcl (nam$ nam) (setq id (load_dialog nam$)) (if (not (new_dialog nam id)) (exit) ) (action_tile "cancel" "(done_dialog 0)") ;;; cancel button dialog.. normally in all DCLs (action_tile "accept" "(done_dialog 0)") ;;; accept button dialog.. normally in all DCLs (setq loop (start_dialog)) ) Pozdrawiam
  10. Dzięki wielkie za pomoc. Męczę te bloki, ponieważ napisałem program, który wstawia bardzo dużą ilość bloków (czasami można liczyć je w tysiącach) i przez "command" i "insert" w zwcad-dzie wstawianie ich trwa wieki (intelicadzie z InterSOFT-u troszkę szybciej). Testowałem wstawianie takiej dużej ilości bloków bez atrybutów omawianą wyżej techniką trwa o 1/3 szybciej, więc męczarnie nad optymalizowaniem kodu raczej się opłacają. Jak ktoś będzie chciał mieć program do odczytywania wyników obliczeń zbrojenia płyty w programie PLATO (z InterSOFT-u) to proszę pisać do mnie to udostępnię aktualną wersję napisaną w LISP-ie. Tej mojej metody nawet InterSOFT nie znał do póki mu nie pokazałem. Dodam jeszcze, że nie jest to zgrywanie wyników w formacie DXF czy MBA zupełnie coś innego. Kawałek funkcjonalności programu: http://www.tomaszjankowski.webpark.pl/plato2.htm Z optymalizacją kodu jeszcze trochę mi zejdzie bo coraz to więcej człowiek się uczy tego LISP-a, a kiedy pisałem program to dopiero raczkowałem z LISP-em. Pozdrawiam Tomasz Jankowski
  11. Witam ponownie. Jak za pomocą Lisp-a i funkcji entmake wstawić do rysunku blok z atrybutem? Wiem że to temat jest ciężki ale czy da się to zrobić nie używające (command "_insert") lub vla-InsertBlock? Wymęczyłem coś takiego jak poniżej i program wstawia mi tylko blok ale bez atrybutu: Wstawiany blok posiada tylko jeden atrybut. (defun C:x2 (/) (setq dan (list 10 10 10)) (entmake(append(list (cons 0 "INSERT") (cons 100 "AcDbEntity") (cons 67 0) (cons 8 "0") (cons 100 "AcDbBlockReference") (cons 61 1) (cons 2 "Osie - warstwa 0") (cons 10 dan)(cons 41 1.0) (cons 42 1.0) (cons 43 1.0) (cons 50 0.0) (cons 70 0) (cons 71 0) (cons 44 0.0) (cons 45 0.0)))) (entmake(append(list (cons 0 "ATTRIB") (cons 67 0) (cons 8 "0") (cons 284 0) (cons 48 1.00000) (cons 60 0) (cons 39 0.000000) (cons 10 dan) (cons 40 20.0000)(cons 1 "os A") (cons 50 0.000000) (cons 41 1.00000) (cons 51 0.000000) (cons 7 "Standard") (cons 71 0) (cons 72 1) (cons 11 dan) (cons 210 dan )(cons 2 "OŚ") (cons 70 0) (cons 73 0) (cons 74 0) (cons 280 0)))) (entmake(append(list (cons 0 "SEQEND") (cons 67 0) (cons 8 "0") (cons 48 1.00000) (cons 60 0)))) ) Dzięki za wszelką pomoc.
  12. Witam ponownie. Przedstawiam procedurę do zmiany wartości atrybutów w blokach. Może to nie jest mistrzostwo ale działa. Jakby komuś było potrzebne to proszę poniżej znajduje się kod: ;funkcja główna, która przeszukuje bloki w poszukiwaniu atrybutów o zadanej nazwie (defun c:xxx ( / da ile_danych dane_bloki atr1) (progn (prompt "\nWybierz blok do zmiany jego numeru_pozycji:") (setq da (ssget (list (cons 0 "insert" ) ))); pobranie zbioru bloków (setq ile_danych 0) (repeat (sslength da) ;pętla zależna od ilości danych (setq dane_bloki (ssname da ile_danych));odczyt informacji o kolejnym bloku (setq atr1 (cdr(assoc 66 (entget dane_bloki)))) ;sprawdzenie czy blok posiada atrybuty (if (= atr1 1)(progn (atblok1 dane_bloki "NAZWA_SYSTEMOWA" "kr.");procedura do zmiany danych (atblok1 dane_bloki "MATERIAL" "C27");procedura do zmiany danych (prompt "\nOdszukano bloki z atrybutami") ));koniec testu (setq ile_danych (+ 1 ile_danych)));koniec reapt (command "_regen") ));koniec funkcji ;program do zmiany jednego atrybutu w wybranym bloku ;nazwa_bloku - jest to zmienna okreslająca nazwę wybranego bloku delkaruje się ją poprzez (setq dane_bloki (ssname da ile_danych)) >> da - zbiór wskazanych elementów >> ile_danych - numer bloku "elementu" ;nazwa_atr - jest to nazwa "TAG" atrybutu szukanego w bloku ;wartosc_atr - jest to wartość atrybutu jaki ma być wstawiony gdy znajdzie się dany "TAG" (defun atblok1 ( nazwa_bloku nazwa_atr wartosc_atr / da1 da2 da3 dane1 dane2 ile_d) (progn (setq da1 nazwa_bloku);przypisanie elementu do zmiennej ;wewnętrzna pętla przeszukująca atrybuty bloków i szukająca tagu (setq ile_d 0) (while (= ile_d 0) (setq da2 (entnext da1)) (setq dane1 (cdr(assoc 0 (entget da2))));szukanie końca bloku (if (= dane1 "SEQEND") (progn (setq ile_d 1) )) (setq dane2 (cdr (assoc 2 (entget da2))));pobranie nazwy atrybutu (if (= ile_d 0) (progn ;jeżeli nie znajdzie seqend to dalej szuka i zamienia atrybuty (if (= dane2 nazwa_atr ) (progn (setq da3 (entget (entnext da1))) (setq da3 (subst(cons 1 wartosc_atr) (assoc 1 da3)da3)); tu nadaje sie zmiany kodu (entmod da3) ))));koniec warunków zamiany (setq da1 (entnext da1)));koniec while ));koniec funkcji Pozdrawiam
  13. Wielkie dzięki :grin: . Pozdrawiam
  14. Wskazówka była by nile widziana. Pozdrawiam
  15. Witam ponownie. Nadal bawię się blokami z atrybutami. Napisałem coś takiego: (defun c:xxx ( / ) (progn (prompt "\nWybierz blok do zmiany jego numeru_pozycji:") (setq da (ssget (list (cons 0 "insert" )))) (setq ile_danych 0) (while (< ile_danych (sslength da)) (setq da1 (ssname da ile_danych));odczyt informacji o kolejnym bloku (setq da2 (entget(entnext da1))); przejście do kolejnego elementu bloku (setq dane1 (cdr(assoc 0 (entget da2)))); odczyt nazwy elementu bloku (0. "ATTDEF") szukany (prompt "\nElement: ") (princ dane1) (setq ile_danych (+ 1 ile_danych));kolejny blok do odczytu );koniec while ));koniec funkcji Procedura ma za zadanie odczytanie informacji na temat pierwszego elementu z jakiego składa się blok, wywala mi błąd na tej linii: 1) (setq da2 (entget(entnext da1))); przejście do kolejnego elementu bloku (setq dane1 (cdr(assoc 0 (entget da2)))); odczyt nazwy elementu bloku (0. "ATTDEF") szukany Natomiast jeśli wstawię coś takiego: 2) (setq dane1 (cdr(assoc 2 (entget (entnext da1))))) to wszystko będzie działało? Proszę o pomoc w poprawieniu tego kodu Nr1 bo już mi brak cierpliwości. Czym się różnią te dwa kawałki kodu że jeden chodzi a drugi nie (dla mnie oba powinny dawać te sam wyniki)? Docelowo chciałem zrobić procedurę, która wyszukuje w blokach z atrybutami nazwę ("Tag") i jeśli znajdzie szukany atrybut zmienia jego wartość ("Value"). Wszystko pisze wyłącznie w AutoLisp-ie bo VisualLisp jak na razie dla mnie to czarna magia. Dzięki