Lisp odchyłka wysokościowa

Zaczęty przez support, Czwartek 26 Marzec 2015, 10:27:25

Poprzedni wątek - Następny wątek

0 użytkowników i 2 Gości przegląda ten wątek.

Geod

W rysunku AutoCAD masz jakąś stała rzedną np. posadzka i jakieś punktu (pomiar)?

supportAutor w?tku

Hmmm, czyli wszystko ręcznie?
Sadziłem że to potrafi jakoś z warstwy odczytać zmienną jakiś pomierzony poziom posadzki i podaję wartość danego "zera" wskazuje warstwę z pomiaru rzędnych i lisp sam wstawia tekst w wartością odchyłki ...
A tutaj to tylko tyle że tworzy warstwę o nazwie odchyłka w kolorze zielonym ...
"Być narodowi użytecznym" - Stanisław Staszic, Patron techników polskich.


Geod

Powinno działać w ten sposób:
1. Wczytujesz lispa polecenie:  _appload
2. Uruchamiasz program polecenie: odwys2
3. Pojawia się zgłoszenie "Wprowadz odchylke: " wpisujesz tekst.
4 . Pojawia się zgłoszenie wstawienia punktu "Punkt wstawienia: " wybierasz punkt i akceptujesz lewym przyciskiem myszy.
Powtarzasz pkt 3 i 4

supportAutor w?tku

Jeszcze wrócę do tego, nie działa mi to jak powinno w ac 2008 lub coś robię źle, mam coś zaznaczyć jakąś warstwę czy coś ... jak to prawidłowo działa.
"Być narodowi użytecznym" - Stanisław Staszic, Patron techników polskich.


Geod

#5
Cześć, tak wygląda objaśnienie do kodu jeśli to komuś pomoże. Po średniku jest krótkie wyjaśnienie dla każdej linijki.
Kod należy umieścić w pliku z rozszerzeniem .lsp w folderze (domyślnie support) i w AutoCAD załadować poleceniem  __appload
To co po średniku w danej linijce jest ignorowane przez kompilator autolisp
(defun c:odwys (/ snap warsaktualna odch pwst dtd) ;definiowanie nowego polecenia oraz zmiennych lokalnych
  (setq snap (getvar "osmode")) ;pobranie zmiennej systemowj kodu lokalizacji
  (command  "_OSNAP" "_NONE"); wyłączenie lokalizacji
  (setq warsaktualna (getvar "clayer")); pobranie zmiennej systemowej nazwy warstwy aktaulanej
  (command "_layer" "_m" "odchyłkawys" "");tworzenie nowej warstwy o nazwie "odchyłkawys"
  (command "_layer" "_c" 3 "" "");przypisanie koloru nowostworzonej warstwie
  (setq odch (getstring "Wprowadz odchyłke:"));pobranie tekstu od uzytkownika
  (setq pwst (getpoint "Punkt wstawienia:")); pobranie wspolrzednych od uzytkownika
  (setq dtd 1.0);podstawienie zmiennej wartosci 1.0
  (command "_circle" pwst (* dtd 1.4));Rysowanie okregu wspolrzednych srodka pwst i promieniu (* dtd 1.4)
  (command "_text" (polar pwst (+ pi (/ pi 7)) (* dtd 1.4)) dtd 0 odch);Tworzenie tekstu
  ;(polar pwst (+ pi (/ pi 7)) (* dtd 1.4)) - odpowiada za loklizacje tekstu (funkcja polar jest tu nie potrzebna)
  ;dtd - wysokosc tekstu
  ;0 - kat obrotu tekstu (układ matematyczny)
  ;odch - ciag znakow wstawiony do tesktu
  (command "_layer" "_s" warsaktualna "");Ustawienie warstwy jako aktualnej ktora jest przypisna zmiennej systemowej
  (setvar "osmode" snap);Ustawienie lokalizacji takiej jaka byla podstawiona zmiennej snap
  )


RoBoCIK połączył wiadomości: Poniedziałek 21 Marzec 2016, 18:20:51

Dorzucę swoją wersję alternatywną która "robi to samo". W moim mniemaniu jest trochę lepsza.
(defun c:odwys2 (/ odch pwst)
  (while
    (and
      (setq odch (getstring t "\nWprowadz odchylke: "))
      (setq pwst (getpoint "\Punkt wstawienia: "))
      (entmakex (list (cons 0 "TEXT") (cons 10  (polar pwst 3.6 1.4)) (cons 40 1.0) (cons 1 odch)))
      (entmakex (list (cons 0 "CIRCLE") (cons 10 pwst) (cons 40 1.4)))
      )
    )
  (princ)
  )

Pozdrawiam

supportAutor w?tku

"Być narodowi użytecznym" - Stanisław Staszic, Patron techników polskich.


supportAutor w?tku

Witaj,
temat dawno temu poruszony na forum, czy mógłbyś łopatologicznie dla potomnych objaśnić działanie lisp'a
oraz jak wczytać i co zrobić po kolei by zadziałał.
dziękuję
"Być narodowi użytecznym" - Stanisław Staszic, Patron techników polskich.


Geod

Cześć.
Brakowało jednej zmiennej.
(defun c:odwys (/ snap warsaktualna odch pwst dtd)
  (setq snap (getvar "osmode"))
  (command  "_OSNAP" "_NONE")
  (setq warsaktualna (getvar "clayer"))
  (command "_layer" "_m" "odchyłkawys" "")
  (command "_layer" "_c" 3 "" "")
  (setq odch (getstring "Wprowadz odchyłke:"))
  (setq pwst (getpoint "Punkt wstawienia:"))
  (setq dtd 1.0)
  (command "_circle" pwst (* dtd 1.4))
  (command "_text" (polar pwst (+ pi (/ pi 7)) (* dtd 1.4)) dtd 0 odch)
  (command "_layer" "_s" warsaktualna "")
  (setvar "osmode" snap) 
  )


Teraz lisp nawet dział.
Zamierzeniem autora było troszkę przyśpieszone wstawianie tekstu. Największym mankamentem tego lispa jest przy każdym uruchomieniu tworzenie warstwy która już istnieje w rysunku.

supportAutor w?tku

Witam,

w moje ręce wpadł list który wpisuje odchyłkę wysokościową - mam prośbę czy ktoś z was potrafi uruchomić.
Nie chodzi mi oczywiście o narzędzia -> Wczytaj aplikacje i wskazanie lispa.

Jeżeli jest ktoś światły w cadzie bardzo proszę o pomoc i mały Know-how.
"Być narodowi użytecznym" - Stanisław Staszic, Patron techników polskich.