FastFiber

automatisch texthoogte attrib in rechthoek aanpassen OPGELOST

Gestart door delangstevandestraat, wo 29 04 2015, 09:07:28

Vorige topic - Volgende topic

delangstevandestraat

Moeilijke kwestie :

Ik heb een blok met vanalles erin, waaronder een attrib die centraal in een rechthoek staat.
Soms is de text in deze attrib zo lang dat deze te lang is en buiten het rechthoek komt.
Ik heb getracht om de afmeting (ttz texthoogte) van deze attrib automatisch te laten aanpassen...
Ik nam een window die net iets kleiner is dan de rechthoek, als de text hierin valt is het ok,...
Als de ss leeg is dan is de text dus groter dan de window en groter dan de rechthoek, dus dan moet de hoogte aangepast worden...

De logica is er dus wel, echter, het probleem is dat er nooit iets in de window ss zit, want het block (met rechthoek en attrib) is altijd groter dan het window

Heeft er iemand een lumineus idee hoe ik dit zou kunnen verwezenlijken ?

alvast bedankt voor het gebruik van uw grijze massa  :wink:
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

H@rm

Je kunt de breedte van 1 letter bepalen bij een bepaalde teksthoogte. = B
Vervolgens kun je het aantal letters van je tekst bepalen. = N
Vervolgens kun je de vrije ruimte bepalen. = T

Dan wordt de lengte van je rechthoek ((B*N)+2*T)*scale
Dan wordt de hoogte van je rechthoek (H+(2*T))*scale
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

roy_043

Om de afmetingen van attributen te bepalen kun je gebruikmaken van de functies vla-getboundingbox en textbox.

delangstevandestraat

#3
@harm  : niet alle letter/tekens zijn even breed dus berekenen zal niet lukken denk ik

@roy : heb je daar wat meer uitleg over wat dat juist doet ?
of misschien een simpel stukje voorbeeldcode ?
ik zal alvast ook eens zoeken wat ik vind want textbox, hoe is de syntax daarvan?
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

roy_043

; Voor horizontale tekst:
(setq box ; formaat: ((X Y) (X Y))
  (textbox
    (list
      (cons 40 height)
      (cons 1 text)
      (cons 7 style)
    )
  )
)

delangstevandestraat

Roy bedankt,

Ik snap het :
de box die gecreëerd werd kwam niet overeen met de text omwille van de width
dus heb ook de textwidth er bijgevoegd,

ik heb onderstaande code gebruikt omdat alles eigenlijk al geweten is vanuit de tekening...

(textbox (list (assoc 40 ent) (assoc 1 ent) (assoc 7 ent) (assoc 41 ent)))
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

FastFiber