Rekomendowane odpowiedzi

Mam okrąg w kilku egzemplarzach na rysunku. Gdy modyfikuję jeden dowolny to pozostałe również zmieniają się. Czy jest inny sposób niż przez bloki? Czy zadziałałoby to poprzez użycie "event handle"? 

- utworzyć nod do przechowywania informacji o nazwie np. "my_circle"

- narysowanie okręgu o promieniu r

- dodanie jego ObjectId do my_circle

- kopiowanie okręgu oraz dla każdej kopi dodanie Objectid do tego samego my_circle

- każdy okrąg w xdate będzie zawierał  tekst "my_circle" -> potrzebne do identyfikacji wszystkich okręgów powiązanych z nod o takiej samej nazwie

- każdy okrąg będzie posiadał załadowany event handle do metody analizuj() (handle wrażliwe na modyfikację obiektu)

- a w metodzie analizuj():

    * gdy zostanie wywołane to znak, że obiekt został zmodyfikowany. Zapamiętanie zmienionego obiektu. Pobranie z xdata jego nazwy, przejście do nod -> my_circle i w pętli po wszystkich obiektach odczyt ObjectId -> pobranie każdego rzeczywistego obiektu, usunięcie go i podstawienie w to miejsce zmodyfikowanego okręgu. Jeżeli oczywiście można bezproblemowo użyć zapisu o ObjectId jako string do odszukania na rysunku obiektu okręgu.

Czy jest to dobra droga do rozwiązania problemu? Jeszcze nie pisałem tego, a chciałbym dowiedzieć się czy jest możliwe takie rozwiązanie lub może istnieje lepsze podejście.

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Na C# się nie znam , więc  się wypowiem, co mi zależy :wink:

Teoretycznie powinno to zadziałać.

- Gdyby to był LISP należałoby utworzyć reaktor :vlr-modified który wykonywałby operacje po modyfikacji okręgu. Podejrzewam, że tą rolę w C# pełni nod

16 godzin temu, kaminki napisał:

- kopiowanie okręgu oraz dla każdej kopi dodanie Objectid do tego samego my_circle

- Proszę zwrócić uwagę, żeby ObjectId dodawąć do reaktora nie tylko przy poleceniu _copy, ale też _mirror, _offset, _array, _pasteclip , _copym i wszystkie inne podobne
A może lepiej użyć reaktora na dodanie elementu do bazy danych  w LISP byłoby to coś jak to:

(setq appobjvlr (vlr-acdb-reactor nil '((:vlr-objectAppended . objectAppended))))

 

16 godzin temu, kaminki napisał:

- każdy okrąg w xdate będzie zawierał  tekst "my_circle" -> potrzebne do identyfikacji wszystkich okręgów powiązanych z nod o takiej samej nazwie

Nie jestem pewien, ale może listę elementów podpiętych pod reaktor można pozyskać bezpośrednio z reaktora ( w LISP jest to funkcja vlr-owners) , w takim przypadku nie byłoby potrzeby tworzyć dodatkowej XDaty.

Ciekawy temat. Proszę dać znać czy udało się uzyskać zamierzony efekt .

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się