Skorowidz obiektów MLEADER


Rekomendowane odpowiedzi

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.

 

Siatka.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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.

 

Odnośnik do komentarza
Udostępnij na innych stronach

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ć?

Odnośnik do komentarza
Udostępnij na innych stronach

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.

 

Siatka2.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

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.

image.jpeg.288b2a17fb918bd7b0bdd8552751cc53.jpeg

Odnośnik do komentarza
Udostępnij na innych stronach

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.

image.gif

 

 

Mamy taki pomysł:

  1. Zrobić LISP, który wstawia blok, który jest punktem.
  2. Blok wstawiamy na początku grotu strzałki.
  3. Blok posiada atrybut, którego wartość jest taka sama jak tekstu mleadera.
  4. Przechodzimy do arkusza. 
  5. Za pomocą polecenia _chspace przenosimy te bloki do przestrzeni papieru.
  6. Tworzymy zestawienie tych bloków za pomocą ekstrakcji danych (_DATAEXTRACTION)

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

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.

image.thumb.gif.17e050ff6b32eda4392bdf5af2821060.gif

(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

Odnośnik do komentarza
Udostępnij na innych stronach

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 przez RobS
Odnośnik do komentarza
Udostępnij na innych stronach

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ł:

  1. Zrobić LISP, który wstawia blok, który jest punktem.
  2. Blok wstawiamy na początku grotu strzałki.
  3. Blok posiada atrybut, którego wartość jest taka sama jak tekstu mleadera.
  4. Przechodzimy do arkusza. 
  5. Za pomocą polecenia _chspace przenosimy te bloki do przestrzeni papieru.
  6. 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)
)
Odnośnik do komentarza
Udostępnij na innych stronach

Podsumuję algorytm.

1. Załóżmy, że posiadamy plik, gdzie odnośniki są w przestrzeni modelu.

image.png

 

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.

image.gif

 

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.

image.gif

 

5. Uruchamiamy polecenie do ekstrakcji danych - DATAEXTRACTION

image.gif

 

W wyniku działania zostanie wstawione zestawienie współrzędnych bloków wraz z treścią mleaderów

image.png

 

Odnośnik do komentarza
Udostępnij na innych stronach

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ą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie