daniel5 napisał(a):Dzień dobry
W danych dodatkowych XDATA jest kod 1011 w którym zapisywany jest punkt współrzędnych. Jest on przesuwalny, skalowalny etc. Opisane jest to dobrze w tym poście
http://forum.cad.pl/wiczenie-lisp-xdata-extended-data-t74952-10.htmlProblemem jest ograniczenie xdata co do ilości danych . Powyżej 500 punktów xdata nie przyjmie. Więc utworzyłem słownik i zapisałem xrecord punkty. Tylko że nie mogę zapisać punków z kodem 1011 bo wywalali błąd o nie prawidłowych danych
dxf. Natomiast jeśli zapiszę pod innym akceptowalnym kodem np. 10 lub 11 to punkty nie są przesuwalne. Przykład danych poniżej
- Kod: Zaznacz cały
((10 1804.74 1647.41 0.0) (10 1704.74 1647.41 0.0) (10 1804.74 1627.41 0.0) (10 1704.74 1627.41 0.0) (10 1804.74 1607.41 0.0) (10 1704.74 1607.41 0.0) (10 1804.74 1587.41 0.0) (10 1704.74 1587.41 0.0) (10 1804.74 1567.41 0.0) (10 1704.74 1567.41 0.0))
Ma ktoś pomysł jak to obejść?
Obawiam się że w ten sposób nie da się tego zrobić. Słowniki (w tym Extension Dictionary obiektu) oraz XRECORD, są obiektami niegraficznymi. Stąd z natury swej nie podlegają przekształceniom typu skalowanie, przesunięcie, odbijanie lustrzane. Zatem XDATA do nich dodane, nie podlegają takim zmianom. Pytanie - do czego potrzebne jest Ci więcej niż 500 punktów w Xdata jednego obiektu? Bo jeśli te dane mają być później zawsze odczytywane przez aplikację, można taki machanizm uprościć. Na przykład tak:
- jest obiekt np. polinia. Ma przypisane dane xdata, Te xdata to np. 2-3 punkty (jakieś dwie / trzy bazy DXF 1011) + współczynnik skali (DXF 1042) + odleglość DXF 1041
- jednocześnie ma zapisany ExtensionDict, w nim jakiś własny słownik, a w nim jux XRECORD z danymi
- ponieważ XRECORD nie ma ograniczeń - może mieć zapisane np. 70 milionów (credit : sasin) punktów i inne dane (odleglości, kąty itp). Ważne tylko aby były w relacji do punktów bazowych w xdata.
Teraz - po skalowaniu / przesunięciu / obrocie / odbiciu obiektu automatycznej transformacji ulegają dane w xdata, (a te w XRECORD nie). Ale wystarczy je tylko pobrać i poddać przekształceniom takim jakim uległy dane xdata. Cały ten mechanizm - tutaj jako pomysł - można oczywiście mniej lub bardziej skomplikować, w zależności od potrzeb.