Rekomendowane odpowiedzi

Opublikowano

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

Opublikowano

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?

Opublikowano

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

Opublikowano

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)

Opublikowano

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

Opublikowano

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

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