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
(if
(zerop
(setq hoogte
(cdr (assoc 40 (entget (tblobjname "style" (getvar 'textstyle)))))
)
)
(setq hoogte (getvar 'textsize))
)
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
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:
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.
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.
Voeg dit toe onderaan mijn code en test opnieuw:
(print hoogte)
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.