Błąd s poleceniu "style"


gruzin

Rekomendowane odpowiedzi

obiektowo mam zrobiona funkcje do tego ale z koleii nie działa ona poprawnie dla czcionek TTF z Zwcadzie 2012 i niżej

;=========================================================================
(defun mh:ACX_MAKE_TextStyle ( STname STfont STheight STwidth STObliqueAngle mode / mh_textstyles newtextstyle) ;tworzy nowy styl textu
;=========================================================================
; mh:ACX_MAKE_TextStyle - tworzy nowy styl textu i zwraca jako VLA-object
;=========================================================================
; (mh:ACX_MAKE_TextStyle "IS_SIMPLEX" "simplex.shx" nil 0.7 nil T) - ok
; (mh:ACX_MAKE_TextStyle "IS_Arial" (strcat (getenv "WINDIR") "\\fonts\\" "Arial.ttf") nil 0.8 nil T) - ok AC, zw DZIWNA CZCIONKA ALE ARIAL, GS przyjmuje ale czcionka to nie arial
;=========================================================================
; STname          [string]        - nazwa stylu tekstu
; STfont          [string]        - czcionka stylu tekstu
; STheight        [integer / nil] - wysokośc czcionki w stylu tekstu
; STwidth         [real / nil]    - szerokosc stylu tekstu
; STObliqueAngle  [° / nil]       - kąt obrotu czcionki w stylu tekstu
; mode            [T / nil]       - ustawia/NieUstawia stylu jako aktualny
;=========================================================================
(setq mh_textstyles (vla-get-textstyles (mh:ACX_ActivDocument)))
    (if (null (tblsearch "Style" STname))
        (progn
            (setq newtextstyle (vla-add mh_textstyles STname))
            (vla-put-fontfile newtextstyle STfont);;;;;;;;;;;;;;;;;;;;;;;;
         
            (if STheight
                (vla-put-Height newtextstyle STheight)
            )
            (if STwidth
                (vla-put-width newtextstyle STwidth)
            )
            (if STObliqueAngle
                (vla-put-ObliqueAngle newtextstyle (mh:CON_deg2rad STObliqueAngle nil))
            )
            (if mode
                (vla-put-activetextstyle (mh:ACX_ActivDocument) newtextstyle)
            )
        );progn
        (progn
            (setq newtextstyle (vla-item mh_textstyles STname))
            (if mode
                (vla-put-activetextstyle (mh:ACX_ActivDocument) newtextstyle)
            )
        )
    );if
    newtextstyle
      
)
Odnośnik do komentarza
Udostępnij na innych stronach

Ja to zrobiłem trochę inaczej:

(vl-load-com)

(defun SetFont (NazwaStylu NazwaCzcionki / Styl)
;----------------------------------------------------------
; funkcja ustawia czcionkę dla wybranego stylu tekstu
; Argumenty: NazwaStylu i NazwaCzcionki jaka ma być nadana. Oba parametry jako String
; Wynik:	Objekt wybrany Styl tekstu
;----------------------------------------------------------
;	(SetFont "Standard" "Times New Roman")
	(setq *StyleTekstu* (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object) ) ))
	(setq Styl (vla-item *StyleTekstu* NazwaStylu))
	(vlax-invoke-method Styl 'SetFont NazwaCzcionki :vlax-false :vlax-false 1 1 )
	Styl
)

Sprawdziłem na 2012, 2012+  i 2014+ i działa na wszystkich tych wersjach.

Dla stabilności działania należałoby jeszcze sprawdzić czy istnieje styl tekstu podany jako parametr, ale to już inna sprawa.

Odnośnik do komentarza
Udostępnij na innych stronach

Pierwszy parametr określa czy czcionka ma być pogrubiona

Drugi czy ma być pochylona

Trzeci to standard kodowania czyli to co wyświetla się w oknie stylów tekstu jako Język. W samej czcionce można wyszczególnić jakie standardy są przez nią obsługiwane.

Ostatni parametr "określa rozmiar i grupę czcionki". Mogę się mylić, ale podejrzewam, że chodzi tu np o to czy znaki w czcionce mają mieć stałą czy zmienną szerokość być może inne parametry również można tu określać, ale nie udało mi się jeszcze odnaleźć bardziej szczegółowego ich opisu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.