[AutoLISP] funkcja (getpropertyvalue ...)


Rekomendowane odpowiedzi

Witam.

Po lekturze ostatniego wpisu Kojacka na jego blogu chciałem sprawdzić działanie c:dim-sf na ZwCAD, który krzyknął że nie zna takiej funkcji jak w temacie.

Czy jest w ZwCAD jakiś odpowiednik lispowiej funkcji (getpropertyvalue). To samo dotyczy funkcji setpropertyvalue, dumpallproperties i ispropertyreadonly. Ewentualnie czy są plany ich wprowadzenia?

 

Edytowane przez perlon
Odnośnik do komentarza
Udostępnij na innych stronach

  • 8 miesięcy temu...

Tak, sprawdziliśmy przed chwilą informacje odnośnie tej funkcji.

Niestety w najbliższym czasie nie ma planu ich wprowadzenia.

Czy ta funkcja jest potrzeba do "wizualnej kontroli ustawień skali", czy do czegoś innego?

Może bylibyśmy w stanie pomóc jakoś inaczej?

Odnośnik do komentarza
Udostępnij na innych stronach

Kol. Kojacek prezentował kilka lispów dot. wymiarów. Między innymi

https://kojacek.wordpress.com/2019/02/17/o-dimscale/comment-page-1/?unapproved=652&moderation-hash=f14d723e1826eb2f92424a6b02c589ef#comment-652

gdzie używa funkcji getpropertyvalue. Zresztą do odczytu różnych właściwości.  Konkretnie chodziło o właściwość DimScale ze stylu wymiarowania odczytywana w taki sposób :

  (getpropertyvalue
    (tblobjname "DIMSTYLE" (cdr (assoc 3 (entget Ent))))
    "DimScale"
  )

Próbowałem do zastosować w ZwCAD'zie. Zamieniłem tą linijkę na odczyt kodu DXF

(cdr (assoc 40 (entget (tblobjname "DIMSTYLE" (cdr (assoc 3 (entget Ent)))))))

Wydaje się jednak, że getpropertyvalue jest bardziej eleganckie i lepiej się to czyta. Ustawianie właściwości za pomocą setpropertyvalu jest również szybsze niż sklejanie kodów DXF w entmod'zie. 

Można też stosować (vlax-get-property ...) i (vlax-put-property ...) ale w tym konkretnym przypadku vlax-get-property nie zwracała w ogóle właściwości DimScale stylu wymiarowania.

Na marginesie funkcja vlax-dump-object wywołana dla wymiaru zwraca taką listę:

; Property values:
;   AltRoundDistance = 0.0
;   AltSuppressLeadingZeros = 0
;   AltSuppressTrailingZeros = 0
[...]
;   DimLineInside = 0
;   DimTxtDirection = 
;   Document (RO) = #<VLA-OBJECT  IZcadDocument 1cbd6b48>
;   EntityName (RO) = "AcDbRotatedDimension"
;   EntityTransparency = 
[...]
;   TrueColor = #<VLA-OBJECT  IZcadZcCmColor 1cbc86c0>
;   UnitsFormat = 2
;   VerticalTextPosition = 1
;   Visible = -1

W szczególności właściwość DimTxtDirection jest na liście, ale nie da się jej odczytać funkcją vlax-get-property podobnie jak jeszcze kilka innych. Tak jakby była definicja ale nie było gettera i settera dostępowego.

Edytowane przez perlon
Odnośnik do komentarza
Udostępnij na innych stronach

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