Assgarth

Użytkownik forum
  • Postów

    218
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    6

Treść opublikowana przez Assgarth

  1. To samo jest przy ustalaniu warstwy: "newlayer". Lub po prostu ustaw w ten sposób: (if (null (tblsearch "Style" "IS_SIMPLEX")) (progn (setq newtextstyle (vla-add mh_textstyles "IS_SIMPLEX")) (vla-put-fontfile newtextstyle "simplex.shx") (vla-put-width newtextstyle 0.7) (vla-put-activetextstyle mh_acd_doc newtextstyle) );progn );if ;============================================================= ;============================================================= (setq mh_LayerTable (vla-get-layers mh_acd_doc)) ;============================================================= (if (null (tblsearch "Layer" "IS_Opis_Znaczników")) (progn (setq newlayer (vla-add mh_LayerTable "IS_Opis_Znaczników")) (vla-put-Color newlayer 41) (vla-put-LineType newlayer "Continuous") (vla-put-LineWeight newlayer 13) (vla-put-activeLayer mh_acd_doc newlayer) ) );if pozdrawiam, Assgarth
  2. Działa raczej poprawnie, ale... tylko przy pierwszym uruchomieniu. Za drugim razem jest błąd, a dokładnie w tym miejscu: (if (null (tblsearch "Style" "IS_SIMPLEX")) (progn (setq newtextstyle (vla-add mh_textstyles "IS_SIMPLEX")) (vla-put-fontfile newtextstyle "simplex.shx") (vla-put-width newtextstyle 0.7) );progn );if (vla-put-activetextstyle mh_acd_doc newtextstyle) Brakuje akcji gdy styl został znaleziony, gdyż wówczas zmienna "newtextstyle" nieistnieje... albo ustawisz ją jako globalną, albo po prostu przypisz jej wartość Twojego stylu. pozdrawiam
  3. Może taki trick byłby wystarczający: (command "_move" (entlast) "" "" "") W ten sposób nie odświeżasz całego rysunku, a jedynie symulujesz operację przesunięcia obiektu. Nic się w sumie nie dzieje, a Twój obiekt zaczyna być widoczny na rysunku... No i jeszcze lepszy sposób to: (entupd (entlast)) pozdrawiam
  4. Włączenie trybów lokalizacji, w żaden sposób nie pomaga. Faktem jest, że domyślnie, na czas wskazywania punktów, włączam OSNAP, a następnie działam na utworzonym zbiorze elementów. Problemem jest jednak to, że jeśli w jednym wskazanym punkcie znajdują się dwa obiekty, to ZW do zbioru dodaje tylko jeden z nich, zamiast obu...
  5. Prawdopodobnie jest to błąd w ZwCAD. Sprawdziłem pod AC i tam nie ma konieczności odświeżania obiektów, rzutni itp. Dla Twoich potrzeb dodaj na koniec: (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport) lub (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acAllViewports) to w zupełności rozwiązuje problem (choć nie jest rozwiązaniem błędu ZW). pozdrawiam
  6. Taki problem wyniknął: chcę dodać do zbioru wskazań obiekty takie jak na załączonym rysunku, za pomocą funkcji: (setq q (ssget "_c" (getpoint) (getpoint))) HELP z ZwCAD: i wszystko jest okey gdy obiekty są w miarę przybliżone (powiększone) na ekranie, natomiast im bardziej je oddalam (pomniejszam), tym większe jest prawdopodobieństwo, że tylko dwa z nich zostaną dodane do zbioru "q". Są to wówczas linia żółta i zielony prostokąt. Linia czerwona jest ignorowana. Tryby lokalizacji są wyłączone (więc nie ma mowy o "przyciąganiu" się elementów). Zielony prostokąt jest "pod" liniami (zresztą z testów wynikało, że nie ma to znaczenia). Dwa punkty, które wskazuję w poleceniu to: - pierwszy prawy górny narożnik prostokąta (pokrywający się z czerwoną linią); - drugi lewy dolny narożnik prostokąta. Oczywiście jest to przypadek do testów, natomiast problem ten jest znacznie bardziej upierdliwy w przypadku funkcji, które muszą operować na tak tworzonych zbiorach... Sprawdzałem całość również na wszelkie możliwe sposoby pod AC i nie było z tym problemów. Jakieś sugestie? Proszę również sprawdzić u siebie czy podobnie program się zachowuje, gdyż może to być kwestia jakiś ustawień zmiennych systemowych etc.
  7. Takie jeszcze dodatkowe spostrzeżenie: ZwCAD gdy nie znajdzie odpowiedniego klucza, zwraca nil, w przypadku gdy AC zwraca "". Na przykład: (getcfg "AppData/MySymbol")
  8. Poprawiono kilka rzeczy w samej strukturze programowania. Nie są one widoczne dla zwykłego "kresko-roba", ale każdy kto programuje, zauważy różnice. Mimo wszystko czekam na coś więcej - konkurencja mocno poszła do przodu...
  9. Tutaj sytuacja się poprawiła. ZwCAD nie wiesza się i wygląda na to, że teraz poprawnie interpretuje polecenie "_select". Sprawdzę jeszcze na kilku innych przykładach. pozdrawiam
  10. Na tej wersji błąd został poprawiony: _VERNUM = "2011.10.30(17176)" Sprawdziłem na wersji PL.
  11. Znikająca możliwość przewijania poleceń w pasku linii poleceń ma miejsce, gdy uruchomione polecenia następujące po sobie, są wprowadzone w jednej linii. Przykład: (command "_.layer" "_set" "0" "")(command "_line") To samo wywołane na zasadzie: (command "_.layer" "_set" "0" "") ENTER (command "_line") zadziała bez problemu. Ogólnie kod programu może mieć zbliżoną strukturę np. (defun Nazwa_Funkcji () (setq a (Funkcja_1)) (if (equal a 1) (command "_line") (command "_circle") ) ) gdzie Funkcja_1 posiada w swojej strukturze np. tworzenie warstwy z polecenia "command". Takie przypadki uniemożliwiają przeglądanie historii poleceń (przewijanie strzałkami), co skutkuje tym, że każde następne jakie chcemy uruchomić, musimy wpisywać z ręki. Co ciekawe: w chwili gdy już pojawi się problem z historią, to jest on aktywny tylko w chwili gdy chcemy uruchomić polecenie, ale gdy już wpiszemy z ręki np. (command "_line") i wówczas zaczniemy używać strzałek (na klawiaturze), to wówczas wszystkie wcześniej użyte polecenia, są wyświetlane...
  12. I jak tam, coś więcej już wiadomo w powyższym temacie? :) pozdrawiam
  13. Dorzucam plik w załączniku. Mój filtr powinien wyłapać tylko białe linie. W AC działa bez problemu. Poleceniem: (entget(car(entsel)) '("*")) można sprawdzić, że różowe linie posiadają XDATA: (-3 ("tmpLine" (1002 . "{") (1000 . "tmpLine") (1002 . "}") Sprawdziłem też pod ZwCAD2011: _VERNUM = "2011.06.30(16923)" i problem również występuje. pozdrawiam, ZK test.dwg
  14. Dokopałem się jeszcze do takiej dokumentacji z HELP: Zatem wynika, że mój kod jest prawidłowy, a nie działa...
  15. Witam, chcę utworzyć grupę obiektów z zadanym filtrem: (ssget '((-4 . "")(-4 . "")(-4 . "AND>"))) problem w tym, że ni cholerę to działa. W HELP dla ZwCAD istnieją tylko takie możliwości: ale najlepsze jest to, że sam zapis w postaci: (setq lstObj (ssget '((-4 . "")))) działa bez problemu - zatem postać " Jak zatem uzyskać filtr, który potrzebuję - czy traktować to jako bug ZwCAD?
  16. Witam, zauważona i potwierdzona przypadłość w przypadku systemu Windows 7 x64: gdy umieszczamy program w katalogu "Program Files (x86)", to musimy się liczyć z tym, że w pewnych obszarach może on działać niepoprawnie, bądź też w ogóle odmówić posłuszeństwa. Przykładem mogą być slajdy, które umieszczone w w/w katalogu, po prostu nie dają się załadować do programu (jedyna działająca metoda to "przeciągnij-upuść"; z poziomu LISP lub poleceniem VSLIDE, nie ma szans). Powyższa uwaga dotyczy wszystkich katalogów, które w nazwie posiadają nawiasy okrągłe "( )"! Błąd ten wynika bardziej z samego systemu Windows, niż ZwCAD'a. To samo dzieje się w przypadku innych programów CAD. pozdrawiam
  17. Tak całkiem z głowy (bo nie sprawdzałem), ale sprawdź czy "QLEADER" lub "LEADER" nie dają takiej możliwości.
  18. Jakiego systemu Windows używasz i jaki program antywirusowy jest włączony? Sprawdź również "Ustawienia kontroli konta użytkownika" i podaj na jakim poziomie są ustawione. Pracujesz jako użytkownik czy jako administrator systemu? Na koniec, podaj jeszcze wersję ZwCAD - vernum. pozdrawiam
  19. Wrzuć tutaj proszę ten rysunek (lub jego część) i podaj na jakiej wersji ZwCAD'a pracujesz. pozdrawiam
  20. Widać, że nie bardzo się orientujesz nie tylko w samym Lisp, ale również ogólnie w programowaniu. To, że coś wydaje się proste w użyciu, nie znaczy, że jest równie proste w oprogramowaniu... No i otrzymałeś informacje, porady, ale nie licz, że od razu ktoś usiądzie i będzie programował funkcje - czas to pieniądz. Tak np kolega z forum cad.pl robi "dla samego robienia". Zatem zgłoś się do "kolegi", albo cierpliwie poczekaj aż ktoś inny znajdzie tę chwilę. I tutaj po raz kolejny pokazujesz, że nie Masz pojęcia co w trawie piszczy. Sam Express Tools nie rozwiąże sprawy w przypadku gdy potrzebujesz użyć LISP'a, bo w AutoCAD LT, Lisp nie jest aktywny...
  21. W AC jest parę linijek kodu, bo istnieje już gotowa biblioteka ET, która wykonuje "brudną" robotę. Poza tym kod który wkleiłeś, pokazuje jak wiele obliczeń i analiz związane jest z nimy trywialnym zagadnieniem. Nie spodziewaj się, że kupisz produkt o 10 razy tańszy i jednocześnie tak samo "wypasiony". Jak ktoś dysponuje wolną chwilą, to może się tym zajmie. Weź jednak pod uwagę, że robienie dla samego robienia, nikogo nie pociąga... Musisz uzbroić się w cierpliwość. W przedstawionym przez Ciebie kodzie, jest masę funkcji, które również odwołują się bezpośrednio do ET, którego w ZwCAD nie ma. Funkcje trzeba czymś zastąpić. Natomiast Twój pomysł na użycie funkcji TRIM jest realny, lecz wymaga zupełnie innego podejście do tematu i przeprowadzenia wielu analiz (wbrew pozorom). pozdrawiam, Assgarth
  22. Zmiana postaci polecenia, na nic się nie przydaje - ZwCAD w tym poleceniu, przy wywołaniu z poziomu LISP'a, po prostu nie działa... (defun C:CIRCTRIM (/ ss ll osm) (if (not etrim)(load "extrim" 1)) (if (setq ss (ssget '((0 . "CIRCLE")))) (progn (setq ll (jk:SSX_SS->List ss) osm (getvar "osmode") ) (setvar "osmode" 0) (foreach % ll ;(etrim % (cdr (assoc 10 (entget %)))) (command "_.extrim" % (cdr (assoc 10 (entget %)))) ) (setvar "osmode" osm) ) ) ) (defun jk:SSX_SS->List (sel / % l) (repeat (setq % (sslength sel)) (setq % (1- %) l (cons (ssname sel %) l) ) ) ) Taki zapis również nie przynosi efektu: (command "_extrim" (car(entsel)) "" (getpoint "\Wskaż punkt: ")) Jeśli nie Masz za dużo tych kółek do obrobienia, to po prostu ręcznie je sobie poucinaj poleceniem "_extrim". Jeśli jest tego bardzo dużo, to proponuję poszukać funkcji tnących obiektów z obiektami (google: "break" "trim" etc.). pozdrawiam
  23. Nie sądzę, gdyż autor sam napisał, że należy mieć ET: http://forum.cad.pl/utnij-wewn-trz-obiektow-t77855.html ...
  24. Funkcja "extrim" związana jest z Express Tools (ET) AutoCAD'a. Możliwe, że jest alternatywna wersja w ZwCAD... EDIT: możesz też zastąpić tę funkcję inną funkcję napisaną w Lisp. np. http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/Why-does-my-LISP-crash-now/td-p/1514962/page/2 pozdrawiam, Assgarth
  25. Witam, sam ZwCAD nie posiada (jak i inne programy CAD) baz rysunkowych dla ogrodów itp., lecz są "nakładki" na te programy, jak wspomniany przez Ciebie "landscape", które rozszerzają możliwości CAD'ów. Dla ZwCAD takim odpowiednikiem może być np. EZ-Plant: http://zwcadusa.com/ez-plant-landscape-architecture-app-bundled-with-zwcad-adds-power-to-the-already-powerful-autocad-alternative/ lub więcej tutaj: Ez-Plant czy tutaj: Ez-Plant pozdrawiam :)