Bloki (dynamiczne)


Harry

Rekomendowane odpowiedzi

Witam

Używam ostatnio wersji classic i w pewnych momentach zaczyna mnie rozsadzać ...

Wszystkie wcześniejsze wersje (2012+, 2015+) działały bardzo dobrze i bardzo fajnie.

Natomiast wersja Classic :

!! rozwala bloki, w szczególności dynamiczne. Ale to, że nie można zmieniać ich atrybutu to nic. zmienia ich nazwy losowo, stosując oznaczenia typu 0$.. lub *U....

Wystarczy otworzyć rysunek zawierający pewne bloki - zmienia ich nazwę i właściwości. Powoduje to gigantyczne kłopoty i problemy.

Np. w zliczaniu elementów (wyciąganie atrybutów, szybki wybór).

Czy tylko ja mam z tym problem ?

Czy jest na to jakaś metoda ?

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

 

chciałbym nieco się upewnić czy dobrze zrozumiałem posta.

 

Faktem jest ZWCAD Classic nie obsługuje bloków dynamicznych.

 

Problemem jest jak sądzę, że w rysunku nie mogą istnieć dwa bloki (lub więcej) o tej samej nazwie, ale o różnych definicjach.

W ZWCAD+ po utworzeniu kilku kopii bloku dynamicznego i zmianie wymiarów bloku, powstaje blok o nazwie *Ux, gdzie x to kolejny numer.

Program nazywa tak bloki dla rozróżnienia, ale głębiej w definicji są zamieszczone inne dane np. źródłowa nazwa bloku.

 

Przykład

Załóżmy, że blok nazywa się "Drzwi". Jeśli utworzymy jego 2 kopie, to nic się z nazwą nie stanie do czasu zmiany wymiarów bloku.

Jeśli zmienimy wymiar bloku, to pojawi się nowy blok o nazwie np.  *U04, jeśli zmienimy kolejny to powstanie blok o nazwie *U05.

 

Te bloki może Pan również zobaczyć w ZWCAD+. Natomiast w pasku właściwości przy wszystkich blokach będzie pojawiała się nazwa "Drzwi", pomimo innych wymiarów bloku.

 

Otwarcie takiego rysunku w Classicu nie powoduje rozbicia bloków.

W pasku właściwości dalej są wyświetlane "Drzwi".

Zapis takiego rysunku w ZWCAD Classic (nie widzi tego jako bloki dynamiczne), zachowuje informacje odnośnie dynamiczności bloków, co sprawdziliśmy otwierając taki rysunek w ZWCAD+.

 

Classic nie rozbija więc bloków, natomiast eksport atrybutów i qselect widzi rzeczywistą nazwę bloków np. *U30.

 

Rozumiem, że Pan chciałby, aby zamiast tego pojawiała się nazwa bloku z paska właściwości?

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

 

chciałbym nieco się upewnić czy dobrze zrozumiałem posta.

 

Faktem jest ZWCAD Classic nie obsługuje bloków dynamicznych.

 

Problemem jest jak sądzę, że w rysunku nie mogą istnieć dwa bloki (lub więcej) o tej samej nazwie, ale o różnych definicjach.

W ZWCAD+ po utworzeniu kilku kopii bloku dynamicznego i zmianie wymiarów bloku, powstaje blok o nazwie *Ux, gdzie x to kolejny numer.

Program nazywa tak bloki dla rozróżnienia, ale głębiej w definicji są zamieszczone inne dane np. źródłowa nazwa bloku.

 

Przykład

Załóżmy, że blok nazywa się "Drzwi". Jeśli utworzymy jego 2 kopie, to nic się z nazwą nie stanie do czasu zmiany wymiarów bloku.

Jeśli zmienimy wymiar bloku, to pojawi się nowy blok o nazwie np.  *U04, jeśli zmienimy kolejny to powstanie blok o nazwie *U05.

 

Te bloki może Pan również zobaczyć w ZWCAD+. Natomiast w pasku właściwości przy wszystkich blokach będzie pojawiała się nazwa "Drzwi", pomimo innych wymiarów bloku.

 

Otwarcie takiego rysunku w Classicu nie powoduje rozbicia bloków.

W pasku właściwości dalej są wyświetlane "Drzwi".

Zapis takiego rysunku w ZWCAD Classic (nie widzi tego jako bloki dynamiczne), zachowuje informacje odnośnie dynamiczności bloków, co sprawdziliśmy otwierając taki rysunek w ZWCAD+.

 

Classic nie rozbija więc bloków, natomiast eksport atrybutów i qselect widzi rzeczywistą nazwę bloków np. *U30.

 

