LISPY


KBR
 Share

Recommended Posts

Witam!

Mam wiele własnych procedur przede wszystkim napisanych autolispie. Większość chodzi, ale czasem są błędy. Np ostatnio zauważyłem, że w procedurze mam wpisane, aby po zakończeniu zadania nie zmieniła się zmienna osnap (w procedurze zmieniam ją). W Autocadzie to działało w ZWCadzie czyści cały osnap.

Jak jest ze stałymi w ZWCAdzie czy podobnie jak w AUTOCadzie. Gdzie można uzyskać całą listę zmiennych?

Czy może będzie dodane do ZWC jakieś narzędzie do pisania procedur?

Link to comment
Share on other sites

Witam,

od 2 stycznia zatrudniamy nową osobę.

Będzie ona zajmowała się tylko wsparciem technicznym dla użytkowników ZWCADa.

Jest to także doświadczony programista, tworzący wcześniej nakładki dla AC.

Myślę, że udzieli Panu szczegółowych informacji na ten temat.

Pozdrawiam

Link to comment
Share on other sites

Witam

Jestem tym nowym pracownikiem i postaram się w miarę moich możliwości pomóc w rozwiązywaniu takich problemów.

Aktualny stan osnapów zapisany jest w zmiennej systemowej "osmode" więc jedno z możliwych rozwiązań pańskiego problemu jet następujące

1. zapisujemy do zmiennej aktualne ustawienia osnapów

2. zmieniamy aktualne ustawienia

3. na końcu procedury przywracamy stan początkowy

przykład:

(setq LastOSNAPs (getvar "osmode" ))

; tutaj piszemy własne procedury, mogące również zmieniac ustawienia osnapów

.

.

.

;----------------------------------------------

(setvar "osmode" LastOSNAPs) ; przywraca początkową konfigurację.

Jeśli to nie pomoże to proszę o przesłanie kodu pańskiej procdury. Interesują mnie tylko te linijki, w których zmienia Pan osnapy.

Co do zmiennych systemowych to ich listę można znaleźć helpie

Niestety nie ma narazie żadnego narzędzia do tworzenia procedur lispowych (poza podstawowymi programami do edycji plików tekstowych).

Można jedynie rejestrować makra [Narzędzia -> Rejestruj skrypt ] -> Wpiać nazwę pliku. Po zakończeniu rysowania [Narzędzia -> Stop..]. Powstanie plik z rozszerzeniem scr, który można edytować jak plik tekstowy. Plik w którym zarejestrowane zostanie makro zawiera jedynie polecenia rysowania obiektów oraz listę wskazanych współrzędnych. Jeśli w czasie rejestracji makra zostaną zmienione np ustawienia osnapów informacja ta nie zostanie zapisana w makrze.

Jeśli w którejś z nowych wersji ZWCADa zostanie dodany edytor zamieszczę tu odpowiedią informację.

Link to comment
Share on other sites

Poprzedni post mi pomógł w AC miałe w częsci jako stało użytą "osnap", a gdze niegdzie nie zwracałem na to uwagi bo miałem standardowo wyłączone osnap'y. Najczęściej używane np _end, _mid i _ipla(_int) miałem podpięte pod SHIFT (CTRL, SHIFT+CTRL) i prawy przycisk myszy, ale w ZWC jest to nie możliwe -szkoda.

w innym temacie napisałem

"Instalując 2009 coś sobie zepsułem w 2008.

Teraz program otwiera się bez moich ustawień (IKON) dopiero jak przywrócę profil w menu ustawienia profile, pokazują się moje ikony (na szczęście). Jestem pełen obaw".

Czy coś z tym można zrobić?

Link to comment
Share on other sites

Mam jeszcze jedna sprawę - edycja atrybutów.

W AC

w ikonach miałem np takie polecenie:

*^C^C-attedit;;;;;\;v;r;\;

umożliwiało to edycje pojedynczego atrybutu po kliknięciu na niego, bez konieczności w chodzenia w okno dialogowe i wybierania atrybutu do edycji.

Czy ZWC planuje coś na to poradzić?

Część lispów które bazowały na zmianie pojedynczych atrybutów nie chodzi, teraz dokładnie nie pamiętam które.

Link to comment
Share on other sites

Dzisiaj próbowałem zastosować taką sekwencję

Polecenie: _-attedit

Edycja jednego na raz atrybutu? n

Globalna edycja atrybutów.

Edytować tylko atrybuty widoczne na ekranie? n

W jakim bloku edytowaćatrybuty? <*>:

Edytuj atrybutów o tej nazwie <*>: nre

Edytuj atrybuty z tekstem <*>: 14

6 zaznaczonych elementów.

Tekst do zmiany: 14

Nowy tekst: 4

I atrybuty pozostają nie zmienione. Nie rozumiem o co chodzi?

Link to comment
Share on other sites

  • 4 weeks later...

problem jest w tym, że chcialem sie posluzyc programem napisanym dla AutoCADa w ZWCadzie i wyskoczyl mi blad ze nie mozna uzyc geomcal.arx

Zatem jakie funkcje mnie interesuja to jeszcze nie wiem, ale sie rozeznam, bo jestem

na etapie nauki.

Myślałem, że można jakoś prosto używać tej funkcji w ZWCad.

Może jakiś przykład użycia mógłby Pan pokazać?

