Rekomendowane odpowiedzi

Opublikowano (edytowane)

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
  • 8 miesięcy temu...
Opublikowano

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?

Opublikowano (edytowane)

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

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się