CADsite forum

AutoCAD => Autolisp => Topic gestart door: EddyBeerke op ma 18 01 2016, 12:32:07

Titel: Tekst hoogte van een TextStyle opvragen (opgelost)
Bericht door: EddyBeerke op ma 18 01 2016, 12:32:07
Ik ben weer eens bezig met een lisp aan te passen.
Met deze lisp kan ik een tekst plaatsen met een opgegeven tekst.
Maar met sommige textstylen is er een hoogte voorgedefinieerd van de te plaatsen tekst.
In je kunt dat zien in het venster van Text Style (commando: style)
Maar hoe vraag je dat op met Lisp?

Ik moet deze gegevens weten:
Current Style
Height

Titel: Re: Tekst hoogte van een TextStyle opvragen
Bericht door: roy_043 op ma 18 01 2016, 13:20:42
(if
  (zerop
    (setq hoogte
      (cdr (assoc 40 (entget (tblobjname "style" (getvar 'textstyle)))))
    )
  )
  (setq hoogte (getvar 'textsize))
)

Titel: Re: Tekst hoogte van een TextStyle opvragen
Bericht door: EddyBeerke op ma 18 01 2016, 13:22:27
Nou luitjes... ik ben er uit!
Hier is de oplossing:
; Check de current text hight
  (setq OTS (vla-get-activetextstyle (vla-get-activedocument (vlax-get-acad-object)))
          CTH (vla-get-height OTS)
  )

  (if (= 0.0 CTH) ; Text hight is niet fixed
    (command "_.TEXT" "J" "BL" (setq p (getpoint "Geef locatie: ")) (* scalefactor 1.8) (rtd (getangle p "Geef richting: " )) string)
    (command "_.TEXT" "J" "BL" (setq p (getpoint "Geef locatie: "))  (rtd (getangle p "Geef richting: " )) string); fixed text hight
  )


Oplossing komt hier vandaan:
http://www.cadtutor.net/forum/archive/index.php/t-51278.html
Titel: Re: Tekst hoogte van een TextStyle opvragen
Bericht door: EddyBeerke op ma 18 01 2016, 13:24:51
Citaat van: roy_043 op ma 18 01 2016, 13:20:42
(if
  (zerop
    (setq hoogte
      (cdr (assoc 40 (entget (tblobjname "style" (getvar 'textstyle)))))
    )
  )
  (setq hoogte (getvar 'textsize))
)



De variable textsize ben je niets als de fixed hight gedefinieerd is, dit is de laatst gebruikt tekst hoogte.
Maar erg bedankt voor het meedenken!  :vreegoe:
Titel: Re: Tekst hoogte van een TextStyle opvragen (opgelost)
Bericht door: roy_043 op ma 18 01 2016, 16:14:44
Jammer dat je mijn oplossing niet goed getest hebt. Ik garandeer je dat de code werkt. De variabele 'hoogte' krijgt alleen de waarde van de textsize als de textstyle geen vastgelegde hoogte heeft.
Titel: Re: Tekst hoogte van een TextStyle opvragen (opgelost)
Bericht door: EddyBeerke op ma 01 02 2016, 10:21:16
Citaat van: roy_043 op ma 18 01 2016, 16:14:44
Jammer dat je mijn oplossing niet goed getest hebt. Ik garandeer je dat de code werkt. De variabele 'hoogte' krijgt alleen de waarde van de textsize als de textstyle geen vastgelegde hoogte heeft.
CiteerCommand: (defun c:test1 ()(if
((_>   (zerop
(((_>     (setq hoogte
((((_>       (cdr (assoc 40 (entget (tblobjname "style" (getvar 'textstyle)))))
((((_>     )
(((_>   )
((_>   (setq hoogte (getvar 'textsize))
((_> ))

Command:
Command: DT TEXT
Current text style:  "Standard"  Text height:  2.5000  Annotative:  No  Justify:  Left
Specify start point of text or [Justify/Style]:
Specify height <2.5000>:
Specify rotation angle of text <0>:
Command: TEST1
25.3613

Command:
Command: DT
TEXT
Current text style:  "NLCS-ISO-M200-T35"  Text height:  0.700  Annotative:  No  Justify:  Left
Specify start point of text or [Justify/Style]:
Specify rotation angle of text <0.00>:
Command: TEST1
nil

Als iemand iets aan code geeft dan test ik die altijd!
Hiermee ben ik dus niets zoals ik zei...
Voor jou zal het misschien werken maar ik moest dus niet de hoogte van de laatst geplaatste tekst weten maar de hoogte die in de textstyle staat.
Jou lisp geeft wel de gebruikte tekst hoogte ->> 25.3613
Maar niet de hhogte van de textstyle als die groter is dan 0 ->> nil (style hoogte is dus 0.700)
En die heb ik op een andere manier gevonden.

Titel: Re: Tekst hoogte van een TextStyle opvragen (opgelost)
Bericht door: roy_043 op ma 01 02 2016, 10:37:18
Voeg dit toe onderaan mijn code en test opnieuw:
(print hoogte)
Titel: Re: Tekst hoogte van een TextStyle opvragen (opgelost)
Bericht door: bart op di 02 02 2016, 08:40:05
Roy misschien had je even aan moeten geven wat Eddy over het hooft ziet bij je laatste antwoord.

Eddy het is vrij logische dat het resultaat van het stukje code nil is.
er wordt immers niets naar het scherm uitgevoerd of gedaan.
behalve een waarde toegekend aan de variabele hoogte

Om deze waarde zichtbaar te maken moet je de variabele hoogte opvragen
of naar het scherm laten uitvoeren zoals Roy hier boven ook aangeeft.