gruzin

Użytkownik forum
  • Postów

    493
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    18

Odpowiedzi opublikowane przez gruzin

  1. Proszę umieścic blok z pierwszego posta na dycku c:

    i potestować jego wstawienie za pomocą tego kodu, zmieniając jednostki w rysunku na "cm" i na "m"

    (defun c:mmm ()
    (vl-load-com)
    	(setq PunktWstawienia (getpoint "\nWskaż punkt wstawienia rysunku: ")
    	NazwaBloku "C:\\IS_PZT_STUDNIA_100cm.dwg")
    	(vla-insertblock (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-3d-point (trans PunktWstawienia 1 0)) NazwaBloku
    		1.0
    		1.0
    		1.0
    		0.0 ; tutaj dodac odczytywanie aktualnego obrotu luwa
    	)
    )
    (defun c:mmmm ()
    	(setq PunktWstawienia (getpoint "\nWskaż punkt wstawienia rysunku: ")
    	NazwaBloku "C:\\IS_PZT_STUDNIA_100cm.dwg")
    	(command "_insert" NazwaBloku PunktWstawienia "_XYZ" "1.0" "1.0" "1.0" "0.0")
    )
    
  2. wstawiam zawsze z zewnętrznego pliku (przykład takiego pliku byl w załączniku)

    wieczorem postaram się skopiować trochę większy kawałek kodu jak znajdę chwilkę.

     

    studnia z załącznika jeżeli rysujemy w "m" powinna wstawiać się ze skalą 0.01 i mieć średnicę = 1 (tak nie jest)

    studnia z załącznika jeżeli rysujemy w "cm" powinna wstawiać się ze skalą 1 i mieć średnicę = 100 jest ok

  3. zacząłem kombinować jak by tu zacząć rysować zagospodarowanie terenu w "m" lub w "cm". Dodam że do tej pory zawsze rysowałem w "cm" i wszystkie bloki do wklejania w terenie mam zrobione w cm.

     

    bloki wstawiałem za pomocą funkcji vla-insertblock ale pojawił się teraz problem ponieważ bloki takie nie przeskalowują się z zachowaniem jednostek bloku i jednostek aktualnego rysunku. Albo coś źle robię albo jest to błąd Zwcada 2015+ ??

    (vla-insertblock (mh:ACX_ActiveSpace) (vlax-3d-point (trans PunktWstawienia 1 0)) NazwaBloku
    1.0
    1.0
    1.0
    0.0
    )
    
    (command "_insert" NazwaBloku PunktWstawienia "_XYZ" "1.0" "1.0" "1.0" "0.0")
    

    wstawianie tego samego bloku za pomocą command i vla-insertblock daje zupełnie inne rezultaty, pomimo tego że skalę xyz mam taką samą w obu poleceniach.

    polecenie command "_insert" przeskalowuje wstawiane bloki tak jak trzeba ale wolałbym poprawić funkcję z vla-insertblock jeżeli coś mam w niej nie tak

     

    W załączniku przykładowy blok który próbuję wstawiać na zagospodarowaniu terenu

    IS_PZT_STUDNIA_100cm.dwg

  4. ja przepraszam że odpisuje tak tylko raz na kilka dni, ale w robocie mam taki nawał pracy że nie mam czasu wgłebić sie w błędy zw2017 i dokładnie ich poanalizować i poszukac. obecnie nie mam czasu na takie przyjemności.

    jednak kolejne wersje zwcada bede sukcesywnie testował w wolnej chwili :-) i bede zgłaszał wszystko co uda mi sie znaleźć.

  5. Wydaje mi się, że temat jest głębszy.

     

    W załączniku mój przykład najprostszego okna, zawierającego 2 kontrolki typu "edit_box". Moim zdaniem to działa poprawnie.

    hmmm. Mi nie udało się tego uruchomić na zw2017

    wyskakuje:

    Command: TEST:DCL

    ; error: quit / exit abort

    Command:

     

    Nie da się nic wpisać w kontrolki ani zamknąć okna.

    Czy takie objawy występują też u Pana? czy jeszcze coś innego?

    dokładnie tak. nie da się nic wpisać w kontrolki i są one na początku puste bez domyślnych wartości. Okna też się nie da zamknąć.

     

     

    #<Subr SET_TILE> naprowadza, na to, że błąd jest przy wprowadzaniu wartości do kontrolki edit_box

    a komunikat: "incorrect type - nil" świadczy że wprowadzana wartość jest "nil". tak jakby zmienna nie miała przypisanej wartości.

    Tylko jak to możliwe skoro linijkę wcześniej ustawia Pan wartość zmiennej ?

    No właśnie. Uprościłem to trochę do stwierdzenia że kontrolki editbox nie działają.

  6. Nie wiem jak ma to działać w ZwCAD-zie, ale funkcja mh:MsgCommaToDot, ogólnie nie wiadomo czemu służy. W mojej opinii zamiana przecinków na kropki powinna mieć miejsce tylko w jednej sytuacji: pozostałe znaki reprezentują liczby. Tak nie jest.

    założenie jakie mi kiedyś przyświecało było takia aby w polu EDIt BOX można było wpisać cyfry zarówno z przecinkiem jak i z kropką. Następnie warunkiem:

    (if (> (atof (mh:MsgCommaToDot DCL_srednica_studni)) 0)

    sprawdzałem, czy rzeczywiście jest to liczba dodatnia bo tylko taka wprowadzona jest poprawna jako dana do dalszej pracy programu.

     

    W zwcad 2017 nie działa mi po prostu pole z wprowadzaniem danych. Nie da się nic w te pola wpisać i nie chodzi tu o funkcje zamiany przecinków na kropki.

     

    Nie wiem jak ma to działać w ZwCAD-zie, ale funkcja mh:MsgCommaToDot, ogólnie nie wiadomo czemu służy. W mojej opinii zamiana przecinków na kropki powinna mieć miejsce tylko w jednej sytuacji: pozostałe znaki reprezentują liczby. Tak nie jest.

    Jak się głębiej nad tym zastanowić to może masz rację.

  7. OK, teraz widzę różnicę . Przekażę temat do ZWSOFT.

    Proszę mnie poprawić jeśli się mylę. Do wprowadzania wartości odpowiednią "kontrolką" jest : edit_box

    Nie ma ona parametru, który zapewniałby ograniczenie wprowadzane wartości tylko do liczb. Czy może jest inaczej?

    Jak mogę sprawdzić i udowodnić twórcom ZWCADa że "nie działają"

    (defun mh:MsgCommaToDot ( msg / dd OutMsg)
    ; zwraca przetworzony tekst z zamienionymi przecinkami na kropki (np. w celu przeanalizowania tekstu czy nie jest liczbą)
    ;=========================================================================
    (setq    dd 1
            OutMsg ""
    );setq
    (repeat (strlen msg)
        (progn
            (if (= (substr msg dd 1) ",")
                (setq OutMsg (strcat OutMsg "."))
                (setq OutMsg (strcat OutMsg (substr msg dd 1)))
            );if
        (setq dd (1+ dd))
        );progn
    );repeat
    OutMsg
    );defun
    
    
    
    ;=========================================================================
    (defun c:studnia ( / dcl_id DCL_srednica_studni DCL_osadnik zamkniecie srednica_studni osadnik PG PD A1 A2 A3 A4 A5 A6 B1 B2 B3 B4 B5 B6)
    
    ;(mh:ustzap)
    
    ;===========================================================
    (setvar "dimzin" 0)
    (setvar "osnapcoord" 1)
    ;=============================================================
    
    
       (setq dcl_id (load_dialog "profilek-profile.dcl"))
    	   (if (not (new_dialog "studnia" dcl_id))
    		(progn
    			(alert "Nie znaleziono pliku profilek-profile.dcl")
    			(exit)
    			);progn
    		);if
    		
    ;==================
    	(if (null *DCL_studnia*)
            (setq *DCL_studnia* (list "42,5" "0"))
          )		
          (setq DCL_srednica_studni (car *DCL_studnia*)
                DCL_osadnik (cadr *DCL_studnia*)
          )  
    ;==================		
          (foreach % (list "DCL_srednica_studni" "DCL_osadnik")
    	  
    	    (set_tile % (eval (read %)))
            (action_tile % (strcat "(setq " % " $value)"))
          )
    ;================
      (start_image "sldStud")
      (fill_image 0 0 (dimx_tile "sldStud")(dimy_tile "sldStud") -0)
      (slide_image 0 0 (dimx_tile "sldStud")(dimy_tile "sldStud") "profilek_studnia")
      (end_image)
      ;================
    
    		   
    		   (action_tile "accept" "(done_dialog) (setq zamkniecie 1)")
    		   (action_tile "Cancel" "(done_dialog) (setq zamkniecie 0)")
       
       (start_dialog)
       (unload_dialog dcl_id)
       
        
    		(if (= zamkniecie 1)
    			   (progn
    						(setq *DCL_studnia* (list DCL_srednica_studni DCL_osadnik))
    			  );progn
    		);if
    
    
    ;=========================================================================
    ;Sprawdzenie i podstawienie do zmiennych numerycznych wartości z editbox'ów
    (if (> (atof (mh:MsgCommaToDot DCL_srednica_studni)) 0)
    (setq srednica_studni (atof (mh:MsgCommaToDot DCL_srednica_studni)))
    (progn
    (alert "Średnica studni nie jest wpisana poprawnie!")
    (setq zamkniecie 0)
    )
    )
    (if (>= (atof (mh:MsgCommaToDot DCL_osadnik)) 0)
    (setq osadnik (atof (mh:MsgCommaToDot DCL_osadnik)))
    (progn
    (alert "Głębokość osadnika nie jest wpisana poprawnie!")
    (setq zamkniecie 0)
    )
    )
    ;=========================================================================
    
    (if (= zamkniecie 1)
    (progn
    
    
    
    
    
    
    (setq 	PG (getpoint "\nKliknij górę studni")
    		PD (getpoint PG "\nKliknij dół studni")
    );setq
    
    (setq	A1 (polar PG pi (/ srednica_studni 2))
    		A2 (polar PG 0 (/ srednica_studni 2))
    		A3 (polar A1 (* 1.5 pi) 10)
    		A4 (polar A3 0 3)
    		A5 (polar A4 0 (- srednica_studni 6))
    		A6 (polar A5 0 3)
    		B1 (polar (polar PD pi (/ srednica_studni 2)) (* 1.5 pi) (+ 5 osadnik))
    		B2 (polar B1 0 srednica_studni)
    		B3 (polar B1 (/ pi 2) 10)
    		B4 (polar B3 0 3)
    		B5 (polar B4 0 (- srednica_studni 6))
    		B6 (polar B5 0 3)
    );setq
    
    (setvar "celweight" 020)
    (command	"_line" A1 A2 B2 B1 A1 ""
    			"_line" A3 A6 ""
    			"_line" B3 B6 ""
    			"_line" A4 B4 ""
    			"_line" A5 B5 ""
    );command
    
    ;(setvar "clayer" "IS_niedruk")
    (setvar "celweight" -1)
    (command "_point" PD)
    
    );progn
    );if
    
    ;(mh:ustprzywr)
    
    );defun studnia
    ;=========================================================================
    

    oraz plik dcl: "profilek-profile.dcl

    ///////////////////////////////
    //  okno główne komendy PKS  //
    ///////////////////////////////
    profil : dialog {
      label = "Opisywanie profili podłużnych";
      : boxed_column {
        label = "Dane:";
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_POZIOM";
          label = "Wpisz wartość poziomu por. [m]: ";
        }
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_odl0";
          label = "Odległość dla punktu \"0\" [m]: ";
        }
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_srednica";
          label = "Średnica rurociągu [mm]: ";
        }
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_skalapoziom";
          label = "Skala pozioma <1:xxx>: ";
        }
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_skalapion";
          label = "Skala pionowa <1:yyy>: ";
        }
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_nrwezla";
          label = "Numer pierwszego węzła: ";
        }
        spacer;
      }
      
      
      
      
      : boxed_column {
        label = "Ustawienia:";
        : popup_list {
    	  edit_width = 20;
          label = "Opisywanie kolizji:";
    	  key = "DCL_opis_kolizji" ;
        }
        : popup_list {
    	  edit_width = 20;
          label = "Metryka tabelki:";
    	  key = "DCL_METRYKA" ;
        }
        : popup_list {
    	  edit_width = 20;
          label = "Sposób rysowania sieci:";
    	  key = "DCL_spodos" ;
        }
    	: popup_list {
    	  edit_width = 20;
          label = "Sposób liczenia zagłębienia:";
    	  key = "DCL_zaglebienie" ;
        }
        : popup_list {
    	  edit_width = 20;
          label = "Materiał rurociągu:";
    	  key = "DCL_ruramaterial" ;
        }
        : popup_list {
    	  edit_width = 20;
          label = "Oznaczenie węzłów:";
    	  key = "DCL_wezel" ;
        }
        spacer;
      }
      ok_cancel;
    }
    
    
    ///////////////////////////////////
    //  okno główne komendy STUDNIA  //
    ///////////////////////////////////
    studnia : dialog {
      label = "Studnia w przekroju";
      : boxed_column {
        label = "Dane:";
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_srednica_studni";
          label = "Średnica studni [cm]: ";
        }
        : edit_box {
    	  edit_limit = 10;
          edit_width = 10;
          key = "DCL_osadnik";
          label = "Głębokość osadnika [cm]: ";
        }
        spacer;
      }
      : image {
      height = 17 ;
      width = 20 ;
      key = "sldStud" ;
      color = 0 ;
      }
        ok_cancel;
    }
    
    

    mam nadzieje ze kod będzie działać (wyciąłem go z większego pliku)

    plik z załacznika wymaga zmiany rozszerzenia na "*.sld"

    pozdrawiam

    profilek_studnia.zip

  8. ;=========================================================================
    (defun c:obrlll ()
        (mh:obrotwidoku "L")
    ); defun
    ;=========================================================================
    
    ;=========================================================================
    (defun c:obrrrr ()
        (mh:obrotwidoku "R")
    ); defun
    ;=========================================================================
    
    ;=========================================================================
    (defun mh:obrotwidoku ( mode / widok wyswidoku punktnax punktnay)
    ; mode [L, R] - L-obrót w lewo, R-obrót w prawo
    
    ;=========================
    ;(setq MHSelMember (mh:SYS_GetSelection))
    ;(mh:ustzap)
    ;=========================
    
    ;(trans PP 1 0)
    (setq	widok (trans (getvar "VIEWCTR") 1 0)
    		wyswidoku (getvar "VIEWSIZE")
    		punktnax (polar widok (if (= mode "R") (* pi 0.5) (* pi 1.5)) 10)
    		punktnay (polar widok (if (= mode "R") (* pi 1) (* pi 0)) 10)
    )
    
    (command "_ucs" "3" widok punktnax punktnay)
    (command "_plan" "_c")
    (command "_.zoom" "_c" (trans widok 0 1) wyswidoku)
    
    			
    			
    			
    ;=========================			
    ;(mh:ustprzywr) 
    ;(mh:SYS_SetSelection MHSelMember)
    (princ)
    );defun
    ;=========================================================================
    

    proszę na tym protestować i porównać wyniki z zwcada 2015 2017

     

     

     

    To co zgłaszał Pan wcześniej że okna DCL wieszają program działa, sprawdziłem też temat zawartości list rozwijalnych i też wyświetlają się poprawnie. Proszę podać więcej szczegółów czego jeszcze brakuje.

    Okienka do wprowadzania wartości liczbowych nie działają. Listy wyświetlaja się już dobrze.

  9. kolejny błąd:

    - dla ułatwienia piszemy teks jednowierszowy poziomo (kąt obrotu równy 0) np "jeden"

    - obracamy LUW o 90° prawo

    - ustawiamy widok na aktualy "_plac" "_c"

    - piszemy teks jednowierszowy poziomo (kąt obrotu równy 0) np "dwa"

    <<<tekst jest do góry nogami>>>

     

     


    kolejny błąd

    (command "_.zoom" "_c" (trans widok 0 1) wyswidoku)

     

    polecenie nie przyjmuje poprawnie ani punktu środka widoku ani jego wysokości (używam tego do obracania widoków o 90° i przywracania środka widoku po obrocie

    post-131-0-53662800-1472796390_thumb.jpg

  10. vernum = "2016.08.26(8293)_x64" (read only)

     

    - edytor tekstu wielowierszowego - nie można zamknąć  poprzez ctrl+enter

    - fazowanie z SZIFTEM nie działa tak jak powinno

    - nie da się wczytać pasków narzędzi dodatkowych jeżeli korzystamy z interfejsu wstążki

     

    LISP się znacząco poprawił ale obsługa okien DCL jeszcze nie jest zadowalająca

  11. Zainstalowałem. Przy wczytaniu otrzymuję komunikat, że plik jest wczytany, ale kiedy próbuję uruchomić jakiekolwiek polecenie (z ikon) dostaję komunikat:

    Nieznane polecenie.

    Być może kiedyś dawno temu miałem już zainstalowaną wersję testową profilka i licencja testowa wygasła.

    Wysłałem licencję na prywatna wiadomość. Komunikat może znaczyć że nie dodany zostal plik "profilek.lsp" do autostaru Zwcada. W razie pytań proszę dzwonić (będzie szybciej).

  12. Z punktu widzenia programisty od tej wersji mogłem dopiero cokolwiek uruchomić. 

    ..............

    Z Lispem jest tak samo. Nie działa wiele ale już zaczęło się uruchamiać.....

    Jeszcze kilka wersji beta Zwsoftu i może będzie można zacząć prace nad ewentualnymi poprawkami kodu lub wskazywaniem błędów.

     

    Co do stabilności zauważyłem, że na jednym komputerze przesuwanie pasków jest płynne a na drugim pasek podczas przesuwania miga jak przy odświeżaniu ekranu ~5Hz :-) Bardzo irytujące to jest