kody DXF


Michal
 Share

Recommended Posts

Witam,

czy mógłbym prosić o wyjaśnienie grupy kodów DXF 40-48?

w helpie jest informacja, że 40-48 => double precision floating point values (text height, scale factors, and so on)

Ja rozumiem w ten sposób, że kodów jest 9, dwa są rozszyfrowane, a co z pozostałymi?

I mam pytanie nr 2. Czy w informacji o entycji jakieś linii jest podany kąt, czy należy go obliczyć z poszczególnych punktów? Potrzebne mi to jest do dostosowania pochylenia tekstu do danej linii i wydaje mi się że mógłbym to zrobić pobierając wspólną daną entycji dotyczącą kąta nachylenia.

Miłego dnia.

Michał

Link to comment
Share on other sites

Kody DXF są trochę bardziej skomplikowane. Ich znaczenie nie zależy tylko od numerum ale jeszcze od typu obiektu jakiego dotyczy. Np 41 to dla atrybutów skala X, a dla kreskowań to jest skala kreskowania, dla strzałki to szerokość tekstu opisu, dla polilini to szerokosc końca określonego segmentu. A dla stylu wymiaru wielkość strzałki. Więc do wyjaśnienia jaki kod ma jakie znaczenie, proszę o sprecyzowanie jakiego typu obiektu to dotyczy.

Jeśli sie nie mylę, to kąt raczej nie będzie podany w entycji linii, ( nie mam opisanej takiej pozycji w helpie).

Link to comment
Share on other sites

Witam Wszystkich.

Tak przy okazji tematu kody DXF mam pytanie:

- Jak odczytać za pomocą lispa, jakie warstwy znajdują się w rysunku przy założeniu

że na rysunku nie ma nic narysowane, są tylko utworzone warstwy?

- Jak sprawdzić czy w rysunku są bloki o danej nazwie przy takim samym założeniu

jak powyżej.

Od dłuższego czasu nie mogę do tego rozgryźć.

Pozdrawiam Tomasz

Link to comment
Share on other sites

W DXF'ach nie jestem biegły, ale jeśli miałbym używać warstw z lispa, szukałbym sposobu na wykorzystanie funkcji tblnext,

 (tblnext "layer" T) 

gdzie:

- tblnext używane w pętli pobiera kolejne definicje z kolekcji,

- kolekcja to nazwa kolekcji do przeszukiwania,

- ostatni parametr jest opcjonalny i powoduje "przesunięcie wskaźnika na początek" dziwnie to brzmi, ale chodzi o to, że na początku należy wywołać funkcję z tym parametrem (wtedy odczytana zostanie pierwsza wartość), a przy kolejnych wywołaniach nie mozna tego parametru ustawiać, ponieważ zawsze czytałoby pierwszy element.

Ta funkcja zwraca informację w postaci

((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "CONTINUOUS"))

lub nil, na końcu

Dodam jeszcze, że kolekcje dostępne, to: "LAYER", "LTYPE", "VIEW", "STYLE", "BLOCK", "UCS", "APPID", "DIMSTYLE", and "VPORT".

Link to comment
Share on other sites

Pierwszą książkę ściągnąłem sobie z jakiejś strony (nie pamiętam, z jakiej, trzeba poszukać)

jest nią "Autolisp - kurs praktyczny" Marek Dudek, z tego co pamiętam autor udostępnił ją wszystkim chętnym. Jest w formie PDF.

Drugą kupiłem niedawno cudem po cenie "fabrycznej" i jest nią "AutoCAD. LSP i DCL. Programowanie okien dialogowych w przykładach... " Dariusz Frenki

Pozdrawiam Tomasz

Link to comment
Share on other sites

Dzieki Tomku (jesli moge sie tak zwrocic)

Mam kolejne pytanie związane z problemem dotyczącym kodów DXF.

zrobilem lispa z helpa o treści nastepującej:

(entsel)

(setq en1 (entlast))

(setq ed (entget en1))

(setq ed (subst(cons 8 "2") (assoc 8 ed)ed));subst

(entmod ed)

zmienilem w tym lispie cyfre 8 na 50, i tak by dotyczył zmiany kąta pochylenia o 0.15, ale wywala mi bledy:

(entsel)

(setq en1 (entlast))

(setq ed (entget en1))

(setq ed (subst(cons 50 "0.15") (assoc 50 ed)ed));subst

(entmod ed)

ciekawy jestem co robie źle.

Czy moglby mnie Ktoś oświecić ?

pozdrawiam

Link to comment
Share on other sites

Wszystko będzie grało pod warunkiem że zamienisz "0.15" na 0.15

Wartość ma być cyfrą bez ""

(entsel)

(setq en1 (entlast))

(setq ed (entget en1))

(setq ed (subst(cons 50 0.15) (assoc 50 ed)ed));subst

(entmod ed)

bo "2" to nazwa warstwy a nie wartość

Teraz sprawdz.

Pozdrawiam

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share