wigus15 Posted November 14, 2016 Report Share Posted November 14, 2016 Tak jak w tytule, czy ktoś ma jakiś pomysł jak stworzyć ten bardzo przydatny program ? Bardzo proszę o pomoc. Link to comment Share on other sites More sharing options...
dmatusz3 Posted November 14, 2016 Report Share Posted November 14, 2016 Proszę o jakiś przykład opisujący jak skrypt miałby działać. Link to comment Share on other sites More sharing options...
wigus15 Posted November 14, 2016 Author Report Share Posted November 14, 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. Link to comment Share on other sites More sharing options...
dmatusz3 Posted November 14, 2016 Report Share Posted November 14, 2016 Rozumiem, że nazwa warstwy byłaby także na sztywno wpisana do skryptu? Link to comment Share on other sites More sharing options...
wigus15 Posted November 14, 2016 Author Report Share Posted November 14, 2016 Tak Link to comment Share on other sites More sharing options...
wigus15 Posted November 16, 2016 Author Report Share Posted November 16, 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) ? Link to comment Share on other sites More sharing options...
kruszynski Posted November 16, 2016 Report Share Posted November 16, 2016 W ciągu kilku najbliższych dni postaram się przygotować taki program. Link to comment Share on other sites More sharing options...
wigus15 Posted November 16, 2016 Author Report Share Posted November 16, 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"? Link to comment Share on other sites More sharing options...
wigus15 Posted November 16, 2016 Author Report Share Posted November 16, 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 Link to comment Share on other sites More sharing options...
kruszynski Posted November 17, 2016 Report Share Posted November 17, 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 Link to comment Share on other sites More sharing options...
kruszynski Posted November 17, 2016 Report Share Posted November 17, 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))) Link to comment Share on other sites More sharing options...
wigus15 Posted November 17, 2016 Author Report Share Posted November 17, 2016 Dzięki wielkie za pomoc, program zrobiony ;) Link to comment Share on other sites More sharing options...
dmatusz3 Posted November 24, 2016 Report Share Posted November 24, 2016 Dziękuję za informacje. Link to comment Share on other sites More sharing options...
Recommended Posts