Skorowidz obiektów MLEADER


Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

image.gif

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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)

 

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Edited by RobS
Link to comment
Share on other sites

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)
)
Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...