Rozumiem, że Pan chciałby, aby zamiast tego pojawiała się nazwa bloku z paska właściwości?

 

Pozdrawiam

Fakt, przyznaję rację, że może użyłem złego sformułowania, za co przepraszam.

O ograniczeniu odnośnie edycji bloków dynamicznych w wersji clasic byłem świadomy i nie stanowiłi to dla mnie problemu.

 

Nie mniej jednak, w wersji clasicc nie znalazłem możliwości zliczenia ilości tych samych bloków (qselect i eksport atrybutów).

Natomiast w momencie, gdy zapiszę jakiekolwiek zmiany w rysunku w programie ZwCAD classic - to zmieni on nazwy tych bloków na *Uxxx - i uniemożliwi ich zliczenie np. a AutoCadzie.

Mam nadzieję, że w wersji 2017 (na która nie mogę się już doczekać) kwestia ta jest "wyprostowana".

 

Nazywanie kolejnych bloków w sposób *U1, *U2 ... byłoby do zaakceptowania, gdyby w obrębie jednego typu bloku była wartość pozwalająca go łatwo wyodrębnić. Niestety nr są nadawane kolejnym blokom, nie zależnie od ich rodzaju

 

Byłoby bardzo fajnie, gdyby istniała możliwość wyciągnięcia zestawień nazw bloków w wersji classic, i jeśli znacie na to sposób - to bardzo bym prosił o jego opisanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Korzystając z LISP spróbowałem odczytać nazwę bloku dynamicznego którego reprezentacją jest blok * Ux. Wymaga to kilku kroków. Może nie będę zanudzał szczegółami, ale w skrócie powiem, że informacja o  oryginalnym bloku dynamicznym, nie jest zapisana bezpośrednio w bloku Ux, ale w bloku są odwołania do innych miejsc z bazy danych rysunku, przez które trzeba przejść żeby zidentyfikować bazowy blok dynamiczny.
W ZWCAD+ 2015 udaje się to bez problemu, natomiast uruchamiając ten sam program na ZWCAD Classic w pewnym miejscu pojawia się tzw obiekt proxy. W tym przypadku jest to poważny problem, bo żeby móc przetłumaczyć proxy na blok dynamiczny sam ZWCAD musi mieć obsługę tych bloków.
Niestety na chwilę obecną nie daje nam to możliwości odczytania nazwy oryginalnego bloku dynamicznego w ZWCAD Classic.
Natomiast z deklaracji ZWSOFT wynika, że w ZWCAD 2017 obsługa bloków dynamicznych ma być analogiczna jak w ZWCAD+ 2015.

Odnośnik do komentarza
Udostępnij na innych stronach

Zagadnienie (bo nie problem) w AutoCAD, było (na polskim forum CAD) omawiane już wiele lat temu (gdy tylko pojawiły się bloki dynamiczne). Droga jest stosunkowo prosta: Odniesienie (wstawienie) bloku (mające nazwę anonimową) jest dynamicznym blokiem zależnym od nazwanego bloku dynamicznego, po spełnieniu warunków - (1) jego definicja posiada dane dodatkowe aplikacji o nazwie "AcDbBlockRepBTag", oraz (2) zawiera (w tych danych dodatkowych) odniesienie do uchwytu (handle) obiektu, który jest definicją bloku nazwanego.

 

W zestawie funkcji CADPL-Pack, (http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html) zdefiniowana jest funkcja o nazwie cd:BLK_GetDynBlockNames. Zwraca ona listę wszystkich nazw odniesień (bloków anonimowych) zależnych.

Edytowane przez kojacek
Odnośnik do komentarza
Udostępnij na innych stronach

Zagadnienie (bo nie problem) w AutoCAD, było (na polskim forum CAD) omawiane już wiele lat temu (gdy tylko pojawiły się bloki dynamiczne). Droga jest stosunkowo prosta: Odniesienie (wstawienie) bloku (mające nazwę anonimową) jest dynamicznym blokiem zależnym od nazwanego bloku dynamicznego, po spełnieniu warunków - (1) jego definicja posiada dane dodatkowe aplikacji o nazwie "AcDbBlockRepBTag", oraz (2) zawiera (w tych danych dodatkowych) odniesienie do uchwytu (handle) obiektu, który jest definicją bloku nazwanego.

 

W zestawie funkcji CADPL-Pack, (http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html) zdefiniowana jest funkcja o nazwie cd:BLK_GetDynBlockNames. Zwraca ona listę wszystkich nazw odniesień (bloków anonimowych) zależnych.

Dziękuję za wskazówki.

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