Bloki (dynamiczne)


Harry

Recommended Posts

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 ?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Edited by kojacek
Link to comment
Share on other sites

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.

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