wigus15 Opublikowano 14 Listopada 2016 Zgłoś Opublikowano 14 Listopada 2016 Tak jak w tytule, czy ktoś ma jakiś pomysł jak stworzyć ten bardzo przydatny program ? Bardzo proszę o pomoc.
dmatusz3 Opublikowano 14 Listopada 2016 Zgłoś Opublikowano 14 Listopada 2016 Proszę o jakiś przykład opisujący jak skrypt miałby działać.
wigus15 Opublikowano 14 Listopada 2016 Autor Zgłoś Opublikowano 14 Listopada 2016 Skrypt miałby działać w taki sposób, że w kodzie miałby wpisane stary_napis nowy_napis Nie potrzeba "kontaktu" użytkownika z oknem poleceń, wybór zmiany treść napisu miałby się odbywać na poziomie zmiany kodu programu.
dmatusz3 Opublikowano 14 Listopada 2016 Zgłoś Opublikowano 14 Listopada 2016 Rozumiem, że nazwa warstwy byłaby także na sztywno wpisana do skryptu?
wigus15 Opublikowano 16 Listopada 2016 Autor Zgłoś Opublikowano 16 Listopada 2016 Sorry jestem kompletnym laikiem jeśli chodzi o Lispa i w ogóle ciężko mi wymysleć na jakiej zasadzie ma działać ten program. Po dłuższym zastanowieniu do głowy przyszły mi dwa warianty programu: WARIANT I: Program zamieniający dane obiekty ( w tym przypadku byłyby to obiekty tekstowe) opierałby się na funkcji "subst". WARIANT II: Program opierający się na funkcji "(command "EDTEKST") Czy mógłby ktoś doradzić, który z tych wariantów będzie prostszy do zastosowania ( o ile w ogóle da się napisać program opierając się na tych funkcjach) ?
kruszynski Opublikowano 16 Listopada 2016 Zgłoś Opublikowano 16 Listopada 2016 W ciągu kilku najbliższych dni postaram się przygotować taki program.
wigus15 Opublikowano 16 Listopada 2016 Autor Zgłoś Opublikowano 16 Listopada 2016 Ok, dziękuję między czasie będe starał się samodzielnie robić program. Przepraszam za wprowadzenie w błąd ,ale jednak dane: warstwa, stary napis, nowy napis muszą być wpisywane z okna poleceń. Zrobiłem już kawałek programu, który ma za zadanie pobrać ze zbioru wskazań podane przeze mnie elementy, lecz autocad ciągle informuje mnie o błędnej podanej wartości w ssget. (defun c:aa () (setq warstwa (getstring "Podaj nazwe warstwy: ")) (setq stary_napis (getstring "Podaj stary napis: ")) (setq sel1 (ssget "X" (list (cons 0 TEXT)(cons 1 stary_napis)(cons 8 warstwa))))) O ile się nie mylę cyfry w oznaczają dany parametr szukanego elementu, miałem problem ,aby znaleść identyfikator do parametru treści napisu, czy na pewno jest to "1"?
wigus15 Opublikowano 16 Listopada 2016 Autor Zgłoś Opublikowano 16 Listopada 2016 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))) kruszynski 1
kruszynski Opublikowano 17 Listopada 2016 Zgłoś Opublikowano 17 Listopada 2016 Poszczególne kody DXF może Pan znaleźć np tutaj: http://www.autodesk.com/techpubs/autocad/acad2000/dxf/ Błędna wartość w linii: (setq sel1 (ssget "X" (list (cons 0 TEXT)(cons 1 stary_napis)(cons 8 warstwa))))) to TEXT. Użyte w ten sposób znaczy że TEXT to zmienna. Powinno być "TEXT" (setq nazwa_napisu (ssname napis 1)) ; Informole liczą od 0 a nie od 1. prosze uważać. podmiana wartości tekstu powinna wyglądać tak: (setq nowy_napis2 (subst (cons 1 nowy_napis) (assoc 1 zmiana) zmiana)) dmatusz3 1
kruszynski Opublikowano 17 Listopada 2016 Zgłoś Opublikowano 17 Listopada 2016 jeszcze taki bonus: Jeśli ma Pan problem typu: 15 godzin temu, wigus15 napisał: znaleść identyfikator do parametru treści napisu, może Pan sprawdzić poszczególne paramtery i ich wartości : (entget(car(entsel)))
wigus15 Opublikowano 17 Listopada 2016 Autor Zgłoś Opublikowano 17 Listopada 2016 Dzięki wielkie za pomoc, program zrobiony ;)
Rekomendowane odpowiedzi