Link to comment
Share on other sites

Ale przykłady czego Pana interesują? w ZWCADzie nie da sie używać geomcal. a w AutoCADzie to jest dosyć dobrze opisane z przykładami w helpie użytkownika AutoCADa (nie w helpie VisualLISP). Część funkcji z biblioteki geomcal można w miarę prosto napisać w LISPie, dlatego pytałem co Pana interesuje

Link to comment
Share on other sites

potrzebowałbym np. do obliczenia punktu środkowego pomiędzy dwoma znanymi punktami

(cal "(x1+x2)/2")

Pytanie nr 2 to czy można funkcje vlax-get-acad-object z AutoCADa inaczej napisać pod ZWCADem oraz inne funkcje zamiast vla- które istnieją pod AutoCADem.

pozdrawiam

Link to comment
Share on other sites

To z punktem środkowym jest bardzo proste, wystarczy policzyć srednie między poszczególnymi współrzędnymi

(defun midpoint (p1 p2 /)
(list  (/ (+ (car p1) (car p2))2)
(/ (+ (cadr p1) (cadr p2))2)
(/ (+ (caddr p1) (caddr p2))2))
)

(setq mid(midpoint x1 x2))

Z funkcjami vlax- jest znacznie poważniejszy problem. Producenci zwcada pracują nad tymi funkcjami, ale nie są one jeszcze dostępne. Nie znam sposobu jak można to inaczej zapisać

Link to comment
Share on other sites

  • 4 weeks later...
Witam,

polecenie attedit i automatyczne wczytywanie profili jest sprawdzane przez producenta.

Gdyby ktoś chciał sprawdzić status to podam numery zgłoszeń:

- attedit - 9041,

- profil - 9285.

Pozdrawiam

Czy już coś wiadomo o poleceniu attedit?

Jak można sprawdzić status?

Link to comment
Share on other sites

Witam,

polecenie attedit i automatyczne wczytywanie profili jest sprawdzane przez producenta.

Gdyby ktoś chciał sprawdzić status to podam numery zgłoszeń:

- attedit - 9041,

- profil - 9285.

Pozdrawiam

Czy już coś wiadomo o poleceniu attedit?

Jak można sprawdzić status?

Attedit - problem zostanie rozwiązany w aktualizacji kwietniowej,

Profil - problem jest w trakcie rozwiązywania

Informacje odnośnie statusu można uzyskać pisząc na adres e-mail tech@zwcad.com podając numer problemu. Językiem "urzędowym" jest angielski.

Link to comment
Share on other sites

  • 2 weeks later...

Witam!

Nie chodzi mi taka procedura ,

(DEFUN c:dlsr (/ DLU)

(setq sc (getvar "dimscale"))

(if (> sc 10)(setq mnozna 1)(setq mnozna 10))

(setq ile (getint (strcat "\nPodaj ilość prętów <50> :")))

(if (= ile nil)(setq ile 50))

(setq dlu1 0)

(setq nr 0)

(repeat ile

(prompt "\nWskaż PRĘT :")

(command "lengthen" pause "")

; (command "list" pause)

(SETQ dlu2 (GETVAR "PERIMETER"))

; (setq koniec (getint (strcat "\jeżeli konoiec 0 jezeli nie 1 <1> :")))

; (if (= koniec nil)(setq koniec 1))

; (if (= koniec 0)(setq ile nr))

(SETQ dłu3 (fix (/ dlu2 10)))

(setq dlu2 (* (+ dłu3 1) 10))

(setq nr (+ nr 1))

(setq dlu1 (+ dlu1 dlu2))

(prompt (strcat "\Dlugość wskaz.: <"(Itoa nr)"> - <" (rtos (/ dlu2 mnozna) 2 0) "> suma <" (rtos (/ dlu1 mnozna) 2 0)" >"))

(setq dlu2 0)

)

(Setq dsr1 (/ dlu1 nr))

(SETQ dsr2 (fix (/ dsr1 10)))

(setq dsr1 (* (+ dsr2 1) 10))

(setq dlug (rtos dsr1 2 0))

(setq dlu (getreal (strcat "\ndlugość całkowita :<"dlug"> ")))

(if (= dlu nil)(setq dlu dlug))

(command "ATTEDIT" "" "" "" "" pause "" "Value" "" dlu "")

)

Wydawało mi się że ja już użyłem i było ok.

Wartość PERIMETER nie zmienia siępo wskazaniu lini.

Oczywiście zmiana atrybutu nie chodziła nigdy, ale przynajmniej mogłem obliczyć średnią.

Link to comment
Share on other sites

Procedura "chodzi" (oprócz Attedit) tylko robi coś innego niż Pan zamierza nią zrobić.

Wartość zmiennej PERIMETER nie zmienia się, bo funkcjia "lengthen" jej nie zmienia Polecam lekturę helpa do zmiennej PERIMETER. Jeśli udało się Panu użyć tej procedury, to przed zakomentowaniem linijki "(command "list" pause)". Zmienna systemowa "Perimeter" określa obwód ostatnio zmierzonego obiektu. Jej wartość zmienia się tylko w wypadku użycia funkcji "LIST" i "AREA", a wskazany obiekt musi być zamkniętą polilinią, lub okręgiem, w przypadku innych niezamkniętych obiektów, ta zmienna nie zmieni wartości.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share