[LISP] ssget


Rekomendowane odpowiedzi

Witam,

chcę utworzyć grupę obiektów z zadanym filtrem:

(ssget '((-4 . "")(-4 . "")(-4 . "AND>")))

problem w tym, że ni cholerę to działa.

W HELP dla ZwCAD istnieją tylko takie możliwości:

Operator Meaning

"&" Bitwise AND (integers only).

"&=" Bitwise masked equals (integers only).

"*" All.

"=" Equals.

"!=" Not equal to.

"/=" Not equal to.

"<>" Not equal to.

"<" Less than.

"<=" Less than or equal to.

">" Greater than.

">=" Greater than or equal to.

ale najlepsze jest to, że sam zapis w postaci:

(setq lstObj (ssget '((-4 . ""))))

działa bez problemu - zatem postać "

Jak zatem uzyskać filtr, który potrzebuję - czy traktować to jako bug ZwCAD?

Odnośnik do komentarza
Udostępnij na innych stronach

Dokopałem się jeszcze do takiej dokumentacji z HELP:

Use logical operator in filter list

The logical operators used in filter list must appear in pair, same as the logical functions provided by AutoLISP, the operators of each logical operator group must be the expression whose return value is True or False in the filter list. The logical operators can be used in filter list include "", "or>", "xor>" and "not>". If there is not the specified logical operator in the filter list, all the elements in the list should be tested by the operators "". The above logical operators can't be used in filter list unless constructing its string form and dxf code -4 to dotted pair. Executing the following sample code to add the line entities and circle entities in the entire drawing database to the selection set:

command : (ssget "X" '((-4 . "")))

User can also use logical operators in the filter list to add the entity which contains any one of the two application names (“ZWCAD_ELEC” or “ZWCAD_MECH”) to the selection set. Please refer to following code:

command : (ssget "X" '((0 . "LINE") (-4 . "")))

Zatem wynika, że mój kod jest prawidłowy, a nie działa...

Odnośnik do komentarza
Udostępnij na innych stronach

Dorzucam plik w załączniku.

Mój filtr powinien wyłapać tylko białe linie.

W AC działa bez problemu.

Poleceniem:

(entget(car(entsel)) '("*"))

można sprawdzić, że różowe linie posiadają XDATA:

(-3 ("tmpLine" (1002 . "{") (1000 . "tmpLine") (1002 . "}")

Sprawdziłem też pod ZwCAD2011:

_VERNUM = "2011.06.30(16923)"

i problem również występuje.

pozdrawiam,

ZK

test.dwg

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

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