[AutoLISP] funkcja (getpropertyvalue ...)


Recommended Posts

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?

 

Edited by perlon
Link to comment
Share on other sites

  • 8 months later...

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.

Edited by perlon
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...