Assgarth Opublikowano 4 Lipca 2011 Zgłoś Udostępnij Opublikowano 4 Lipca 2011 Czy tylko u mnie w ten sposób przedstawia listę właściwości obiektu po użyciu funkcji "vlax-dump-object"? Polecenie: (setq b (car(entsel))) Wybierz obiekty: Polecenie: (vlax-dump-object (vlax-ename->vla-object B)) Property values: ; Application (RO) ; Document (RO) ; Parent (RO) ; Handle (RO) ; ObjectID (RO) ; HasExtensionDictionary (RO) ; Color ; EntityName (RO) ; EntityType (RO) ; Layer ; Linetype ; LinetypeScale ; Visible ; Hyperlinks (RO) ; TrueColor ; LineWeight ; Area (RO) ; Length (RO) ; Closed ; Coordinateoordinate (RO) ; Normal ; Thickness ; ConstantWidth ; Elevation ; LinetypeGeneration T Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 5 Lipca 2011 Autor Zgłoś Udostępnij Opublikowano 5 Lipca 2011 Dla przykładu podam jak wygląda taka lista w AutoCAD: Command: (vlax-dump-object (vlax-ename->vla-object (car(entsel)))) Select object: ; IAcadLWPolyline: AutoCAD Lightweight Polyline Interface ; Property values: ; Application (RO) = # ; Area (RO) = 7.5594e+006 ; Closed = -1 ; ConstantWidth = 0.0 ; Coordinate = ...Indexed contents not shown... ; Coordinates = (49465.5 -26139.9 49465.5 -25395.1 51588.8 -25395.1 ... ) ; Document (RO) = # ; Elevation = 0.0 ; Handle (RO) = "3282" ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = # ; Layer = "1" ; Length (RO) = 15351.6 ; Linetype = "ByLayer" ; LinetypeGeneration = 0 ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 2129574096 ; ObjectName (RO) = "AcDbPolyline" ; OwnerID (RO) = 2129546488 ; PlotStyleName = "ByLayer" ; Thickness = 0.0 ; TrueColor = # ; Visible = -1 T Doszukałem się jednak w dokumentacji ZwCAD, że po prostu mają swoją listę i tyle. Aby dalej pobrać jakąś wartość z właściwości obiektu, należy użyć funkcji: vlax-get-property. I teraz pytanie za 100 punktów: dlaczego nie ma możliwości pobrania informacji o typie obiektu??? (vlax-get-property a 'ObjectName) Rozumiem, że nie ma jej w "dump-liście", ale dlaczego? Jak teraz za pomocą VLispa określić typ obiektu wskazanego? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 5 Lipca 2011 Zgłoś Udostępnij Opublikowano 5 Lipca 2011 Witam, niestety sam nie potrafię Panu pomóc. Programiści są nieobecni w tym tygodniu. Postaramy się odpowiedzieć w poniedziałek z rana. Niemniej, gdybym zrozumiał pytanie, to zapytam w ZWSOFT. Chodzi o to, aby za pomocą polecenia vlax-get-property pobrać typ obiektu? Patrząc już zupełnie ze strony laika, to czy w linijce (vlax-get-property a 'ObjectName) nie brakuje zamykające nawiasu? Pzodrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 5 Lipca 2011 Autor Zgłoś Udostępnij Opublikowano 5 Lipca 2011 Już tłumaczę: wstępnie chciałem uzyskać listę parametrów obiektu wraz z jego wartościami za pomocą funkcji "vlax-dump-object". Lista, która wyświetla się w ZwCAD jest... hmmm... po prostu nieprzydatna, bo nie widać wartości, a jedynie nazwy parametrów. Aby zatem uzyskać informację o wartościach tych parametrów, konieczne jest użycie funkcji "vlax-get-property". Jednakże ani w liście "vlax-dump-object", ani za pomocą "vlax-get-property" nie ma informacji o typie obiektu, którego te dane dotyczą. W AutoCAD ta informacja jest pod nazwą ObjectName (RO), która zwraca np. ObjectName (RO) = "AcDbPolyline" Jak zatem w ZwCAD uzyskać informację, za pomocą Visual Lisp'a, jaki obiekt został wskazany, czyli dokładnie to pytanie, które Pan sformułował: Chodzi o to, aby za pomocą polecenia vlax-get-property pobrać typ obiektu? Natomiast: Patrząc już zupełnie ze strony laika, to czy w linijce Kod: (vlax-get-property a 'ObjectName) nie brakuje zamykające nawiasu? formuła jest poprawna i ilość nawiasów jest właściwa, czyli 1 otwierający i 1 zamykający np. (setq vlaobj (vlax-ename->vla-object (car(entsel)))) (vlax-get-property vlaobj 'Color) Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 5 Lipca 2011 Zgłoś Udostępnij Opublikowano 5 Lipca 2011 dodam swoje 5 groszy, chociaż nie pomogę znalazłem gdzieś taką funkcję: (defun C:HaveaDump ( / ent) (vl-load-com) (while (setq ent (entsel)) (vlax-dump-object (vlax-Ename->Vla-Object (car ent)) T) );while (princ) );defun (princ) i w tym kodzie też nie podają sie w ZWCADzie właściwie "properities" (w AC działa dobrze). Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
dmatusz3 Opublikowano 5 Lipca 2011 Zgłoś Udostępnij Opublikowano 5 Lipca 2011 OK, dzięki. Teraz rozumiem. Wyślę to dzisiaj do ZWSOFT. Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 13 Lipca 2011 Autor Zgłoś Udostępnij Opublikowano 13 Lipca 2011 Informuję, że w nowej wersji ZwCAD2011 (kompilacja z dnia 2011.06.30), funkcja "vlax-dump-object" została poprawiona pod względem dodania brakującego parametru "ObjectName". Lista wygląda obecnie tak: (setq vlaObj (vlax-ename->vla-object (car(entsel)))) # (vlax-dump-object vlaObj) Property values: ; Application (RO) ; Document (RO) ; Parent (RO) ; Handle (RO) ; ObjectID (RO) ; HasExtensionDictionary (RO) ; Color ; EntityName (RO) ; ObjectName (RO) ; EntityType (RO) ; Layer ; Linetype ; LinetypeScale ; Visible ; Hyperlinks (RO) ; TrueColor ; LineWeight ; Area (RO) ; Length (RO) ; Closed ; Coordinateoordinate (RO) ; Normal ; Thickness ; ConstantWidth ; Elevation ; LinetypeGeneration T (vla-get-objectname vlaObj) "AcDbLightWeightPolyline" Co prawda szkoda, że nadal nie wyświetlają się wartości tych parametrów, ale zawsze to już jakiś krok do przodu... Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 13 Lipca 2011 Zgłoś Udostępnij Opublikowano 13 Lipca 2011 Zgłosiłem Pańskie pytanie. Po otrzymaniu odpowiedzi zamieszczę ją na forum. W kwestii zidentyfikowania typu elementu można alternatywnie użyć właściwości EntityName. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 18 Lipca 2011 Zgłoś Udostępnij Opublikowano 18 Lipca 2011 Otrzymałem odpowiedź w sprawie tego zgłoszenia. Błąd został potwierdzony, jego numer to T4169. Proszę w przyszłości posługiwać się tym numerem. Ułatwi to weryfikację tematu. Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ą.