xposdi Opublikowano 12 Października 2020 Zgłoś Udostępnij Opublikowano 12 Października 2020 Cześć, mam prośbę, czy mógłby mi ktoś pomóc potrzebuję wstawić sporą ilość bloków wg zadanych współrzędnych dodatkowo aby można było wstawione bloki identyfikować, chciałbym aby do każdego bloku dodawał się również zdefiniowany atrybut opcja najprostsza: dane X,Y,ATT1 opcja rozbudowana dane X,Y,ATT1,ATT,ATT3 konstrukcja danych oczywiście jest do zmiany wg konieczności, aby program był niezawodny z góry dzięki za pomoc dane-opcja najprostrza.csv sample(1).dwg dane- wersja rozbudowana.csv Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 12 Października 2020 Zgłoś Udostępnij Opublikowano 12 Października 2020 Jasne, mogę pomóc. Jaka pomoc byłaby potrzebna? Sporo przykładów i wyjaśnienie najprostszych pojęć jest tutaj. https://www.zwcad.pl/1-narzedzia-do-lisp.html https://www.zwcad.pl/1-narzedzia-do-lisp/39-kursy/kurs-lisp/przyklady-lisp/111-2-odczyt-pliku-tekstowego.html https://www.zwcad.pl/help/lisp-help.html Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
perlon Opublikowano 12 Października 2020 Zgłoś Udostępnij Opublikowano 12 Października 2020 A ja od razu z rybą 😉 Trochę pozlepiałem z tego co miałem u siebie i wyszło mi coś takiego. Lisp wczytuje plik csv z trzema atrybutami. Przy testach były kłopoty z kodowaniem polskich liter w pliku csv ale tym się nie zajmowałem. (princ "\nImport współrzędnych wstawienia bloku z pliku tekstowego v.0.1(beta)") (princ "\nCopyright (c)2020 by Perlon") (princ "\nŁadowanie funkcji c:txt2blocks.........") (defun c:txt2blocks ( / p_dat o_dat linia *error* counter) (defun *error* (msg) (if (not (member msg '("Function cancelled" "quit / exit abort"))) (princ (strcat "\nError: " msg)) ) (princ) ) (setq p_dat (getfiled "Wpisz nazwę pliku" "" "csv" 0)) (if p_dat (progn (setq o_dat (open p_dat "r")) (setq counter 0) (setvar 'OSMODE 0) (while (setq linia (read-line o_dat)) (progn (setq counter (1+ counter)) (if (> (strlen linia) 0) (progn (setq lista (cd:CON_String2List linia '(","))) (command "_.INSERT" "HP_B2" "_s" 1 "_r" 0 (list (car lista) (cadr lista)) (caddr lista) (cadddr lista) (cadr (cdddr lista))) ) ) ) ) ) ) (princ (strcat "\nPrzetworzono " (itoa counter) " punktow")) (princ) ) (princ " Załadowane.") (princ) ; =========================================================================================== ; ; Konwersja takstu z separatorami na liste / ; ; ------------------------------------------------------------------------------------------- ; ; (cd:CON_String2List "1;2;3;" '(";")) ; ; =========================================================================================== ; ;;;* ------------------------------------------------------------------------------------- *;;; ;;;* PODZIAŁ ŁAŃCUCHA TEKSTOWEGO NA LISTĘ *;;; ;;;* *;;; ;;;* Funkcja rozbija łańcuch tekstowy na listę *;;; ;;;* Autor: Bill Kramer - opublikowana w CADENCE 4/97 *;;; ;;;* *;;; ;;;* Argumenty funkcji: *;;; ;;;* =================== *;;; ;;;* S - łańcuch tekstowy do podziału *;;; ;;;* D - lista separatorów (lista łańcuchów tekstowych) *;;; ;;;* *;;; ;;;* Uwaga: Jeżeli w łańcuchu do rozbicia znajdują się liczby typu INT, funkcja *;;; ;;;* zwraca je jako REAL *;;; ;;;* ------------------------------------------------------------------------------------- *;;; (defun cd:CON_String2List (s d / buf res cnt ch digs isnum temp) (setq buf "" cnt 1 isnum T digs '("." "+" "-" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9") ) (repeat (strlen s) (setq ch (substr s cnt 1) cnt (1+ cnt) ) (cond ((and (member ch d) (> (strlen buf) 0)) (cond ((= (strcase buf T) "nil") (setq res (cons nil res)) ) ((= isnum T) (setq res (cons (if (= (atoi buf) (atof buf)) (atoi buf) (atof buf) ) res ) ) ) (T (setq res (cons buf res))) ) (setq buf "" isnum T ) ) ((not (member ch d)) (setq buf (strcat buf ch)) (if (null (member ch digs)) (setq isnum nil) ) ) ) ) (if (> (strlen buf) 0) (setq res (cons (if isnum (atof buf) buf ) res ) ) ) (reverse res) ) dmatusz3 1 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.