marcin.czyzewski Opublikowano 21 Maja Zgłoś Opublikowano 21 Maja Dzień dobry, Pierwszy raz korzystam z pomocy na jakimkolwiek forum Chciałbym wygenerować „skorowidz” elementów MLEADER. Oznaczenie + pozycja na arkuszu do wydruku na podstawie siatki podziału (np. 2 -> B1). Coś jak na papierowych mapach, aby łatwiej było odnaleźć element na dużym arkuszu. Nie jestem znawcą AutoCAD’a, więc mogę źle opisywać elementy interfejsu i nie do końca rozumieć "zasady", którymi rządzi się to oprogramowanie. Mam kilka pomysłów jak, to napisać, ale jak zwykle pojawia się problem u podstawy rozwiązania (możliwe, że wynika z mojej niewiedzy). Po odczytaniu pozycji elementu MLEADER, który jest osadzony na warstwie „X” na karcie „Model” i siatki (dla ułatwienia też dodanej na warstwie „X”) na karcie "Układ", nie jestem w stanie powiązać pozycji elementów. Interesuje mnie tylko rozwiązanie wzajemnego pozycjonowania obiektów na karcie "Układ", kiedy elementy z "Modelu" są w odpowiedniej skali. Czy jest jakiś układ współrzędnych, który daje możliwość powiązania elementów, które są wyświetlane na karcie "Układ". Obiekty w rzutni są skalowane 100:1. Może jest jakieś gotowe rozwiązanie. Cytuj
pawmal Opublikowano 21 Maja Zgłoś Opublikowano 21 Maja Witam, Nie wiem czy dobrze rozumiem zagadnienie, ale moim zdaniem wystarczy raz umieścić odnośniki tylko w modelu, a na arkuszu wyświetlić te widoki przez rzutnię w odpowiedniej skali. Polecenie -NFRAGM (-PAN) umożliwia także przesunięcie widoku w rzutni o określoną wartość -gdyby była taka potrzeba. Cytuj
marcin.czyzewski Opublikowano 21 Maja Autor Zgłoś Opublikowano 21 Maja Dzień dobry, Dziękuję za odpowiedź. Niestety, to nie jest ten problem. Chodzi o odczytanie za pomocą LISP (X,Y) pozycji pojedynczych elementów i sprawdzenie czy np. MLEADER "1" jest w "kwadracie" siatki A1. Dokładniej, odczytać potrafię ale wartości, które się pojawiają wskazują, że to różne układy współrzędnych. Cytuj
dmatusz3 Opublikowano 21 Maja Zgłoś Opublikowano 21 Maja Dzień dobry, chciałem się tylko upewnić. Odnośniki wstawia Pan w przestrzeni modelu. W arkuszu ma Pan przygotowaną formatkę, gdzie są oznaczone sekcje rysunku. Po dopasowaniu modelu do arkusza potrzeba utworzyć zestawienie odnośników wraz z podaniem numeru sekcji arkusza gdzie taki odnośnik występuje. W takim zestawieniu ważniejszy jest punkt, do którego odnosi się mleader, czy treść mleadera? Co zrobić w przypadku gdy do mleadera jest więcej odnośników? Jeśli np. tekst odnośnika leży na przecięciu sekcji to jak go oznaczyć? Cytuj
marcin.czyzewski Opublikowano 21 Maja Autor Zgłoś Opublikowano 21 Maja Dzień dobry, Odnośniki wstawia Pan w przestrzeni modelu. W arkuszu ma Pan przygotowaną formatkę, gdzie są oznaczone sekcje rysunku. Po dopasowaniu modelu do arkusza potrzeba utworzyć zestawienie odnośników wraz z podaniem numeru sekcji arkusza gdzie taki odnośnik występuje. // Dokładnie tak W takim zestawieniu ważniejszy jest punkt, do którego odnosi się mleader, czy treść mleadera? // Ważniejszy pkt. mleadera Co zrobić w przypadku gdy do mleadera jest więcej odnośników? // Tego pytania nie rozumiem ... 1 mleader z jednym opisem a dokładnie 1 numerem, niepowtarzalnym Jeśli np. tekst odnośnika leży na przecięciu sekcji to jak go oznaczyć? // Arbitralnie trzeba przyjąć, chociaż jeżeli mówimy o punkcie, to raczej się nie zdarzy Ja zatrzymałem się w miejscu, gdzie tym samym LISPEM wstawiam koordynaty, a w zależności gdzie wstawiam (MODEL, UKŁAD) dostaję inne wartości. Jak wyciągam do pliku pozycję, to podobnie. Cytuj
dmatusz3 Opublikowano 21 Maja Zgłoś Opublikowano 21 Maja 4 godziny temu, marcin.czyzewski napisał: Co zrobić w przypadku gdy do mleadera jest więcej odnośników? // Tego pytania nie rozumiem ... 1 mleader z jednym opisem a dokładnie 1 numerem, niepowtarzalnym Miałem coś takiego na myśli Cytuj
marcin.czyzewski Opublikowano 22 Maja Autor Zgłoś Opublikowano 22 Maja Dzień dobry, Rozumiem. Nie przewiduję takiej sytuacji. 1 mleader z jednym 1 numerem, niepowtarzalnym. Cytuj
marcin.czyzewski Opublikowano 22 Maja Autor Zgłoś Opublikowano 22 Maja Po wyciągnięciu właściwości obiektów, nie widzę możliwości powiązania. Jakiejś wspólnej warstwy, na której obiekty mają "znormalizowane" wartości X,Y położenia. Może jest jakichś przelicznik, który wiąże skalę rzutni + położenie z modelu + koordynaty na arkuszu. Cytuj
dmatusz3 Opublikowano 22 Maja Zgłoś Opublikowano 22 Maja Dziękuję za informacje, postaramy się coś wymyślić. Cytuj
dmatusz3 Opublikowano 22 Maja Zgłoś Opublikowano 22 Maja Odnośniki z modelu można łatwo przenieść do przestrzeni papieru. Wtedy współrzędne będą pokazywane względem papieru. Służy do tego polecenie _chspace Sposób działania pokazaliśmy na filmie poniżej. Mamy taki pomysł: Zrobić LISP, który wstawia blok, który jest punktem. Blok wstawiamy na początku grotu strzałki. Blok posiada atrybut, którego wartość jest taka sama jak tekstu mleadera. Przechodzimy do arkusza. Za pomocą polecenia _chspace przenosimy te bloki do przestrzeni papieru. Tworzymy zestawienie tych bloków za pomocą ekstrakcji danych (_DATAEXTRACTION) Cytuj
RobS Opublikowano 22 Maja Zgłoś Opublikowano 22 Maja Cześć, Napisałem skrypt LISP który realizuje zagadnienie wyżej. Po wpisaniu polecenia SKOROSZYT i wybraniu MLeadera wstawia blok w grocie strzałki. Do atrybutu bloku przepisany jest tekst z MLeadera. Nagranie jak to działa poniżej. Plik DWG ze zdefiniowanym blokiem na którym przeprowadziłem test załączam do posta. (princ (strcat " Copyright © 2000 — 2024 Uslugi Informatyczne Szansa www.zwcad.pl Dostepne polecenia: SKOROSZYT - Wstawia blok z atrybutem w punkcie wstawienia MLeadera ") ) (defun C:SKOROSZYT (/ mLeader mLeaderCord mLeaderText) (setvar "CMDECHO" 0) (setvar "CMDDIA" 0) (setvar "ATTDIA" 0) (while (not (and (setq mLeader (entsel "\nWybierz MLEADERA: ") mLeaderName (car mLeader) ) (eq (cdr (assoc 0 (entget mLeaderName)))"MULTILEADER") ) ) (prompt "\nProsze wybrac MLEADERA!") ) (setq mLeaderCord (list (cadr (assoc 110 (entget mLeaderName))) (caddr (assoc 110 (entget mLeaderName)))) mLeaderText (cdr (assoc 304 (entget mLeaderName))) ) (command "-insert" "Skoroszyt" mLeaderCord "" "" "" mLeaderText) (princ) ) Skoroszyt.dwg Skoroszyt.lsp Cytuj
wedzik Opublikowano 23 Maja Zgłoś Opublikowano 23 Maja Lepiej zaznaczyć mleadery oknem, albo wybrać wszystkie niże pojedynczo. Cytuj
RobS Opublikowano 23 Maja Zgłoś Opublikowano 23 Maja (edytowane) Cześć, Wprowadziłem zmianę zgodnie z sugestiami, elementy można zaznaczyć grupowo oknem. Poza tym wszystko działa bez zmian, funkcję można wywołać poleceniem SKOROWIDZ (widzę, że powyżej przez pomyłkę pisałem skoroszyt) Plik LSP z wprowadzonym usprawnieniem załączam do posta. SKOROWIDZ.lsp Edytowane 23 Maja przez RobS Cytuj
marcin.czyzewski Opublikowano 23 Maja Autor Zgłoś Opublikowano 23 Maja Dzień dobry, Serdecznie dziękuję za wsparcie. Nie spodziewałem się takiego odzewu. Jestem bardzo mile zaskoczony. Dopiero jutro będę miał czas na sprawdzenie rozwiązań i podpowiedzi (praca poza biurem na obiekcie). Dziękuje za pomoc. Cytuj
RobS Opublikowano 24 Maja Zgłoś Opublikowano 24 Maja Cześć, Napisałem skrypt PRZENIESBLOKI.lsp który zautomatyzuje punkt 5. Będąc w rzutni za pomocą polecenia PRZENIESBLOKI bloki o nazwie Skorowidz zostają wybrane i przeniesione do przestrzeni papieru. W dniu 22.05.2024 o 14:47, dmatusz3 napisał: Mamy taki pomysł: Zrobić LISP, który wstawia blok, który jest punktem. Blok wstawiamy na początku grotu strzałki. Blok posiada atrybut, którego wartość jest taka sama jak tekstu mleadera. Przechodzimy do arkusza. Za pomocą polecenia _chspace przenosimy te bloki do przestrzeni papieru. Tworzymy zestawienie tych bloków za pomocą ekstrakcji danych (_DATAEXTRACTION) (princ (strcat " Copyright © 2000 — 2024 Uslugi Informatyczne Szansa www.zwcad.pl Dostepne polecenia: PRZENIESBLOKI - Przeniesienie blokow o nazwie Skorowidz do przestrzeni papieru ") ) (defun C:PRZENIESBLOKI (/ blockList) (setq blockList (ssget "X" (list (cons 0 "INSERT") (cons 2 "Skorowidz")))) (command "_chspace" blockList "") (princ) ) Cytuj
dmatusz3 Opublikowano 24 Maja Zgłoś Opublikowano 24 Maja Podsumuję algorytm. 1. Załóżmy, że posiadamy plik, gdzie odnośniki są w przestrzeni modelu. 2. Potrzebny będzie blok Skorowidz.dwg Proszę go wstawić do rysunku (wystarczy przeciągnąć na okno rysunku). 3. Uruchamiamy skrypt SKOROWIDZ_1.lsp poleceniem SKOROWIDZ (wystarczy go przeciągnąć na okno rysunkowe programu). W wyniku tego przy grocie mleadera zostanie wstawiony blok, a do jego atrybutu zostanie wstawiona treść mleadera. 4. Ładujemy skrypt PRZENIESBLOK.lsp Przechodzimy do przestrzeni papieru i wchodzimy w rzutnie. Uruchamiamy skrypt poleceniem PRZENIESBLOKI W wyniku działania bloki zostaną przeniesione do przestrzeni papieru. 5. Uruchamiamy polecenie do ekstrakcji danych - DATAEXTRACTION W wyniku działania zostanie wstawione zestawienie współrzędnych bloków wraz z treścią mleaderów RobS 1 Cytuj
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ą.