_

Jak pobrać oryginalny handle z xrefa?

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

Jak pobrać oryginalny handle z xrefa?

Postprzez badziewiak » kwi 29, 2019 17:49

Witam
Proszę pobrać sobie załącznik, rozpakować do jakiegoś podkatalogu i otworzyć plik 1.dwg.
Próbuję dokonać następującej rzeczy: Chcę programowo otworzyć powyższy rysunek, przeładować xrefy i przeglądać wszystkie podłączone doń pliki (dwg, pdf i jpg). Nie jest to żaden problem. Podczas przeglądania xrefów widocznych w 1.dwg chcę pobrać handle wszystkich zagnieżdżonych xrefów, czyli mając otwarty 1.dwg chciałbym pobrać handle 3.dwg i inne. Też niby żaden problem. Pobieram z bloku def. xrefa XrefDatabase i jazda zdawałoby się.
Jest jednak problem. Przeglądając powyższe XrefDatabase rysunku przykładowo 2.dwg mogę pobrać handle, ale to handle jest dokładnie takie samo, jak handle 3.dwg na rysunku 1.dwg. Ja chcę pobrać handle 3.dwg takie, jakbym otworzył plik 2.dwg.
Po co mi to? Po to, że mając otwarty jeden rysunek z odnośnikami zagnieżdżonymi, chcę rekurencyjnie odtworzyć strukturę xrefów i modyfikować je już z poziomu otwartego właściciela xrefa zagnieżdżonego, czyli z poziomu rys. 2.dwg.
Upraszczając: Mam otwarty 1.dwg widzę 3.dwg i chcę, żeby jego handle był taki jak w rys. 2.dwg a nie w rys. 1.dwg.
Potraficie tak? Ja chwilowo nie...

ArxDbg może Wam nieco rozjaśnić sytuację: http://otb.manusoft.com/2009/09/arxdbg-utility.htm

Poniżej wyniki debugowania moich kodów:
sciezkaXrefDatabase to ścieżka Database pobranej ze wstawionego xrefa 2.dwg, podczas gdy jest otwarty rys. 1.dwg.
Kod: Zaznacz cały
sciezkaXrefDatabase = "D:\\QsyncWinTest\\RysunkiTestoweZzagniezdzonymiXrefami\\2.dwg"
sciezkaXrefa = "D:\\QsyncWinTest\\RysunkiTestoweZzagniezdzonymiXrefami\\3.dwg"
handleXrefa.dwg = {86D}

Powyższy handle jest identyczny jak w 1.dwg, a w samym bezpośrednio otwartym w autocadzie rysunku 2.dwg handle xrefa 3.dwg jest inny: 8F4.
Załączniki
test.zip
(159.57 KiB) Pobrane 129 razy
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2372
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Re: Jak pobrać oryginalny handle z xrefa?

Postprzez kojacek » kwi 29, 2019 21:25

badziewiak napisał(a):Witam (...)

1. Uchwyt jest niezmienny dopóki istnieje. Jest unikalny w obrębie jednego dokumentu (rysunku).
2. Uchwyt jest ważny (tylko) w źródłowym rysunku - tam gdzie został utworzony.
3. Dla wczytanego XRefa-a (czyli INSERT w ogólności) handle jest unikalny dla niego właśnie, bo jest elementem aktualnego rysunku. Ale już dla jego elementów (czyli obiektów definicji bloku) jest widoczny z jego źródła - przez co może być (np. w przeglądarce obiektów) powtórzony. Jako taki nie jest częścią aktualnego rysunku zatem nie tworzy konfliktu.
4. Innymi słowy (do 2 i 3) - możesz mieć w rysunku "A", 10 Xref-ów, a w każdym z nich obiekt (każdy inny) o handle np. "666" (co możesz widzieć przeglądając bazę danych), ale nie uzyskasz w aktualnym rysunku dostępu do żadnego z nich, tak długo póki nie stanie się on częścią aktualnego rysunku (np. przez ustalenie Xref-a, czy jego rozbicie). Wtedy i tak otrzyma on (a właściwie jego kopia) unikalny uchwyt.
5. Raz użyty (i wymazany) uchwyt (w rysunku), nigdy się (w nim) nie powtórzy dla nowego obiektu.
6. Wielokrotne wczytywanie i usuwanie tego samego XRefa-a, powoduje przypisanie mu (w aktualnym rysunku) innego unikalnego uchwytu.
7. Nie idź tą drogą. Patrz 2...
Avatar użytkownika
kojacek
 
Posty: 5553
Dołączył(a): paź 03, 2005 20:17

Re: Jak pobrać oryginalny handle z xrefa?

Postprzez badziewiak » kwi 29, 2019 22:20

Ten uchwyt jest mi potrzebny tylko na czas sesji rysunku. Generalnie tego się obawiałem - nie da się tego osiągnąć.
Ad. 6: Masz na myśli odłącz/wczytaj, bo usuń/wczytaj ponownie nie powinno zmieniać handle.
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2372
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Re: Jak pobrać oryginalny handle z xrefa?

Postprzez ziele_o2k » kwi 30, 2019 07:38

Tak przy okazji, wicie czy ArxDbg jest skompilowane pod 2020? W przyszłym tygodniu planuję się przerzucić na nowe lepsze :) a bez tego to jak bez ręki.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 806
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: Jak pobrać oryginalny handle z xrefa?

Postprzez badziewiak » kwi 30, 2019 18:47

kojacek napisał(a):
badziewiak napisał(a):Witam (...)

1. Uchwyt jest niezmienny dopóki istnieje. Jest unikalny w obrębie jednego dokumentu (rysunku).
2. Uchwyt jest ważny (tylko) w źródłowym rysunku - tam gdzie został utworzony.
(...)
7. Nie idź tą drogą. Patrz 2...

Masz rację, ta droga była niewłaściwa. Poszedłem inną, odrobinę naokoło. Zamiast zapamiętywać w strukturze danych programu Handle xrefa, zapamiętałem jego nazwę widoczną w drzewku xrefów. Jest ona zapamiętywana w stosownym Dictionary. Handle uzyskałem odpytując dictionary, zapodając mu tę nazwę, ale już we właściwym rysunku.
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2372
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników