kruszynski

Moderatorzy
  • Postów

    1 427
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    83

Aktywność reputacji

  1. Upvote
    kruszynski przyznał(a) reputację dla wigus15 w Program automatycznie aktualizujący treść napisów na danej warstwie.-proszę o pomoc [rozwiązany]   
    Przepraszam za spam ,alezdołałem (chyba) poradzić sobie z poprzednim problemem i udało mi się napisać cos takiego, niestety w dwóch ostatnich linijkach pokazuje mi błąd i nie mam pojęcia co jest nie tak. Byłbym wdzięczny jakby ktoś rzucił na to okiem.
    (defun c:aa ()
    (setq warstwa (getstring "Podaj nazwe warstwy: "))
    (setq stary_napis (getstring "Podaj stary napis: "))
    (setq napis (ssget "X" (list (cons 1 stary_napis)(cons 8 warstwa))))
    (setq nazwa_napisu (ssname napis 1))
    (setq zmiana (entget nazwa_napisu))
    (setq nowy_napis (getstring "Podaj nowy napis: "))
    (setq nowy_napis2 (subst(cons 1 nowy_napis)(cons 1 napis)zmiana))
    (setq koniec (entmod nowy_napis2)))
     
  2. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w [Lisp] Nazwa bloku i współrzędne punktów [rozwiązany]   
    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ć
     
  3. Upvote
    kruszynski przyznał(a) reputację dla montek w Import danych z Excela do SMath   
    Widziałem , gdzieś na forum pytanie czy da się wstawić tabele z Excela do SMatha. Bezpośrednio przez schowek się nie da :( Jednak jakiś czas temu znalazłem na to sposób. Trzeba zainstalować dwie wtyczki Jedna do tworzenia tabeli druga do importu danych z Excela
                  
    Następnie tworzymy zmienną ala Macierz funkcją  importData.XLSX(4) 
    np. DANE:=importData.XLSX ("ścieżka do pliku.xlsx"; "nazwa arkusza / zakładki w pliku" ; "D5"; "F16")  "D5" - początek zakresu F16 - koniec zakresu pobieranych danych - jest kilka importów ja stosuję (4). Już mamy dostęp do danych   zmiennej 
      aby odczytać dane robimy tak    RzG:= DANE[7;2=    ! nie zamykamy nawiasu ]
    to dopiero pierwszy etap czyli pobranie danych  -  niestety trzeba pilnować ścieżki musi być pełna parametry wpisujemy w " "
      Wstawiamy tabelę 
    i mamy tabele    odznaczamy wyświetl ... - aby nie było widać opisu pod tabelą
     aby usunąć Table 4 - klikamy (dwuklik) lewym na tabeli i pojawi się okno odznaczamy show caption i gotowe
    aby dodać np. kolumnę z tytułami wierszy,  trzeba stworzyć nowy zbiór danych pobieranych z excela np. Lewa określając zakres w jednej kolumnie np. ;"DANE" ; "C5" ; C16"  lub macierz bezpośrednio w SMatch i przypisać tzn. wybieramy miejsce gdzie będą wyświetlane dane dla lewej kolumny
        w kolejnej zakładce możemy formatować wygląd  Body to zakres tabeli za danymi,
    a Left stub to  nasza kolumna z opisami  
           
    Uff i to było na tyle - dane z Excela w tabeli w SMath - zabawy trochę jest, ale się da 
    SMath to naprawdę fajne narzędzie - z mojego doświadczenia jak trzeba przenieść obliczenia do edytora to lepiej skorzystać z OpenOffice . Dane z Calc też można pobrać funkcja importData
    przyjemnej zabawy 
     
  4. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Mały lisp a nie działa w ZWCad 2012 Classic   
    Wystarczy:
    (setq e (ssget "_+.:s" '((0 . "*POLYLINE")))) zamienić na:
    (setq e (ssget "_:s" '((0 . "*POLYLINE"))))  
     
  5. Upvote
    kruszynski otrzymał(a) reputację od padon w wielolinia odniesienia - szukanie po tekście   
    Witam
    Napisałem małego LISPa, który wyszukuje teksty w odnośnikach wieloliniowych. Zapraszam do testowania. Po wczytaniu programu będzie dostępne nowe polecenie MFind , które prosi o wpisanie tekstu do wyszukania i zaznacza odnośniki wieloliniowe zawierające podany tekst.
    Pozdrawiam

    MFind.zel
  6. Upvote
    kruszynski otrzymał(a) reputację od gruzin w LISP - wielolinia odniesienia   
    W ZWCAD+ 2015  można utworzyć styl multilinii korzystając z funkcji entmakex:
    (defun AddMLeaderStyle ( stylename data / dict item ) (cond ( (not (setq dict (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_MLEADERSTYLE"))))) nil ) ( (setq item (dictsearch dict stylename)) (entmod (cons (assoc -1 item) data)) ) ( (setq item (entmakex data)) (dictadd dict stylename item) ) ) ) (AddMLeaderStyle "test" '( (0 . "MLEADERSTYLE") (100 . "AcDbMLeaderStyle") (179 . 2) (170 . 2) (171 . 1) (172 . 0) (90 . 2) (40 . 0.0) (41 . 0.0) (173 . 1) (91 . -1023410173) (92 . -2) (290 . 1) (42 . 1.0) (291 . 1) (43 . 1.0) (3 . "Standard") (44 . 1.0) (300 . "") (174 . 1) (178 . 1) (175 . 1) (176 . 0) (93 . -1073741824) (45 . 1.0) (292 . 0) (297 . 0) (46 . 0.18) (94 . -1056964608) (47 . 1.0) (49 . 1.0) (140 . 1.0) (293 . 1) (141 . 0.0) (294 . 1) (177 . 0) (142 . 1.0) (295 . 0) (296 . 0) (143 . 1.0) (271 . 0) (272 . 9) (273 . 9) ) ) Znaczenie poszczególnych kodów DXF opisane jest np tutaj:
    http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-0E489B69-17A4-4439-8505-9DCE032100B4
     
     
     

    Postaram się dowiedzieć jak dodać style w ZWCAD Classic i jakie są plany odnośnie ZWCAD 2017
    AddMLeaderStyle.lsp
  7. Upvote
    kruszynski otrzymał(a) reputację od Marek-M w Importowanie i eksportowanie właściwości rysunku   
    Witam
    Przygotowałem program pozwalający wczytywać właściwości rysunku z pliku jaki Pan przesłał.
    Nazwy właściwości powinny być w pierwszym wierszu w kolejnych kolumnach, wartości w wierszu drugim, tak jak na Pana przykładzie w pierwszym arkuszu
     
    Pozdrawiam.
    ImportWlasciwosci.zel
  8. Upvote
    kruszynski otrzymał(a) reputację od Iskra w Najmniejszy opisany prostokąt - LISP   
    No to żeby nie było że tak proste zadanie można rozwiązać tak szybko dodam jeszcze swoje uwagi:

    1. Co się stanie jeśli Użytkownik zamiast posłusznie wskazać prostokąt naciśnie na klawiaturze [ESC]? Zawsze, ale to absolutnie zawsze jeśli pozwalamy Użytkownikowi zrobi cokolwiek należy użyć obsługi wyjątków vl-catch-all-apply

    2. Będąc pod wpływem idei Roberta C. Martina dotyczącej czystości kodu chciałbym jeszcze zwrócić uwagę na czytelność kodu.
     - Dziś wiemy że DXF 70 pozwala sprawdzić czy Polilinia jest zamknięta.  ale czy będzie to dla nas jasne za kilka czy kilkanaście miesięcy, jeśli cały ten czas będziemy pracować w LISP to pewnie tak, ale być może kiedyś wrócimy do dawno zapomnianego kodu, który działał ale musimy w nim coś zmienić będziemy się zastanawiac "o co chodziło z tym 129". A może po kilku miesiącach musimy dodać obsługę okręgów. Nie wiem czy okrąg ma DXF 70 i jakie jest jego znaczenie , ale skoro jest okręgiem to na pewno jest zamknięty i nie ma potrzeby sprawdzanie tego warunku. Warto w takiej sytuacji mieć dokładnie jedno miejsce gdzie tego szukać. Dlatego sugeruję opakować każdy warunek funkcją.

     - być może w przyszłości to nie twórca programu a jego współpracownik, następca, pomocnik, uczeń czy ktokolwiek będzie czytał ten sam kod i będzie zastanawiał się czy funkcja "dia" ma porównywać długości przekątnych, czy jaka jest jej rola. Przeczyta i zrozumie, ale na ten czas odwróci swoją uwagę od czegoś co było ważniejsze bo miał zadanie sprawdzić/dodać cośtam co nie ma się nijak do przekątnych  Dlatego lepiej jest nazywać funkcje i zmienne w taki sposób, żeby czytając jasne było co ma się dziać w kodzie. zainteresowany szczegółami implementacji może sobie znaleźć definicję funkcji i ją przeanalizować.

    3. Rozumiem że dla uproszczenia przykładu można użyć (princ "\nŹle. "), ale przestrzegam przed używaniem takiego rozwiązania w kodzie produkcyjnym . Lepiej jest stałe tekstowe przechowywać gdzieś indziej, i tylko odwoływać się do nich w kodzie po symbolu.
    Wszytko jest OK, puki pracujemy na swoim komputerze, na znanej stabilnej wersji programu. Aż tu nagle niespodzianie pewnego dnia ktoś nam proponuje żeby uruchomić ten kod na innej maszynie, cieszy oczywiście że nasza praca jest przez kogoś doceniona, ale tylko do czasu kiedy zamiast "Wskaż prostokąt: " zobaczymy "WskaĹĽ prostokÄ…t: " poprostu niektóre systemy działają na Unicode, ale inne NIE. Oczywiście zawsze możemy zmienić każdy krzaczek na poprawną literkę, ale wtedy mamy już 2 wersje kodu do utrzymania i musimy o tym pamiętać przy każdej zmianie wprowadzonej do kodu.
    Być może pewnego dnia zechcemy nasz program udostępnić (być może za niewielką opłatą ;) ) komuś kto nie zna naszego języka, wówczas tłumaczymy 1 plik z tekstami a nie musimy wyszukiwać w kodzie wszystkich tekstów.
    Podobnie można przejechać się na formatowaniu daty, ale to już temat na inną pogadankę.

    Moja propozycja kodu źródłowego jest taka:
    (defun SelRect (/ select SelectedEntity IsRectangle e d dia OutVal) (defun IsRectangle (Entity / EntityList IsPolyline IsClosed DiagonalsAreEqual AreaIsCorrect NumberOfVertex ) (setq EntityList (entget Entity) ) (progn ; Locals (defun IsPolyline (Entity / ) (= (cdr (assoc 0 Entity)) "LWPOLYLINE") ) (defun IsClosed (EntityList / ) (= 1 (logand 1 (cdr (assoc 70 EntityList)))) ) (defun NumberOfVertex (EntityList / ) (cdr (assoc 90 EntityList)) ) (defun HasArcSegment (EntityList / ) (zerop (apply '+ (mapcar 'abs (cd:DXF_massoc 42 EntityList)))) ) (defun DiagonalsAreEqual (Entity / p ) (setq p (cd:DXF_massoc 10 Entity ) ) (if (and (not (zerop (distance (car p)(cadddr p)))) (equal (distance (car p)(caddr p)) (distance (cadr p)(cadddr p)) 0.001 ) ) ) ) (defun AreaIsCorrect (Entity / p ) (setq p (cd:DXF_massoc 10 Entity ) ) (equal (* (distance (car p)(cadr p))(distance (cadr p)(caddr p))) (vla-get-Area (vlax-ename->vla-object Entity)) 0.001 ) ) ) (if (and (IsPolyline EntityList) (IsClosed EntityList) (= (NumberOfVertex EntityList ) 4) (not (HasArcSegment EntityList)) (DiagonalsAreEqual Entity) (AreaIsCorrect Entity) ) ) ) (setq select (vl-catch-all-apply 'entsel (list "\nWskaż prostokąt: "))) ; przechwytuję błąd jeśli Użytkownik wciśnie [ESC] (if (not (vl-catch-all-error-p select)) ; sprawdzam czy wybór jest poprawny (progn (setq SelectedEntity (car select )) (if (IsRectangle SelectedEntity) (setq OutVal 'IsRectangle ) (setq OutVal 'NOTRectangle ) ) ) (setq OutVal 'NothingSelected ) ) OutVal ) Przepraszam jeśli nie działa, zmiany wprowadzałem w samym tekście bo przyznam że nie mam zainstalowanego CADPacka . Obiecuje że zainstaluje i sprawdzę kiedy będę miał trochę więcej czasu.
  9. Upvote
    kruszynski otrzymał(a) reputację od Iskra w Najmniejszy opisany prostokąt - LISP   
    Witam
    Korzystając z samych odcinków prostych pomysł z łączeniem punktów w pary jest bardzo trafny, natomiast nie sprawdzi się w przypadku segmentów łukowych.
    Obiekty graficzne w CAD mają metodę: GetBoundingBox
    np:
    (vl-load-com) (setq util (vla-get-utility (vla-get-activedocument (vlax-get-acad-object)))) (vla-getentity util 'obj 'ip "\nSelect Object: ") (vla-GetBoundingBox obj 'minpoint 'maxpoint) (princ (vlax-safearray->list minpoint ) ) (terpri) (princ vlax-safearray->list maxpoint) Metoda GetBoundingBox przekazuje to zmiennych minpoint  i maxpoint odpowiedni lewy dolny i prawy górny narożnik prostokąta obejmującego element
    Jest tylko jeden problem:  GetBoundingBox wylicza prostokąt obejmujący w układzie globalnym więc zwykle uzyskany prostokąt nie będzie najmniejszym.
    Myślę, że jeśli mamy obracać układem współrzędnych równie dobrze możemy pokręcić samym mierzonym elementem, albo jego kopią. Może i uzyskany prostokąt nie będzie najmniejszy z możliwych, ale przyjmując jakąś rozsądną relację wydajności do dokładności możemy obracać np 90 razy co 1 stopień, lub 180 razy co 0.5 stopnia aż do uzyskania wystarczająco dokładnego efektu w akceptowalnie długim czasie wykonania.
    Pozdrawiam
  10. Upvote
    kruszynski otrzymał(a) reputację od Landor w Nakładka na ZWCADA konwertująca pdf do .dwg lub .dxf   
    Osobiście nie sprawdzałem, ale z deklaracji ZWSOFTu wynika że będzie działało również na wersji Standard
  11. Upvote
    kruszynski otrzymał(a) reputację od Landor w Nakładka na ZWCADA konwertująca pdf do .dwg lub .dxf   
    Proszę spróbować wpisać polecenie appload  i wskazać plik.
    Było jeszcze coś takiego, że w jakimś pliku można było dopisać plik zrx jaki miał ładować się ze startem ZWCADA, ale nie pamiętam jaki to było plik. chyba miał mieć rozszerzenie .rx
  12. Upvote
    kruszynski otrzymał(a) reputację od asemla w Propozycje nowych funkcji dla kolejnej wersji ZWCAD+ 2016   
    Witam
    Wersja 2016 ma mieć dwie rewolucyjne nowości.
     - W samym ZWCADzie ma być wprowadzony moduł do renderingu
     - Program  ma być dostępny również w wersjach na Maca i Linuxa.
    Z pewnością zmian będzie więcej, ale na chwilę obecną te są zatwierdzone.
  13. Upvote
    kruszynski otrzymał(a) reputację od karollos w ZWCAD+ 2012 - druk do PDFa   
    Witam
    Postaram się opracować jakiś program LISP, pozwalający wydrukować wszystkie arkusze z rysunku przez PDFCreator.
    Pozdrawiam
  14. Upvote
    kruszynski otrzymał(a) reputację od karollos w ZWCAD+ 2012 - druk do PDFa   
    Witam
    W załączniku dodałem program, który wszystkie arkusze wydrukuje przez PDFCreator.
    Plik należy wczytać używając polecenia appload
    Po poprawnym wczytaniu pliku, zostanie dodane polecenie "Wielodruk".
    Proszę uruchomić to polecenie a w wyniku jego działania wszystkie arkusze zostaną wydrukowane.
    Program działa na ZWCAD w wersjach Standard i Professional: 2011, 2012, 2012+
    Pozdrawiam
    WieloDruk.zel
  15. Upvote
    kruszynski otrzymał(a) reputację od karollos w ZWCAD+ 2012 - druk do PDFa   
    Witam
    Tak właśnie zrozumiałem zadanie, że procedura ma przebiegać bez ingerencji Użytkownika. Decyzje odnośnie np lokalizacji czy nazw utworzonych PDFów pozostają w ustawieniach samego PDFCreatora. W samej procedurze przypisywana jest jedynie drukarka, nie ingerujemy w inne ustawienia akruszy czyli powinny być użyte takie, jakie są ustawione dla każdego arkusza, chyba że PDFCreator w sobie posiada zdefiniowane ustawienia rozmiaru papieru.
    Pozdrawiam
  16. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w zamiana splajnu na polilinię   
    Witam
    Jest też inne, łatwiejsze rozwiązanie. Wystarczy użyć polecenia flatten.
    Pozdrawiam
  17. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w slice2p   
    Witam
    W odpowiedzi na zgłoszone zapotrzebowanie na nową funkcję przycinającą bryły, opracowałem taką funkcje:
    funkcja nazywa się Slice2p. 
    Funkcja prosi o wskazanie 2 punktów i zaznaczenie brył, które zostają przycięte płaszczyzną przechodzącą przez 2 wskazane punkty i prostopadłą do płaszczyzny XY globalnego układu współrzędnych.
    Plik z funkcją zamieszczam w załączniku
    Slice2p.zip
  18. Upvote
    kruszynski otrzymał(a) reputację od Dżoana w UWAGA. Aktualizacja do Windows 8.1   
    Witam
    W katalogu gdzie zainstalowany jest ZWCAD+ 2012 znajduje się plik: wininet.dll. Proszę spróbować usunąć ten plik. ZWSOFT twierdzi, że to powinno pomóc.
     
    Pozdrawiam
  19. Upvote
    kruszynski otrzymał(a) reputację od KBR w Lisp do opisu   
    Witam
    Problem z MTextem jest taki, że w starszej wersji ZWCADa 
    (command "mtext" pt2 "H" h "J" "Bl" "W" w "") Tworzyło tekst i prosiło Użytkownika o wpisanie treści. Wersji 2012+ MText w tej postaci kończy działanie. Jedyny sposób jaki znam, by w tej sytuacji poprosić Użytkownika o wpisanie tekstu jest użycie funkcji (getstring) Niestety nie pozwala ona na użycie wbudowanego edytora a jedynie podanie treści, która będzie użyta jako wartość tekstu.
    Kolejna sprawa to funkcja:
    (command "layer" "m" "opis" "" "" "" "") gdzie "" kończy polecenie a kolejne "" powtarzają ostatnio użyte polecenia. Funkcja powinna mieć raczej postać: 
    (command "layer" "m" "opis" "") Całość kodu mogłaby wyglądać tak
    (defun c:tt (/ pt1 pt2 e ) (setq osmode1 (getvar "osmode"))(setq osmode3 (getvar "osmode")) (If (= sc2 nil)(setq sc2 (getvar "dimscale"))) (if (= sc3 nil) (progn (setq sc3 (getreal (strcat "\nPodaj skalę rysunku <" (rtos sc2 2 0) ">: ") )) (if (= sc3 nil)(setq sc3 sc2)) (setq sc2 sc3) )) (command "_textstyle" "standard") (setq h (/ (* sc3 25) 10)) (setq h1 (* sc3 0.5)) (setq warstwa (getvar "clayer")) (command "_ortho" "on") (setq war "opis") ;(command "layer" "m" "opis" "" "" "" "") (command "_layer" "m" "opis" "") (command "_osnap" "nea") (setq pt1 (getpoint "\n Start :")) (command "_osnap" "non") (setq pt2 (getpoint "\n To point :")) (setq radx (angtof "0" 0)) ;(setq rady (angtof "90" 0)) ;(setq rad45 (angtof "45" 0)) ;(setq rad60 (angtof "60" 0)) ;(setq rad30 (angtof "30" 0)) ;(setq rad300 (angtof "300" 0)) (setq w (* (* sc3 25) 10)) (setq pt6 (polar pt2 radx w)) (setq wartosc (getstring "podaj treść" )) ;(if (<= (car pt1)(car pt2)) ; (progn ; (command "_mtext" pt2 "H" h "J" "Bl" "W" w wartosc "") ; ) ; (progn ; (command "_mtext" pt2 "H" h "J" "Br" "W" w wartosc "") ; ) ;) ;(if (/= e nil) (command "_leader" pt1 pt2 "a" wartosc "") (command "_regen") (COMMAND "_change" "last" "" "p" "c" "8" "") (command "_layer" "set" warstwa "") (command "_osmode" osmode1 ) );defun  Pozdrawiam
  20. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Czyszczenie rysunku z filtrów warstw.   
    Witam
    Proszę wczytać załączony plik (polecenie _appload). Po poprawnym wczytaniu do ZWCADa dodane zostanie polecenie RemoveLayerFilters, które usuwa wszystkie filtry warstw.
    Pozdrawiam
    RemoveLayerFilters.zip
  21. Upvote
    kruszynski otrzymał(a) reputację od Assgarth w [Visual Lisp] - obiekt TABLE   
    Witam
    Z ostatniego kontaktu z ZWSOFT, który pamiętam a dotyczył Tabel i dostępu przez LISP wynika, że nie było możliwości pracy na tabelach. Z pewnością było to jeszcze przed wydaniem wersji ZWCAD+. Postaram się ustalić jak sytuacja ma się na chwilę obecną i dlaczego nie działa Pana przykład. Może uda się ustalić jakieś rozwiązanie zastępcze np przez (entmod).
    Przy drugim rzucie oka na Pański kod myślę, że lepszym sposobem wstawiania wiersza do Tabeli będzie użycie metody InsertRows. Przykładowy kod, który u mnie zadziałał jest taki:
    (setq Tabela (vlax-ename->vla-object (car(entsel)) ) )
    (vlax-invoke-method Tabela 'InsertRows 3 2.5 2)
    parametry metody są:
    Indeks wstawianego wiersza. (tutaj 3)
    Wysokość wiersza. (tutaj 2.5)
    Ilość wstawionych wierszy. (tutaj 2)

    Pozdrawiam
  22. Upvote
    kruszynski otrzymał(a) reputację od dmatusz3 w Dodatkowe wzory kreskowania w ZWCAD+. Import wzorów z pliku.   
    Witam
    Jeśli każdy wzór jest w oddzielnym pliku .pat, proszę pliki skopiować do katalogu danych użytkownika
    W Windows 7 dane użytkownika są w katalogu
    C:\Users\<NazwaUżytkownika>\AppData\Roaming\ZWSoft\ZWCAD\2012\en-US\Support\
    W Windows XP
    C:\Documents and Settings\<NazwaUżytkownika>\Dane aplikacji\ZWSoft\ZWCAD\2012\en-US\Support\
    Po skopiowaniu plików do tego katalogu, powinny być one dostępne w ZWCAD+
    Pozdrawiam